import Retell from 'retell-sdk';const client = new Retell({ apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted});const conversationFlowResponse = await client.conversationFlow.create({ nodes: [ { id: 'start', instruction: { text: 'Greet the customer and ask how you can help them.', type: 'prompt' }, type: 'conversation', }, ], start_speaker: 'agent',});console.log(conversationFlowResponse.conversation_flow_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
)
conversation_flow_response = client.conversation_flow.create(
nodes=[{
"id": "start",
"instruction": {
"text": "Greet the customer and ask how you can help them.",
"type": "prompt",
},
"type": "conversation",
}],
start_speaker="agent",
)
print(conversation_flow_response.conversation_flow_id)
Create a new Conversation Flow that can be attached to an agent. This is used to generate response output for the agent.
POST
/
create-conversation-flow
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 conversationFlowResponse = await client.conversationFlow.create({ nodes: [ { id: 'start', instruction: { text: 'Greet the customer and ask how you can help them.', type: 'prompt' }, type: 'conversation', }, ], start_speaker: 'agent',});console.log(conversationFlowResponse.conversation_flow_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
)
conversation_flow_response = client.conversation_flow.create(
nodes=[{
"id": "start",
"instruction": {
"text": "Greet the customer and ask how you can help them.",
"type": "prompt",
},
"type": "conversation",
}],
start_speaker="agent",
)
print(conversation_flow_response.conversation_flow_id)
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.
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.
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.
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.
[ { "id": "start", "type": "conversation", "instruction": { "type": "prompt", "text": "Greet the customer and ask how you can help them." }, "edges": [ { "id": "edge_1", "transition_condition": { "type": "prompt", "prompt": "Customer wants to book appointment" }, "destination_node_id": "book_appointment" } ] } ]
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":false},"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":"6ae2c878f2d25a43933f6789","collectionId":"61398655-76ed-4803-ad49-82ff95b4ee3e","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae2c878f2d25a43933f6789"},"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":"6ae2c9c24a12cf37bbdac1ea","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Guides","count":208},{"language":"default","tag":"API Reference","count":107},{"language":"default","tag":"Build","count":67},{"language":"default","tag":"Deploy","count":30},{"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"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":"workos-enabled","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/create-conversation-flow","slug":"/api-references/create-conversation-flow","pageMetadata":{"title":"Create Conversation Flow","openapi":"openapi-final post /create-conversation-flow","description":"Create a new Conversation Flow that can be attached to an agent. This is used to generate response output for the agent.","href":"/api-references/create-conversation-flow"},"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: \"Create a new Conversation Flow that can be attached to an agent. This is used to generate response output for the agent.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=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":"Create Conversation Flow","openapi":"openapi-final post /create-conversation-flow","description":"Create a new Conversation Flow that can be attached to an agent. This is used to generate response output for the agent.","href":"/api-references/create-conversation-flow"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/retellai/e3fe5c9b64f9e274/scroll-play-videos.js"],"openApiReferenceData":{"operation":{"description":"Create a new Conversation Flow that can be attached to an agent. This is used to generate response output for the agent.","operationId":"createConversationFlow","requestBody":"35d13483-ed92-4bce-b2f4-9c889c63c0fe","responses":{"201":"07cfa96d-6660-4ac8-a8f9-736fd35cbf22","400":"165bc92d-e96d-4710-b2e3-99b0629728f5","401":"6046d835-b555-4359-9f6f-5a18d22e8a69","422":"0b1cffc7-2220-4b36-b845-99130d3547d3","429":"6f4adad0-00c6-431e-af13-efd96e76ac7e","500":"16ece699-1ba0-460a-967e-8316b207a417"},"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 conversationFlowResponse = await client.conversationFlow.create({\n nodes: [\n {\n id: 'start',\n instruction: { text: 'Greet the customer and ask how you can help them.', type: 'prompt' },\n type: 'conversation',\n },\n ],\n start_speaker: 'agent',\n});\n\nconsole.log(conversationFlowResponse.conversation_flow_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)\nconversation_flow_response = client.conversation_flow.create(\n nodes=[{\n \"id\": \"start\",\n \"instruction\": {\n \"text\": \"Greet the customer and ask how you can help them.\",\n \"type\": \"prompt\",\n },\n \"type\": \"conversation\",\n }],\n start_speaker=\"agent\",\n)\nprint(conversation_flow_response.conversation_flow_id)"}],"method":"post","type":"path","servers":["4cbab741-77d0-4a95-9fbb-1de0afb81ba3"],"security":["716b9be9-5a10-4a07-85ef-ccb091933a6d"],"path":"/create-conversation-flow","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 conversationFlowResponse = await client.conversationFlow.create({\n nodes: [\n {\n id: 'start',\n instruction: { text: 'Greet the customer and ask how you can help them.', type: 'prompt' },\n type: 'conversation',\n },\n ],\n start_speaker: 'agent',\n});\n\nconsole.log(conversationFlowResponse.conversation_flow_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)\nconversation_flow_response = client.conversation_flow.create(\n nodes=[{\n \"id\": \"start\",\n \"instruction\": {\n \"text\": \"Greet the customer and ask how you can help them.\",\n \"type\": \"prompt\",\n },\n \"type\": \"conversation\",\n }],\n start_speaker=\"agent\",\n)\nprint(conversation_flow_response.conversation_flow_id)"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Override properties for conversation flow configuration in agent override requests.","required":["start_speaker","nodes"],"properties":{"start_speaker":{"type":"string","enum":["user","agent"],"example":"agent","description":"Who starts the conversation - user or agent.","isRequired":true,"uniqueKey":"start_speaker","typeLabel":"enum\u003cstring>"},"nodes":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.id","typeLabel":"string"},"type":{"type":"string","enum":["conversation"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.0.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.1.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.0.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.0.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.0.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.0.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.0.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":"nodes.items.[INDEX].oneOf.0.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_choice.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":"nodes.items.[INDEX].oneOf.0.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.0.model_choice.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":"nodes.items.[INDEX].oneOf.0.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_choice","typeLabel":"object"},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.0.interruption_sensitivity.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.0.interruption_sensitivity.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.interruption_sensitivity","typeLabel":"number | null"},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.0.responsiveness.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.0.responsiveness.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.responsiveness","typeLabel":"number | null"},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2,"uniqueKey":"nodes.items.[INDEX].oneOf.0.voice_speed.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0.5,"maximum":2,"uniqueKey":"nodes.items.[INDEX].oneOf.0.voice_speed.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.voice_speed","typeLabel":"number | null"},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption","typeLabel":"boolean | null"},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_trigger_ms.oneOf.0","typeLabel":"number"},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_trigger_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_trigger_ms","typeLabel":"number | null"},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_max_count.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_max_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_max_count","typeLabel":"integer | null"},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"nodes.items.[INDEX].oneOf.0.stt_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"nodes.items.[INDEX].oneOf.0.stt_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.stt_mode","typeLabel":"enum\u003cstring> | null"},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is custom.","properties":{"provider":{"type":"string","description":"The STT provider to use.","enum":["azure","deepgram","soniox","assemblyai","muse"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.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, and 100 for Muse. Muse detects turn ends itself and ignores this value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.0.endpointing_ms","typeLabel":"integer"}},"required":["provider","endpointing_ms"],"uniqueKey":"nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"],"uniqueKey":"nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.custom_stt_config","typeLabel":"object | null"},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.0.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.boosted_keywords","typeLabel":"string[] | null"},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge","typeLabel":"object"},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled.","uniqueKey":"nodes.items.[INDEX].oneOf.0.skippable","typeLabel":"boolean"},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge","typeLabel":"object"},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the conversation should be.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples","typeLabel":"object[]"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.0.knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"nodes.items.[INDEX].oneOf.0.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":"nodes.items.[INDEX].oneOf.0.knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.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":"nodes.items.[INDEX].oneOf.0.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":"nodes.items.[INDEX].oneOf.0.kb_config.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction.","uniqueKey":"nodes.items.[INDEX].oneOf.0.kb_config","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.id","typeLabel":"string"},"type":{"type":"string","enum":["subagent"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.instruction.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.instruction.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.1.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.1.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.1.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.1.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.1.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":"nodes.items.[INDEX].oneOf.1.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_choice.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":"nodes.items.[INDEX].oneOf.1.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.1.model_choice.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":"nodes.items.[INDEX].oneOf.1.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_choice","typeLabel":"object"},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.1.interruption_sensitivity.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.1.interruption_sensitivity.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.interruption_sensitivity","typeLabel":"number | null"},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.1.responsiveness.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.1.responsiveness.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.responsiveness","typeLabel":"number | null"},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2,"uniqueKey":"nodes.items.[INDEX].oneOf.1.voice_speed.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0.5,"maximum":2,"uniqueKey":"nodes.items.[INDEX].oneOf.1.voice_speed.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.voice_speed","typeLabel":"number | null"},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption","typeLabel":"boolean | null"},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_trigger_ms.oneOf.0","typeLabel":"number"},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_trigger_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_trigger_ms","typeLabel":"number | null"},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_max_count.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_max_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_max_count","typeLabel":"integer | null"},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"nodes.items.[INDEX].oneOf.1.stt_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"nodes.items.[INDEX].oneOf.1.stt_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.stt_mode","typeLabel":"enum\u003cstring> | null"},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is custom.","properties":{"provider":{"type":"string","description":"The STT provider to use.","enum":["azure","deepgram","soniox","assemblyai","muse"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.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, and 100 for Muse. Muse detects turn ends itself and ignores this value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.0.endpointing_ms","typeLabel":"integer"}},"required":["provider","endpointing_ms"],"uniqueKey":"nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"],"uniqueKey":"nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.custom_stt_config","typeLabel":"object | null"},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.0.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.boosted_keywords","typeLabel":"string[] | null"},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge","typeLabel":"object"},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled.","uniqueKey":"nodes.items.[INDEX].oneOf.1.skippable","typeLabel":"boolean"},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge","typeLabel":"object"},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the conversation should be.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples","typeLabel":"object[]"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.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":"nodes.items.[INDEX].oneOf.1.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":"nodes.items.[INDEX].oneOf.1.kb_config.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction.","uniqueKey":"nodes.items.[INDEX].oneOf.1.kb_config","typeLabel":"object"},"tool_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.tool_ids","typeLabel":"string[] | null"},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.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 transitions). 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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. Only applicable when speak_during_execution is true.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.name","typeLabel":"string"},"transfer_destination":{"type":"any","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.transfer_destination","typeLabel":"any"},"transfer_option":{"type":"any","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.transfer_option","typeLabel":"any"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.description","typeLabel":"string"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.ignore_e164_validation","typeLabel":"boolean"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.custom_sip_headers.additionalProperties","typeLabel":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. Only applicable when speak_during_execution is true.","uniqueKey":"nodes.items.[INDEX].oneOf.1.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.name","typeLabel":"string"},"type":{"type":"string","enum":["agent_swap"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.agent_id","typeLabel":"string"},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.post_call_analysis_setting","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.description","typeLabel":"string"},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.agent_version","typeLabel":"any"},"speak_during_execution":{"type":"boolean","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap.","uniqueKey":"nodes.items.[INDEX].oneOf.1.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.execution_message_type","typeLabel":"enum\u003cstring>"},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.webhook_setting","typeLabel":"enum\u003cstring>"},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.keep_current_voice","typeLabel":"boolean"},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.keep_current_language","typeLabel":"boolean"},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.use_swap_agent_max_duration","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.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 transitions). 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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.description","typeLabel":"string"},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive).","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.delay_ms","typeLabel":"integer"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.name","typeLabel":"string"},"type":{"type":"string","enum":["send_sms"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"sms_content":{"type":"any","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_content","typeLabel":"any"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.execution_message_type","typeLabel":"enum\u003cstring>"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_sender","typeLabel":"any"},"sms_destination":{"type":"any","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_destination","typeLabel":"any"},"speak_after_execution":{"type":"boolean","default":true,"description":"Whether the agent should speak after the SMS tool finishes execution.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.speak_after_execution","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["type","name","url"],"properties":{"type":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.url","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.description","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.method","typeLabel":"enum\u003cstring>"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.query_params.additionalProperties","typeLabel":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.parameters.properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.parameters.\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["type","name","code"],"properties":{"type":{"type":"string","enum":["code"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.name","typeLabel":"string"},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.code","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.description","typeLabel":"string"},"variables":{"type":"array","items":{"type":"any","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.variables.items.[INDEX]","typeLabel":"any"},"description":"The variables to be extracted.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.variables","typeLabel":"any[]"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.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 transitions). 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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.description","typeLabel":"string"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.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 transitions). 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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.description","typeLabel":"string"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the MCP tool.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the MCP tool.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.description","typeLabel":"string"},"mcp_id":{"type":"string","description":"Unique id of the MCP.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.mcp_id","typeLabel":"string"},"input_schema":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.input_schema.additionalProperties","typeLabel":"string"},"description":"The input schema of the MCP tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.input_schema","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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.response_variables.additionalProperties","typeLabel":"string"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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 MCP tool is executing.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","required":["type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.parameters.items.[INDEX].properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.parameters.items.[INDEX].\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.response_variables","typeLabel":"object"},"output_selection":{"type":"any","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.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.output_selection","typeLabel":"any"},"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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. 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\"."}}},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"]},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges)."},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"transfer_destination":{"type":"any"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call."},"transfer_option":{"type":"any"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. 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\"."}}},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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)."},"type":{"type":"string","enum":["agent_swap"]},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to."},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version."},"speak_during_execution":{"type":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap."},"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\"."},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap."},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source."},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false."},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false."},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive)."}}},{"type":"object","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":{"type":"any"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number."},"sms_destination":{"type":"any","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."}}},{"type":"object","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."}}},{"type":"object","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."}}},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"]},"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 the tool does, sometimes can also include information about when to call the tool."},"variables":{"type":"array","items":{"type":"any"},"description":"The variables to be extracted."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. 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\"."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. 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\"."}}},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"]},"mcp_id":{"type":"string","description":"Unique id of the MCP."},"name":{"type":"string","description":"Name of the MCP tool."},"description":{"type":"string","description":"Description of the MCP tool."},"input_schema":{"type":"object","additionalProperties":{"type":"string"},"description":"The input schema of the MCP tool."},"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"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response"},"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\"."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this MCP tool is executing."}}},{"type":"object","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":{"type":"any","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."},"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."}}}]},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools","typeLabel":"object[] | null"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.id","typeLabel":"string"},"type":{"type":"string","enum":["end"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.2.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.2.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.2.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.2.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.2.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":"nodes.items.[INDEX].oneOf.2.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_choice.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":"nodes.items.[INDEX].oneOf.2.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.2.model_choice.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":"nodes.items.[INDEX].oneOf.2.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_choice","typeLabel":"object"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.2.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.2.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.2.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","tool_id","tool_type","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.id","typeLabel":"string"},"type":{"type":"string","enum":["function"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"tool_id":{"type":"string","description":"Tool ID for function nodes","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.tool_id","typeLabel":"string"},"tool_type":{"type":"string","enum":["local","shared"],"description":"Tool type for function nodes","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.tool_type","typeLabel":"enum\u003cstring>"},"wait_for_result":{"type":"boolean","description":"Whether to wait for tool result","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.3.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.3.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.3.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.3.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.3.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":"nodes.items.[INDEX].oneOf.3.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_choice.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":"nodes.items.[INDEX].oneOf.3.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.3.model_choice.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":"nodes.items.[INDEX].oneOf.3.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Whether to speak during tool execution","uniqueKey":"nodes.items.[INDEX].oneOf.3.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this function executes.","uniqueKey":"nodes.items.[INDEX].oneOf.3.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["type","code","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.id","typeLabel":"string"},"type":{"type":"string","enum":["code"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.code","typeLabel":"string"},"wait_for_result":{"type":"boolean","description":"Whether to wait for code execution result","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.4.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.4.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.4.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.4.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.4.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_choice.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":"nodes.items.[INDEX].oneOf.4.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.4.model_choice.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":"nodes.items.[INDEX].oneOf.4.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_choice","typeLabel":"object"},"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":"nodes.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.4.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.4.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Whether to speak during code execution","uniqueKey":"nodes.items.[INDEX].oneOf.4.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while code executes.","uniqueKey":"nodes.items.[INDEX].oneOf.4.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["type","transfer_destination","transfer_option","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.id","typeLabel":"string"},"type":{"type":"string","enum":["transfer_call"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"transfer_destination":{"oneOf":[{"type":"object","required":["type","number"],"properties":{"type":{"type":"string","enum":["predefined"],"description":"The type of transfer destination.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.type","typeLabel":"enum\u003cstring>"},"number":{"type":"string","description":"The number to transfer to in E.164 format or a dynamic variable like {{transfer_number}}.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.number","typeLabel":"string"},"extension":{"type":"string","description":"Extension digits to dial after the main number connects. Sent via DTMF. Allow digits, '*', '#', or a dynamic variable like {{extension}}.","example":"123*456#","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.extension","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["inferred"],"description":"The type of transfer destination.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"The prompt to be used to help infer the transfer destination. The model will take the global prompt, the call transcript, and this prompt together to deduce the right number to transfer to. Can contain dynamic variables.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination","typeLabel":"object"},"transfer_option":{"oneOf":[{"type":"object","title":"Cold Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["cold_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring. Requires the telephony side to support caller id override. Retell Twilio numbers support this option. This parameter takes effect only when `cold_transfer_mode` is set to `sip_invite`. When using `sip_refer`, this option is not available. Retell Twilio numbers always use user's number as the caller id when using `sip refer` cold transfer mode.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.show_transferee_as_caller","typeLabel":"boolean"},"cold_transfer_mode":{"type":"string","enum":["sip_refer","sip_invite"],"description":"The mode of the cold transfer. If set to `sip_refer`, will use SIP REFER to transfer the call. If set to `sip_invite`, will use SIP INVITE to transfer the call.","default":"sip_invite","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.cold_transfer_mode","typeLabel":"enum\u003cstring>"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.transfer_ring_duration_ms","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0","typeLabel":"Cold Transfer · object"},{"type":"object","title":"Warm Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["warm_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.show_transferee_as_caller","typeLabel":"boolean"},"agent_detection_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The time to wait before considering transfer fails.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.agent_detection_timeout_ms","typeLabel":"number"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.transfer_ring_duration_ms","typeLabel":"integer"},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.on_hold_music","typeLabel":"enum\u003cstring>"},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.custom_on_hold_music_asset_id","typeLabel":"string"},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option","typeLabel":"object"},"private_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option","typeLabel":"object"},"ivr_option":{"type":"object","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option.prompt","typeLabel":"string"}},"description":"IVR navigation option to run when doing human detection. This prompt will guide the AI on how to navigate the IVR system.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option","typeLabel":"object"},"opt_out_human_detection":{"type":"boolean","description":"If set to true, will not perform human detection for the transfer. Default to false.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.opt_out_human_detection","typeLabel":"boolean"},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.enable_bridge_audio_cue","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1","typeLabel":"Warm Transfer · object"},{"type":"object","title":"Agentic Warm Transfer","required":["type","agentic_transfer_config"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["agentic_warm_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.type","typeLabel":"enum\u003cstring>"},"agentic_transfer_config":{"type":"object","description":"Configuration for agentic warm transfer. Required for agentic warm transfer.","properties":{"transfer_agent":{"type":"object","description":"The agent that will mediate the transfer decision.","properties":{"agent_id":{"type":"string","minLength":1,"description":"The agent ID of the transfer agent. This agent must have isTransferAgent set to true and should use bridge_transfer and cancel_transfer tools (for Retell LLM) or BridgeTransferNode and CancelTransferNode (for Conversation Flow).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_id","typeLabel":"string"},"agent_version":{"oneOf":[{"type":"string","description":"The version of the transfer agent to use.","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version.oneOf.0","typeLabel":"string"},{"type":"integer","description":"The version of the transfer agent to use.","minimum":0,"example":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version","typeLabel":"string | integer"}},"required":["agent_id","agent_version"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent","typeLabel":"object"},"transfer_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The maximum time to wait for the transfer agent to make a decision, in milliseconds. Defaults to 30000 (30 seconds).","default":30000,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_timeout_ms","typeLabel":"number"},"action_on_timeout":{"type":"string","enum":["bridge_transfer","cancel_transfer"],"description":"The action to take when the transfer agent times out without making a decision. Defaults to cancel_transfer.","default":"cancel_transfer","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.action_on_timeout","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config","typeLabel":"object"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.show_transferee_as_caller","typeLabel":"boolean"},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.on_hold_music","typeLabel":"enum\u003cstring>"},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.custom_on_hold_music_asset_id","typeLabel":"string"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.transfer_ring_duration_ms","typeLabel":"integer"},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option","typeLabel":"object"},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.enable_bridge_audio_cue","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2","typeLabel":"Agentic Warm Transfer · object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option","typeLabel":"Cold Transfer · object | Warm Transfer · object | Agentic Warm Transfer · object"},"edge":{"type":"object","description":"Transition followed by a transfer_call or agent_swap node when the transfer fails. Evaluated after the transfer attempt finishes.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.5.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.5.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.5.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.5.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.5.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_choice.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":"nodes.items.[INDEX].oneOf.5.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.5.model_choice.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":"nodes.items.[INDEX].oneOf.5.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_choice","typeLabel":"object"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false,"uniqueKey":"nodes.items.[INDEX].oneOf.5.ignore_e164_validation","typeLabel":"boolean"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.5.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers for transfer calls","uniqueKey":"nodes.items.[INDEX].oneOf.5.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.5.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.id","typeLabel":"string"},"type":{"type":"string","enum":["press_digit"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.instruction.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.instruction.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.6.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.6.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.6.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.6.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.6.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_choice.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":"nodes.items.[INDEX].oneOf.6.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.6.model_choice.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":"nodes.items.[INDEX].oneOf.6.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_choice","typeLabel":"object"},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit","uniqueKey":"nodes.items.[INDEX].oneOf.6.delay_ms","typeLabel":"integer"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.id","typeLabel":"string"},"type":{"type":"string","enum":["branch"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.7.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.7.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.7.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.7.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.7.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":"nodes.items.[INDEX].oneOf.7.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_choice.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":"nodes.items.[INDEX].oneOf.7.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.7.model_choice.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":"nodes.items.[INDEX].oneOf.7.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_choice","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["type","instruction","success_edge","failed_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.id","typeLabel":"string"},"type":{"type":"string","enum":["sms"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.0.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.1.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","template"],"properties":{"type":{"type":"string","enum":["template"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.2.type","typeLabel":"enum\u003cstring>"},"template":{"type":"string","enum":["info_collection"],"description":"The template to use for the instruction. \"info_collection\" sends a predefined message requesting information from the user.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.2.template","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction","typeLabel":"object"},"success_edge":{"type":"object","description":"Transition followed by an SMS node after the send operation reports success.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Sent successfully\" for SMS success edge","minLength":1,"enum":["Sent successfully"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Sent successfully"],"description":"Must be \"Sent successfully\" for SMS success edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge","typeLabel":"object"},"failed_edge":{"type":"object","description":"Transition followed by an SMS node when generating the message content or sending the message fails.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Failed to send\" for SMS failed edge","minLength":1,"enum":["Failed to send"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Failed to send"],"description":"Must be \"Failed to send\" for SMS failed edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.8.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.8.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.8.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.8.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_choice.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":"nodes.items.[INDEX].oneOf.8.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.8.model_choice.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":"nodes.items.[INDEX].oneOf.8.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_choice","typeLabel":"object"},"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":"nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.3","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.1.type","typeLabel":"enum\u003cstring>"},"phone_number":{"type":"string","description":"Destination phone number in E.164 format.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.1.ignore_e164_validation","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.3","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.8.sms_destination","typeLabel":"Destination Customer Number · object | Destination Phone Number · object | object | null"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["type","variables","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.id","typeLabel":"string"},"type":{"type":"string","enum":["extract_dynamic_variables"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"variables":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["string"],"description":"Type of the variable to extract.","example":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"customer_name","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"The name of the customer.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.description","typeLabel":"string"},"examples":{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.conditional_prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","name","description","choices"],"properties":{"type":{"type":"string","enum":["enum"],"description":"Type of the variable to extract.","example":"enum","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"product_rating","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"Rating of the product.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.description","typeLabel":"string"},"choices":{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.conditional_prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["boolean"],"description":"Type of the variable to extract.","example":"boolean","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"is_converted","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"Whether the customer converted.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.conditional_prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["number"],"description":"Type of the variable to extract.","example":"number","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"order_count","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3.conditional_prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables","typeLabel":"object[]"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.9.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.9.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.9.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.9.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.9.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":"nodes.items.[INDEX].oneOf.9.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_choice.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":"nodes.items.[INDEX].oneOf.9.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.9.model_choice.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":"nodes.items.[INDEX].oneOf.9.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_choice","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this extract step executes.","uniqueKey":"nodes.items.[INDEX].oneOf.9.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["type","agent_id","post_call_analysis_setting","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.id","typeLabel":"string"},"type":{"type":"string","enum":["agent_swap"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"agent_id":{"type":"string","description":"The ID of the agent to swap to","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.agent_id","typeLabel":"string"},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.post_call_analysis_setting","typeLabel":"enum\u003cstring>"},"edge":{"type":"object","description":"Edge to transition to if agent swap fails","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.10.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.10.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.10.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.10.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.10.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":"nodes.items.[INDEX].oneOf.10.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_choice.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":"nodes.items.[INDEX].oneOf.10.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.10.model_choice.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":"nodes.items.[INDEX].oneOf.10.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_choice","typeLabel":"object"},"agent_version":{"oneOf":[{"type":"string","description":"The version of the agent to swap to. If not specified, will use the latest version","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published","uniqueKey":"nodes.items.[INDEX].oneOf.10.agent_version.oneOf.0","typeLabel":"string"},{"type":"integer","description":"The version of the agent to swap to. If not specified, will use the latest version","minimum":0,"example":1,"uniqueKey":"nodes.items.[INDEX].oneOf.10.agent_version.oneOf.1","typeLabel":"integer"}],"uniqueKey":"nodes.items.[INDEX].oneOf.10.agent_version","typeLabel":"string | integer"},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source.","uniqueKey":"nodes.items.[INDEX].oneOf.10.webhook_setting","typeLabel":"enum\u003cstring>"},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.10.keep_current_voice","typeLabel":"boolean"},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.10.keep_current_language","typeLabel":"boolean"},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.10.use_swap_agent_max_duration","typeLabel":"boolean"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.10.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","required":["type","mcp_id","mcp_tool_name","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.id","typeLabel":"string"},"type":{"type":"string","enum":["mcp"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.type","typeLabel":"enum\u003cstring>"},"mcp_id":{"type":"string","description":"Unique ID of the MCP server","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.mcp_id","typeLabel":"string"},"mcp_tool_name":{"type":"string","description":"Name of the MCP tool to call","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.mcp_tool_name","typeLabel":"string"},"wait_for_result":{"type":"boolean","description":"If true, will wait for result before transitioning to next node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.11.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.11.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.11.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.11.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.11.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_choice.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":"nodes.items.[INDEX].oneOf.11.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.11.model_choice.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":"nodes.items.[INDEX].oneOf.11.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_choice","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge","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":"nodes.items.[INDEX].oneOf.11.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.11.response_variables.additionalProperties","typeLabel":"string"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response","uniqueKey":"nodes.items.[INDEX].oneOf.11.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.11.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while MCP tool executes.","uniqueKey":"nodes.items.[INDEX].oneOf.11.enable_typing_sound","typeLabel":"boolean"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11","typeLabel":"object"},{"type":"object","required":["type","component_id","component_type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.id","typeLabel":"string"},"type":{"type":"string","enum":["component"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.type","typeLabel":"enum\u003cstring>"},"component_id":{"type":"string","description":"The reference ID of the component","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.component_id","typeLabel":"string"},"component_type":{"type":"string","enum":["local","shared"],"description":"Type of component:\n- local: stored in conversation flow's components array\n- shared: stored in stand-alone conversation-flow-component table\n","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.component_type","typeLabel":"enum\u003cstring>"},"else_edge":{"type":"object","description":"Default edge when no other conditions are met","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.12.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.12.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.12.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.12.display_position","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX]","typeLabel":"object"},"description":"Array of edges for conditional transitions","uniqueKey":"nodes.items.[INDEX].oneOf.12.edges","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.id","typeLabel":"string"},"type":{"type":"string","enum":["bridge_transfer"],"description":"Type of the node - initiates a warm transfer by bridging the call","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.13.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.13.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.13.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.13.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.13.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":"nodes.items.[INDEX].oneOf.13.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_choice.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":"nodes.items.[INDEX].oneOf.13.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.13.model_choice.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":"nodes.items.[INDEX].oneOf.13.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.13.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.id","typeLabel":"string"},"type":{"type":"string","enum":["cancel_transfer"],"description":"Type of the node - cancels the warm transfer and ends the transfer agent call","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.14.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.14.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.14.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.14.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.14.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":"nodes.items.[INDEX].oneOf.14.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_choice.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":"nodes.items.[INDEX].oneOf.14.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.14.model_choice.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":"nodes.items.[INDEX].oneOf.14.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.14.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX]","typeLabel":"object"},"description":"Array of nodes in the conversation flow.","example":[{"id":"start","type":"conversation","instruction":{"type":"prompt","text":"Greet the customer and ask how you can help them."},"edges":[{"id":"edge_1","transition_condition":{"type":"prompt","prompt":"Customer wants to book appointment"},"destination_node_id":"book_appointment"}]}],"isRequired":true,"uniqueKey":"nodes","typeLabel":"object[]"},"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":"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":"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":"model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"uniqueKey":"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":"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":"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":"model_config.oneOf.0.backup.oneOf.0.kick_in_timeout_ms","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"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":"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":"model_config.oneOf.0.backup.oneOf.2","typeLabel":"null"}],"uniqueKey":"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":"model_config.oneOf.0.temperature","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"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":"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":"model_config.oneOf.1.primary.model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"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":"model_config.oneOf.1.temperature","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"model_config.oneOf.1","typeLabel":"object"}],"uniqueKey":"model_config","typeLabel":"object"},"backup_model":{"oneOf":[{"type":"object","description":"Backup models are supported only for call agents. Response engines with a backup model cannot be used by chat agents.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","description":"Type of model choice","enum":["cascading"],"isRequired":true,"uniqueKey":"backup_model.oneOf.0.type","typeLabel":"enum\u003cstring>"},"model":{"type":"string","description":"The LLM model to use","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"],"isRequired":true,"uniqueKey":"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":"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":"backup_model.oneOf.0.ultrafast","typeLabel":"boolean"},"backup_kick_in_timeout":{"type":"integer","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.","maximum":60000,"minimum":300,"uniqueKey":"backup_model.oneOf.0.backup_kick_in_timeout","typeLabel":"integer"}},"uniqueKey":"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.","required":["type","model"],"enum":[null],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"backup_model.oneOf.1.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":"backup_model.oneOf.1.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"backup_model.oneOf.1.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":"backup_model.oneOf.1.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":"backup_model.oneOf.1.backup_kick_in_timeout","typeLabel":"integer"}},"uniqueKey":"backup_model.oneOf.1","typeLabel":"object"},{"type":"object","description":"Backup models are supported only for call agents. Response engines with a backup model cannot be used by chat agents.","required":["type","model"],"enum":[null],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"backup_model.oneOf.2.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":"backup_model.oneOf.2.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"backup_model.oneOf.2.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":"backup_model.oneOf.2.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":"backup_model.oneOf.2.backup_kick_in_timeout","typeLabel":"integer"}},"uniqueKey":"backup_model.oneOf.2","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],"deprecated":true,"uniqueKey":"backup_model.oneOf.3","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],"deprecated":true,"uniqueKey":"backup_model.oneOf.4","typeLabel":"null"}],"uniqueKey":"backup_model","typeLabel":"object · object · 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":"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":"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":"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":"model_choice.oneOf.0.ultrafast","typeLabel":"boolean"}},"uniqueKey":"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":"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":"model_choice.oneOf.1.model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"model_choice.oneOf.1","typeLabel":"object"}],"uniqueKey":"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":"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":"model_temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"model_temperature","typeLabel":"number | null"},"tool_call_strict_mode":{"oneOf":[{"type":"boolean","example":true,"description":"Whether to use strict mode for tool calls. Only applicable when using certain supported models.","uniqueKey":"tool_call_strict_mode.oneOf.0","typeLabel":"boolean"},{"type":"null","example":true,"description":"Whether to use strict mode for tool calls. Only applicable when using certain supported models.","uniqueKey":"tool_call_strict_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"tool_call_strict_mode","typeLabel":"boolean | null"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"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":"knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"kb_config.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval.","uniqueKey":"kb_config","typeLabel":"object"},"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":"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":"begin_after_user_silence_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"begin_after_user_silence_ms","typeLabel":"integer | null"},"global_prompt":{"oneOf":[{"type":"string","example":"You are a helpful customer service agent.","description":"Global prompt used in every node of the conversation flow.","uniqueKey":"global_prompt.oneOf.0","typeLabel":"string"},{"type":"null","example":"You are a helpful customer service agent.","description":"Global prompt used in every node of the conversation flow.","uniqueKey":"global_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"global_prompt","typeLabel":"string | null"},"flex_mode":{"oneOf":[{"type":"boolean","example":false,"description":"If enabled, the whole conversation flow will be converted as a Single Prompt agent.","uniqueKey":"flex_mode.oneOf.0","typeLabel":"boolean"},{"type":"null","example":false,"description":"If enabled, the whole conversation flow will be converted as a Single Prompt agent.","uniqueKey":"flex_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"flex_mode","typeLabel":"boolean | null"},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["tool_id","type","name","url"],"properties":{"type":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.url","typeLabel":"string"},"tool_id":{"type":"string","description":"Unique identifier for the tool","isRequired":true,"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.tool_id","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST.","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.method","typeLabel":"enum\u003cstring>"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request.","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.query_params.additionalProperties","typeLabel":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL.","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.parameters.properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.parameters.\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"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":"tools.oneOf.0.items.[INDEX].oneOf.0.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["tool_id","type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"],"isRequired":true,"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.app_tool_template_name","typeLabel":"string"},"tool_id":{"type":"string","description":"Unique identifier for the tool","isRequired":true,"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.tool_id","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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.parameters.items.[INDEX].properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.parameters.items.[INDEX].\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"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":"tools.oneOf.0.items.[INDEX].oneOf.1.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.fields.items.[INDEX]","typeLabel":"string"},"description":"Not used at runtime; stored and returned as-is for the UI.","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.fields","typeLabel":"string[]"}},"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1.fields","typeLabel":"string[]"}},"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1","typeLabel":"object"}],"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Tools available in the conversation flow.","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"uniqueKey":"tools.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"oneOf":[{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}},{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}}]},"description":"Tools available in the conversation flow.","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"uniqueKey":"tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"tools","typeLabel":"object[] | null"},"components":{"oneOf":[{"type":"array","items":{"type":"object","required":["name","nodes"],"properties":{"name":{"type":"string","description":"Name of the component","example":"Customer Information Collector","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].name","typeLabel":"string"},"nodes":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.id","typeLabel":"string"},"type":{"type":"string","enum":["conversation"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.0.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.1.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_choice","typeLabel":"object"},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.interruption_sensitivity.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.interruption_sensitivity.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.interruption_sensitivity","typeLabel":"number | null"},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.responsiveness.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.responsiveness.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.responsiveness","typeLabel":"number | null"},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.voice_speed.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0.5,"maximum":2,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.voice_speed.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.voice_speed","typeLabel":"number | null"},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption","typeLabel":"boolean | null"},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_trigger_ms.oneOf.0","typeLabel":"number"},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_trigger_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_trigger_ms","typeLabel":"number | null"},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_max_count.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_max_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_max_count","typeLabel":"integer | null"},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.stt_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.stt_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.stt_mode","typeLabel":"enum\u003cstring> | null"},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is custom.","properties":{"provider":{"type":"string","description":"The STT provider to use.","enum":["azure","deepgram","soniox","assemblyai","muse"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.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, and 100 for Muse. Muse detects turn ends itself and ignores this value.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.0.endpointing_ms","typeLabel":"integer"}},"required":["provider","endpointing_ms"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.custom_stt_config","typeLabel":"object | null"},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.0.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.boosted_keywords","typeLabel":"string[] | null"},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge","typeLabel":"object"},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skippable","typeLabel":"boolean"},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge","typeLabel":"object"},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the conversation should be.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples","typeLabel":"object[]"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.kb_config.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.kb_config","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.id","typeLabel":"string"},"type":{"type":"string","enum":["subagent"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.instruction.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.instruction.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_choice","typeLabel":"object"},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.interruption_sensitivity.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.interruption_sensitivity.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.interruption_sensitivity","typeLabel":"number | null"},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.responsiveness.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.responsiveness.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.responsiveness","typeLabel":"number | null"},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.voice_speed.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0.5,"maximum":2,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.voice_speed.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.voice_speed","typeLabel":"number | null"},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption","typeLabel":"boolean | null"},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_trigger_ms.oneOf.0","typeLabel":"number"},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_trigger_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_trigger_ms","typeLabel":"number | null"},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_max_count.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_max_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_max_count","typeLabel":"integer | null"},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.stt_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.stt_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.stt_mode","typeLabel":"enum\u003cstring> | null"},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is custom.","properties":{"provider":{"type":"string","description":"The STT provider to use.","enum":["azure","deepgram","soniox","assemblyai","muse"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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, and 100 for Muse. Muse detects turn ends itself and ignores this value.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.0.endpointing_ms","typeLabel":"integer"}},"required":["provider","endpointing_ms"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.custom_stt_config","typeLabel":"object | null"},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.0.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.boosted_keywords","typeLabel":"string[] | null"},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge","typeLabel":"object"},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skippable","typeLabel":"boolean"},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge","typeLabel":"object"},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the conversation should be.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples","typeLabel":"object[]"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.kb_config.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.kb_config","typeLabel":"object"},"tool_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tool_ids","typeLabel":"string[] | null"},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.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 transitions). 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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. Only applicable when speak_during_execution is true.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges).","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.name","typeLabel":"string"},"transfer_destination":{"type":"any","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.transfer_destination","typeLabel":"any"},"transfer_option":{"type":"any","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.transfer_option","typeLabel":"any"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.description","typeLabel":"string"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.ignore_e164_validation","typeLabel":"boolean"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.custom_sip_headers.additionalProperties","typeLabel":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. Only applicable when speak_during_execution is true.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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).","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.name","typeLabel":"string"},"type":{"type":"string","enum":["agent_swap"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.agent_id","typeLabel":"string"},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.post_call_analysis_setting","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.description","typeLabel":"string"},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.agent_version","typeLabel":"any"},"speak_during_execution":{"type":"boolean","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.execution_message_type","typeLabel":"enum\u003cstring>"},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.webhook_setting","typeLabel":"enum\u003cstring>"},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.keep_current_voice","typeLabel":"boolean"},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.keep_current_language","typeLabel":"boolean"},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.use_swap_agent_max_duration","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.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 transitions). 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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.description","typeLabel":"string"},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive).","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.delay_ms","typeLabel":"integer"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.name","typeLabel":"string"},"type":{"type":"string","enum":["send_sms"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"sms_content":{"type":"any","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_content","typeLabel":"any"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.execution_message_type","typeLabel":"enum\u003cstring>"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_sender","typeLabel":"any"},"sms_destination":{"type":"any","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_destination","typeLabel":"any"},"speak_after_execution":{"type":"boolean","default":true,"description":"Whether the agent should speak after the SMS tool finishes execution.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.speak_after_execution","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["type","name","url"],"properties":{"type":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.url","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.description","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.method","typeLabel":"enum\u003cstring>"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.query_params.additionalProperties","typeLabel":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.parameters.properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.parameters.\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["type","name","code"],"properties":{"type":{"type":"string","enum":["code"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.name","typeLabel":"string"},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.code","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.description","typeLabel":"string"},"variables":{"type":"array","items":{"type":"any","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.variables.items.[INDEX]","typeLabel":"any"},"description":"The variables to be extracted.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.variables","typeLabel":"any[]"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.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 transitions). 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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.description","typeLabel":"string"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.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 transitions). 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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.description","typeLabel":"string"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the MCP tool.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the MCP tool.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.description","typeLabel":"string"},"mcp_id":{"type":"string","description":"Unique id of the MCP.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.mcp_id","typeLabel":"string"},"input_schema":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.input_schema.additionalProperties","typeLabel":"string"},"description":"The input schema of the MCP tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.input_schema","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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.response_variables.additionalProperties","typeLabel":"string"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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 MCP tool is executing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","required":["type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.parameters.items.[INDEX].properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.parameters.items.[INDEX].\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.response_variables","typeLabel":"object"},"output_selection":{"type":"any","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.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.output_selection","typeLabel":"any"},"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. 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\"."}}},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"]},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges)."},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"transfer_destination":{"type":"any"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call."},"transfer_option":{"type":"any"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. 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\"."}}},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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)."},"type":{"type":"string","enum":["agent_swap"]},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to."},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version."},"speak_during_execution":{"type":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap."},"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\"."},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap."},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source."},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false."},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false."},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive)."}}},{"type":"object","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":{"type":"any"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number."},"sms_destination":{"type":"any","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."}}},{"type":"object","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."}}},{"type":"object","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."}}},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"]},"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 the tool does, sometimes can also include information about when to call the tool."},"variables":{"type":"array","items":{"type":"any"},"description":"The variables to be extracted."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. 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\"."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. 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\"."}}},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"]},"mcp_id":{"type":"string","description":"Unique id of the MCP."},"name":{"type":"string","description":"Name of the MCP tool."},"description":{"type":"string","description":"Description of the MCP tool."},"input_schema":{"type":"object","additionalProperties":{"type":"string"},"description":"The input schema of the MCP tool."},"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"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response"},"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\"."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this MCP tool is executing."}}},{"type":"object","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":{"type":"any","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."},"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."}}}]},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools","typeLabel":"object[] | null"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.id","typeLabel":"string"},"type":{"type":"string","enum":["end"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_choice","typeLabel":"object"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","tool_id","tool_type","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.id","typeLabel":"string"},"type":{"type":"string","enum":["function"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"tool_id":{"type":"string","description":"Tool ID for function nodes","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.tool_id","typeLabel":"string"},"tool_type":{"type":"string","enum":["local","shared"],"description":"Tool type for function nodes","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.tool_type","typeLabel":"enum\u003cstring>"},"wait_for_result":{"type":"boolean","description":"Whether to wait for tool result","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Whether to speak during tool execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this function executes.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["type","code","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.id","typeLabel":"string"},"type":{"type":"string","enum":["code"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.code","typeLabel":"string"},"wait_for_result":{"type":"boolean","description":"Whether to wait for code execution result","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_choice","typeLabel":"object"},"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Whether to speak during code execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while code executes.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["type","transfer_destination","transfer_option","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.id","typeLabel":"string"},"type":{"type":"string","enum":["transfer_call"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"transfer_destination":{"oneOf":[{"type":"object","required":["type","number"],"properties":{"type":{"type":"string","enum":["predefined"],"description":"The type of transfer destination.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.type","typeLabel":"enum\u003cstring>"},"number":{"type":"string","description":"The number to transfer to in E.164 format or a dynamic variable like {{transfer_number}}.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.number","typeLabel":"string"},"extension":{"type":"string","description":"Extension digits to dial after the main number connects. Sent via DTMF. Allow digits, '*', '#', or a dynamic variable like {{extension}}.","example":"123*456#","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.extension","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["inferred"],"description":"The type of transfer destination.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"The prompt to be used to help infer the transfer destination. The model will take the global prompt, the call transcript, and this prompt together to deduce the right number to transfer to. Can contain dynamic variables.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination","typeLabel":"object"},"transfer_option":{"oneOf":[{"type":"object","title":"Cold Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["cold_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring. Requires the telephony side to support caller id override. Retell Twilio numbers support this option. This parameter takes effect only when `cold_transfer_mode` is set to `sip_invite`. When using `sip_refer`, this option is not available. Retell Twilio numbers always use user's number as the caller id when using `sip refer` cold transfer mode.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.show_transferee_as_caller","typeLabel":"boolean"},"cold_transfer_mode":{"type":"string","enum":["sip_refer","sip_invite"],"description":"The mode of the cold transfer. If set to `sip_refer`, will use SIP REFER to transfer the call. If set to `sip_invite`, will use SIP INVITE to transfer the call.","default":"sip_invite","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.cold_transfer_mode","typeLabel":"enum\u003cstring>"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.transfer_ring_duration_ms","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0","typeLabel":"Cold Transfer · object"},{"type":"object","title":"Warm Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["warm_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.show_transferee_as_caller","typeLabel":"boolean"},"agent_detection_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The time to wait before considering transfer fails.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.agent_detection_timeout_ms","typeLabel":"number"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.transfer_ring_duration_ms","typeLabel":"integer"},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.on_hold_music","typeLabel":"enum\u003cstring>"},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.custom_on_hold_music_asset_id","typeLabel":"string"},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option","typeLabel":"object"},"private_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option","typeLabel":"object"},"ivr_option":{"type":"object","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option.prompt","typeLabel":"string"}},"description":"IVR navigation option to run when doing human detection. This prompt will guide the AI on how to navigate the IVR system.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option","typeLabel":"object"},"opt_out_human_detection":{"type":"boolean","description":"If set to true, will not perform human detection for the transfer. Default to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.opt_out_human_detection","typeLabel":"boolean"},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.enable_bridge_audio_cue","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1","typeLabel":"Warm Transfer · object"},{"type":"object","title":"Agentic Warm Transfer","required":["type","agentic_transfer_config"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["agentic_warm_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.type","typeLabel":"enum\u003cstring>"},"agentic_transfer_config":{"type":"object","description":"Configuration for agentic warm transfer. Required for agentic warm transfer.","properties":{"transfer_agent":{"type":"object","description":"The agent that will mediate the transfer decision.","properties":{"agent_id":{"type":"string","minLength":1,"description":"The agent ID of the transfer agent. This agent must have isTransferAgent set to true and should use bridge_transfer and cancel_transfer tools (for Retell LLM) or BridgeTransferNode and CancelTransferNode (for Conversation Flow).","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_id","typeLabel":"string"},"agent_version":{"oneOf":[{"type":"string","description":"The version of the transfer agent to use.","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version.oneOf.0","typeLabel":"string"},{"type":"integer","description":"The version of the transfer agent to use.","minimum":0,"example":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version","typeLabel":"string | integer"}},"required":["agent_id","agent_version"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent","typeLabel":"object"},"transfer_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The maximum time to wait for the transfer agent to make a decision, in milliseconds. Defaults to 30000 (30 seconds).","default":30000,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_timeout_ms","typeLabel":"number"},"action_on_timeout":{"type":"string","enum":["bridge_transfer","cancel_transfer"],"description":"The action to take when the transfer agent times out without making a decision. Defaults to cancel_transfer.","default":"cancel_transfer","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.action_on_timeout","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config","typeLabel":"object"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.show_transferee_as_caller","typeLabel":"boolean"},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.on_hold_music","typeLabel":"enum\u003cstring>"},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.custom_on_hold_music_asset_id","typeLabel":"string"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.transfer_ring_duration_ms","typeLabel":"integer"},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option","typeLabel":"object"},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.enable_bridge_audio_cue","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2","typeLabel":"Agentic Warm Transfer · object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option","typeLabel":"Cold Transfer · object | Warm Transfer · object | Agentic Warm Transfer · object"},"edge":{"type":"object","description":"Transition followed by a transfer_call or agent_swap node when the transfer fails. Evaluated after the transfer attempt finishes.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_choice","typeLabel":"object"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.ignore_e164_validation","typeLabel":"boolean"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers for transfer calls","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.id","typeLabel":"string"},"type":{"type":"string","enum":["press_digit"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.instruction.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.instruction.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_choice","typeLabel":"object"},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.delay_ms","typeLabel":"integer"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.id","typeLabel":"string"},"type":{"type":"string","enum":["branch"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_choice","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["type","instruction","success_edge","failed_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.id","typeLabel":"string"},"type":{"type":"string","enum":["sms"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.0.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.1.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","template"],"properties":{"type":{"type":"string","enum":["template"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.2.type","typeLabel":"enum\u003cstring>"},"template":{"type":"string","enum":["info_collection"],"description":"The template to use for the instruction. \"info_collection\" sends a predefined message requesting information from the user.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.2.template","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction","typeLabel":"object"},"success_edge":{"type":"object","description":"Transition followed by an SMS node after the send operation reports success.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Sent successfully\" for SMS success edge","minLength":1,"enum":["Sent successfully"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Sent successfully"],"description":"Must be \"Sent successfully\" for SMS success edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge","typeLabel":"object"},"failed_edge":{"type":"object","description":"Transition followed by an SMS node when generating the message content or sending the message fails.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Failed to send\" for SMS failed edge","minLength":1,"enum":["Failed to send"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Failed to send"],"description":"Must be \"Failed to send\" for SMS failed edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_choice","typeLabel":"object"},"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.3","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.1.type","typeLabel":"enum\u003cstring>"},"phone_number":{"type":"string","description":"Destination phone number in E.164 format.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.1.ignore_e164_validation","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.3","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_destination","typeLabel":"Destination Customer Number · object | Destination Phone Number · object | object | null"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["type","variables","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.id","typeLabel":"string"},"type":{"type":"string","enum":["extract_dynamic_variables"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"variables":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["string"],"description":"Type of the variable to extract.","example":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"customer_name","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"The name of the customer.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.description","typeLabel":"string"},"examples":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.conditional_prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","name","description","choices"],"properties":{"type":{"type":"string","enum":["enum"],"description":"Type of the variable to extract.","example":"enum","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"product_rating","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"Rating of the product.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.description","typeLabel":"string"},"choices":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.conditional_prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["boolean"],"description":"Type of the variable to extract.","example":"boolean","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"is_converted","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"Whether the customer converted.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.conditional_prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["number"],"description":"Type of the variable to extract.","example":"number","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"order_count","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3.conditional_prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables","typeLabel":"object[]"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_choice","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this extract step executes.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["type","agent_id","post_call_analysis_setting","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.id","typeLabel":"string"},"type":{"type":"string","enum":["agent_swap"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"agent_id":{"type":"string","description":"The ID of the agent to swap to","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.agent_id","typeLabel":"string"},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.post_call_analysis_setting","typeLabel":"enum\u003cstring>"},"edge":{"type":"object","description":"Edge to transition to if agent swap fails","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_choice","typeLabel":"object"},"agent_version":{"oneOf":[{"type":"string","description":"The version of the agent to swap to. If not specified, will use the latest version","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.agent_version.oneOf.0","typeLabel":"string"},{"type":"integer","description":"The version of the agent to swap to. If not specified, will use the latest version","minimum":0,"example":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.agent_version.oneOf.1","typeLabel":"integer"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.agent_version","typeLabel":"string | integer"},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.webhook_setting","typeLabel":"enum\u003cstring>"},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.keep_current_voice","typeLabel":"boolean"},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.keep_current_language","typeLabel":"boolean"},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.use_swap_agent_max_duration","typeLabel":"boolean"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","required":["type","mcp_id","mcp_tool_name","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.id","typeLabel":"string"},"type":{"type":"string","enum":["mcp"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.type","typeLabel":"enum\u003cstring>"},"mcp_id":{"type":"string","description":"Unique ID of the MCP server","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.mcp_id","typeLabel":"string"},"mcp_tool_name":{"type":"string","description":"Name of the MCP tool to call","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.mcp_tool_name","typeLabel":"string"},"wait_for_result":{"type":"boolean","description":"If true, will wait for result before transitioning to next node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_choice","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge","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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.response_variables.additionalProperties","typeLabel":"string"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while MCP tool executes.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.enable_typing_sound","typeLabel":"boolean"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11","typeLabel":"object"},{"type":"object","required":["type","component_id","component_type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.id","typeLabel":"string"},"type":{"type":"string","enum":["component"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.type","typeLabel":"enum\u003cstring>"},"component_id":{"type":"string","description":"The reference ID of the component","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.component_id","typeLabel":"string"},"component_type":{"type":"string","enum":["local","shared"],"description":"Type of component:\n- local: stored in conversation flow's components array\n- shared: stored in stand-alone conversation-flow-component table\n","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.component_type","typeLabel":"enum\u003cstring>"},"else_edge":{"type":"object","description":"Default edge when no other conditions are met","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.display_position","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX]","typeLabel":"object"},"description":"Array of edges for conditional transitions","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.id","typeLabel":"string"},"type":{"type":"string","enum":["bridge_transfer"],"description":"Type of the node - initiates a warm transfer by bridging the call","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.id","typeLabel":"string"},"type":{"type":"string","enum":["cancel_transfer"],"description":"Type of the node - cancels the warm transfer and ends the transfer agent call","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX]","typeLabel":"object"},"description":"Nodes that make up the component","example":[{"id":"collect_info","type":"conversation","instruction":{"type":"prompt","text":"Ask the customer for their name and contact information."}}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes","typeLabel":"object[]"},"flex_mode":{"oneOf":[{"type":"boolean","example":false,"description":"If enabled, the whole component will be converted as a Single Prompt agent.","uniqueKey":"components.oneOf.0.items.[INDEX].flex_mode.oneOf.0","typeLabel":"boolean"},{"type":"null","example":false,"description":"If enabled, the whole component will be converted as a Single Prompt agent.","uniqueKey":"components.oneOf.0.items.[INDEX].flex_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].flex_mode","typeLabel":"boolean | null"},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["tool_id","type","name","url"],"properties":{"type":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.url","typeLabel":"string"},"tool_id":{"type":"string","description":"Unique identifier for the tool","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.tool_id","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST.","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.method","typeLabel":"enum\u003cstring>"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request.","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.query_params.additionalProperties","typeLabel":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL.","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.parameters.properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.parameters.\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["tool_id","type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.app_tool_template_name","typeLabel":"string"},"tool_id":{"type":"string","description":"Unique identifier for the tool","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.tool_id","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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.parameters.items.[INDEX].properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.parameters.items.[INDEX].\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.fields.items.[INDEX]","typeLabel":"string"},"description":"Not used at runtime; stored and returned as-is for the UI.","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.fields","typeLabel":"string[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1.fields","typeLabel":"string[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Tools available within the component","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"oneOf":[{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}},{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}}]},"description":"Tools available within the component","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].tools","typeLabel":"object[] | null"},"mcps":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].name","typeLabel":"string"},"url":{"type":"string","description":"The URL of the MCP server.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request.","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].query_params.additionalProperties","typeLabel":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL.","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].query_params","typeLabel":"object"},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes).","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].timeout_ms","typeLabel":"integer"}},"required":["name","url"],"uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"A list of MCP server configurations to use for this component","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","description":"The URL of the MCP server."},"headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request."},"query_params":{"type":"object","additionalProperties":{"type":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL."},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes)."}},"required":["name","url"]},"description":"A list of MCP server configurations to use for this component","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].mcps","typeLabel":"object[] | null"},"start_node_id":{"oneOf":[{"type":"string","description":"ID of the starting node","example":"collect_info","uniqueKey":"components.oneOf.0.items.[INDEX].start_node_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"ID of the starting node","example":"collect_info","uniqueKey":"components.oneOf.0.items.[INDEX].start_node_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].start_node_id","typeLabel":"string | null"},"begin_tag_display_position":{"oneOf":[{"type":"object","properties":{"x":{"type":"number","example":100,"uniqueKey":"components.oneOf.0.items.[INDEX].begin_tag_display_position.oneOf.0.x","typeLabel":"number"},"y":{"type":"number","example":200,"uniqueKey":"components.oneOf.0.items.[INDEX].begin_tag_display_position.oneOf.0.y","typeLabel":"number"}},"description":"Display position for the begin tag in the frontend","uniqueKey":"components.oneOf.0.items.[INDEX].begin_tag_display_position.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"x":{"type":"number","example":100},"y":{"type":"number","example":200}},"description":"Display position for the begin tag in the frontend","uniqueKey":"components.oneOf.0.items.[INDEX].begin_tag_display_position.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].begin_tag_display_position","typeLabel":"object | null"},"notes":{"oneOf":[{"type":"array","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].id","typeLabel":"string"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].content","typeLabel":"string"},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].display_position.x","typeLabel":"number"},"y":{"type":"number","example":150,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].display_position.y","typeLabel":"number"}},"description":"Position of the note on the canvas.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].display_position","typeLabel":"object"},"size":{"type":"object","properties":{"width":{"type":"number","example":200,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].size.width","typeLabel":"number"},"height":{"type":"number","example":100,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].size.height","typeLabel":"number"}},"description":"Dimensions of the note on the canvas.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].size","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Visual annotations displayed on the flow canvas.","uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here."},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300},"y":{"type":"number","example":150}},"description":"Position of the note on the canvas."},"size":{"type":"object","properties":{"width":{"type":"number","example":200},"height":{"type":"number","example":100}},"description":"Dimensions of the note on the canvas."}}},"description":"Visual annotations displayed on the flow canvas.","uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].notes","typeLabel":"object[] | null"}},"uniqueKey":"components.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Local components embedded within the conversation flow.","uniqueKey":"components.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","required":["name","nodes"],"properties":{"name":{"type":"string","description":"Name of the component","example":"Customer Information Collector"},"flex_mode":{"oneOf":[{"type":"boolean","example":false,"description":"If enabled, the whole component will be converted as a Single Prompt agent."},{"type":"null","example":false,"description":"If enabled, the whole component will be converted as a Single Prompt agent."}]},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}},{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}}]},"description":"Tools available within the component","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}]},{"type":"null","items":{"oneOf":[{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}},{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}}]},"description":"Tools available within the component","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}]}]},"mcps":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","description":"The URL of the MCP server."},"headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request."},"query_params":{"type":"object","additionalProperties":{"type":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL."},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes)."}},"required":["name","url"]},"description":"A list of MCP server configurations to use for this component"},{"type":"null","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","description":"The URL of the MCP server."},"headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request."},"query_params":{"type":"object","additionalProperties":{"type":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL."},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes)."}},"required":["name","url"]},"description":"A list of MCP server configurations to use for this component"}]},"nodes":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null","minimum":0,"maximum":1}]},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null","minimum":0,"maximum":1}]},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2},{"type":"null","minimum":0.5,"maximum":2}]},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only."},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only."}]},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only."},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only."}]},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node."},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node."}]},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config."},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config."}]},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"]},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"]}]},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered."},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered."}]},"type":{"type":"string","enum":["conversation"],"description":"Type of the node"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled."},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the conversation should be."}}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation)."},{"type":"null","items":{"type":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation)."}]},"kb_config":{"type":"object","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 at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction."}}},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null","minimum":0,"maximum":1}]},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null","minimum":0,"maximum":1}]},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2},{"type":"null","minimum":0.5,"maximum":2}]},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only."},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only."}]},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only."},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only."}]},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node."},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node."}]},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config."},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config."}]},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"]},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"]}]},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered."},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered."}]},"type":{"type":"string","enum":["subagent"],"description":"Type of the node"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled."},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the conversation should be."}}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation)."},{"type":"null","items":{"type":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation)."}]},"kb_config":{"type":"object","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 at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction."},"tool_ids":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node."},{"type":"null","items":{"type":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node."}]},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. 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\"."}}},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"]},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges)."},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"transfer_destination":{"type":"any"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call."},"transfer_option":{"type":"any"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. 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\"."}}},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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)."},"type":{"type":"string","enum":["agent_swap"]},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to."},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version."},"speak_during_execution":{"type":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap."},"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\"."},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap."},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source."},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false."},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false."},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive)."}}},{"type":"object","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":{"type":"any"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number."},"sms_destination":{"type":"any","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."}}},{"type":"object","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."}}},{"type":"object","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."}}},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"]},"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 the tool does, sometimes can also include information about when to call the tool."},"variables":{"type":"array","items":{"type":"any"},"description":"The variables to be extracted."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. 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\"."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. 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\"."}}},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"]},"mcp_id":{"type":"string","description":"Unique id of the MCP."},"name":{"type":"string","description":"Name of the MCP tool."},"description":{"type":"string","description":"Description of the MCP tool."},"input_schema":{"type":"object","additionalProperties":{"type":"string"},"description":"The input schema of the MCP tool."},"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"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response"},"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\"."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this MCP tool is executing."}}},{"type":"object","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":{"type":"any","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."},"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."}}}]},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc."},{"type":"null","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. 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\"."}}},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"]},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges)."},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"transfer_destination":{"type":"any"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call."},"transfer_option":{"type":"any"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. 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\"."}}},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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)."},"type":{"type":"string","enum":["agent_swap"]},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to."},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version."},"speak_during_execution":{"type":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap."},"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\"."},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap."},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source."},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false."},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false."},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive)."}}},{"type":"object","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":{"type":"any"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number."},"sms_destination":{"type":"any","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."}}},{"type":"object","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."}}},{"type":"object","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."}}},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"]},"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 the tool does, sometimes can also include information about when to call the tool."},"variables":{"type":"array","items":{"type":"any"},"description":"The variables to be extracted."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. 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\"."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. 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\"."}}},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"]},"mcp_id":{"type":"string","description":"Unique id of the MCP."},"name":{"type":"string","description":"Name of the MCP tool."},"description":{"type":"string","description":"Description of the MCP tool."},"input_schema":{"type":"object","additionalProperties":{"type":"string"},"description":"The input schema of the MCP tool."},"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"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response"},"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\"."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this MCP tool is executing."}}},{"type":"object","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":{"type":"any","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."},"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."}}}]},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc."}]}}},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["end"],"description":"Type of the node"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]}}},{"type":"object","required":["type","tool_id","tool_type","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["function"],"description":"Type of the node"},"tool_id":{"type":"string","description":"Tool ID for function nodes"},"tool_type":{"type":"string","enum":["local","shared"],"description":"Tool type for function nodes"},"speak_during_execution":{"type":"boolean","description":"Whether to speak during tool execution"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]},"wait_for_result":{"type":"boolean","description":"Whether to wait for tool result"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this function executes."},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","code","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["code"],"description":"Type of the node"},"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":"Whether to speak during code execution"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]},"wait_for_result":{"type":"boolean","description":"Whether to wait for code execution result"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while code executes."},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","transfer_destination","transfer_option","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["transfer_call"],"description":"Type of the node"},"transfer_destination":{"oneOf":[{"type":"object","required":["type","number"],"properties":{"type":{"type":"string","enum":["predefined"],"description":"The type of transfer destination."},"number":{"type":"string","description":"The number to transfer to in E.164 format or a dynamic variable like {{transfer_number}}."},"extension":{"type":"string","description":"Extension digits to dial after the main number connects. Sent via DTMF. Allow digits, '*', '#', or a dynamic variable like {{extension}}.","example":"123*456#"}}},{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["inferred"],"description":"The type of transfer destination."},"prompt":{"type":"string","description":"The prompt to be used to help infer the transfer destination. The model will take the global prompt, the call transcript, and this prompt together to deduce the right number to transfer to. Can contain dynamic variables."}}}]},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers for transfer calls"},"transfer_option":{"oneOf":[{"type":"object","title":"Cold Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["cold_transfer"],"description":"The type of the transfer."},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring. Requires the telephony side to support caller id override. Retell Twilio numbers support this option. This parameter takes effect only when `cold_transfer_mode` is set to `sip_invite`. When using `sip_refer`, this option is not available. Retell Twilio numbers always use user's number as the caller id when using `sip refer` cold transfer mode."},"cold_transfer_mode":{"type":"string","enum":["sip_refer","sip_invite"],"description":"The mode of the cold transfer. If set to `sip_refer`, will use SIP REFER to transfer the call. If set to `sip_invite`, will use SIP INVITE to transfer the call.","default":"sip_invite"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`."}}},{"type":"object","title":"Warm Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["warm_transfer"],"description":"The type of the transfer."},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option."},"agent_detection_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The time to wait before considering transfer fails."},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`."},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset."},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456"},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables."}}},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"]},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables."}}}]},"private_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables."}}},{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"]},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables."}}}]},"ivr_option":{"type":"object","properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables."}},"description":"IVR navigation option to run when doing human detection. This prompt will guide the AI on how to navigate the IVR system."},"opt_out_human_detection":{"type":"boolean","description":"If set to true, will not perform human detection for the transfer. Default to false."},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true}}},{"type":"object","title":"Agentic Warm Transfer","required":["type","agentic_transfer_config"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["agentic_warm_transfer"],"description":"The type of the transfer."},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option."},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset."},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`."},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables."}}},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"]},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables."}}}]},"agentic_transfer_config":{"type":"object","description":"Configuration for agentic warm transfer. Required for agentic warm transfer.","properties":{"transfer_agent":{"type":"object","description":"The agent that will mediate the transfer decision.","properties":{"agent_id":{"type":"string","minLength":1,"description":"The agent ID of the transfer agent. This agent must have isTransferAgent set to true and should use bridge_transfer and cancel_transfer tools (for Retell LLM) or BridgeTransferNode and CancelTransferNode (for Conversation Flow)."},"agent_version":{"oneOf":[{"type":"string","description":"The version of the transfer agent to use.","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published"},{"type":"integer","description":"The version of the transfer agent to use.","minimum":0,"example":1}]}},"required":["agent_id","agent_version"]},"transfer_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The maximum time to wait for the transfer agent to make a decision, in milliseconds. Defaults to 30000 (30 seconds).","default":30000},"action_on_timeout":{"type":"string","enum":["bridge_transfer","cancel_transfer"],"description":"The action to take when the transfer agent times out without making a decision. Defaults to cancel_transfer.","default":"cancel_transfer"}}},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true}}}]},"edge":{"type":"object","description":"Transition followed by a transfer_call or agent_swap node when the transfer fails. Evaluated after the transfer attempt finishes.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]}}},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["press_digit"],"description":"Type of the node"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["branch"],"description":"Type of the node"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","instruction","success_edge","failed_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["sms"],"description":"Type of the node"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}},{"type":"object","required":["type","template"],"properties":{"type":{"type":"string","enum":["template"],"description":"Type of instruction"},"template":{"type":"string","enum":["info_collection"],"description":"The template to use for the instruction. \"info_collection\" sends a predefined message requesting information from the user."}}}]},"success_edge":{"type":"object","description":"Transition followed by an SMS node after the send operation reports success.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Sent successfully\" for SMS success edge","minLength":1,"enum":["Sent successfully"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Sent successfully"],"description":"Must be \"Sent successfully\" for SMS success edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"failed_edge":{"type":"object","description":"Transition followed by an SMS node when generating the message content or sending the message fails.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Failed to send\" for SMS failed edge","minLength":1,"enum":["Failed to send"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Failed to send"],"description":"Must be \"Failed to send\" for SMS failed edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"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."}]}}},{"type":"object","required":["type","variables","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["extract_dynamic_variables"],"description":"Type of the node"},"variables":{"type":"array","items":{"oneOf":[{"type":"object","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","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","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","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."}}}]}},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this extract step executes."},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","agent_id","post_call_analysis_setting","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["agent_swap"],"description":"Type of the node"},"agent_id":{"type":"string","description":"The ID of the agent to swap to"},"agent_version":{"oneOf":[{"type":"string","description":"The version of the agent to swap to. If not specified, will use the latest version","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published"},{"type":"integer","description":"The version of the agent to swap to. If not specified, will use the latest version","minimum":0,"example":1}]},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap"},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source."},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false."},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false."},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false."},"edge":{"type":"object","description":"Edge to transition to if agent swap fails","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]}}},{"type":"object","required":["type","mcp_id","mcp_tool_name","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["mcp"],"description":"Type of the node"},"mcp_id":{"type":"string","description":"Unique ID of the MCP server"},"mcp_tool_name":{"type":"string","description":"Name of the MCP tool to call"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"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"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]},"wait_for_result":{"type":"boolean","description":"If true, will wait for result before transitioning to next node"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while MCP tool executes."},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","component_id","component_type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"type":{"type":"string","enum":["component"],"description":"Type of the node"},"component_id":{"type":"string","description":"The reference ID of the component"},"component_type":{"type":"string","enum":["local","shared"],"description":"Type of component:\n- local: stored in conversation flow's components array\n- shared: stored in stand-alone conversation-flow-component table\n"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"Array of edges for conditional transitions"},"else_edge":{"type":"object","description":"Default edge when no other conditions are met","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["bridge_transfer"],"description":"Type of the node - initiates a warm transfer by bridging the call"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]}}},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["cancel_transfer"],"description":"Type of the node - cancels the warm transfer and ends the transfer agent call"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]}}}]},"description":"Nodes that make up the component","example":[{"id":"collect_info","type":"conversation","instruction":{"type":"prompt","text":"Ask the customer for their name and contact information."}}]},"start_node_id":{"oneOf":[{"type":"string","description":"ID of the starting node","example":"collect_info"},{"type":"null","description":"ID of the starting node","example":"collect_info"}]},"begin_tag_display_position":{"oneOf":[{"type":"object","properties":{"x":{"type":"number","example":100},"y":{"type":"number","example":200}},"description":"Display position for the begin tag in the frontend"},{"type":"null","properties":{"x":{"type":"number","example":100},"y":{"type":"number","example":200}},"description":"Display position for the begin tag in the frontend"}]},"notes":{"oneOf":[{"type":"array","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here."},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300},"y":{"type":"number","example":150}},"description":"Position of the note on the canvas."},"size":{"type":"object","properties":{"width":{"type":"number","example":200},"height":{"type":"number","example":100}},"description":"Dimensions of the note on the canvas."}}},"description":"Visual annotations displayed on the flow canvas."},{"type":"null","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here."},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300},"y":{"type":"number","example":150}},"description":"Position of the note on the canvas."},"size":{"type":"object","properties":{"width":{"type":"number","example":200},"height":{"type":"number","example":100}},"description":"Dimensions of the note on the canvas."}}},"description":"Visual annotations displayed on the flow canvas."}]}}},"description":"Local components embedded within the conversation flow.","uniqueKey":"components.oneOf.1","typeLabel":"null"}],"uniqueKey":"components","typeLabel":"object[] | null"},"start_node_id":{"oneOf":[{"type":"string","example":"start","description":"ID of the start node in the conversation flow.","uniqueKey":"start_node_id.oneOf.0","typeLabel":"string"},{"type":"null","example":"start","description":"ID of the start node in the conversation flow.","uniqueKey":"start_node_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"start_node_id","typeLabel":"string | null"},"default_dynamic_variables":{"oneOf":[{"type":"object","additionalProperties":{"type":"string","uniqueKey":"default_dynamic_variables.oneOf.0.additionalProperties","typeLabel":"string"},"example":{"company_name":"Retell Inc","support_hours":"9 AM - 5 PM"},"description":"Default dynamic variables that can be referenced throughout the conversation flow.","uniqueKey":"default_dynamic_variables.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"type":"string","uniqueKey":"default_dynamic_variables.oneOf.1.additionalProperties","typeLabel":"string"},"example":{"company_name":"Retell Inc","support_hours":"9 AM - 5 PM"},"description":"Default dynamic variables that can be referenced throughout the conversation flow.","uniqueKey":"default_dynamic_variables.oneOf.1","typeLabel":"null"}],"uniqueKey":"default_dynamic_variables","typeLabel":"object | null"},"begin_tag_display_position":{"oneOf":[{"type":"object","properties":{"x":{"type":"number","example":100,"uniqueKey":"begin_tag_display_position.oneOf.0.x","typeLabel":"number"},"y":{"type":"number","example":200,"uniqueKey":"begin_tag_display_position.oneOf.0.y","typeLabel":"number"}},"description":"Display position for the begin tag in the frontend.","uniqueKey":"begin_tag_display_position.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"x":{"type":"number","example":100},"y":{"type":"number","example":200}},"description":"Display position for the begin tag in the frontend.","uniqueKey":"begin_tag_display_position.oneOf.1","typeLabel":"null"}],"uniqueKey":"begin_tag_display_position","typeLabel":"object | null"},"notes":{"oneOf":[{"type":"array","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123","isRequired":true,"uniqueKey":"notes.oneOf.0.items.[INDEX].id","typeLabel":"string"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here.","isRequired":true,"uniqueKey":"notes.oneOf.0.items.[INDEX].content","typeLabel":"string"},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300,"uniqueKey":"notes.oneOf.0.items.[INDEX].display_position.x","typeLabel":"number"},"y":{"type":"number","example":150,"uniqueKey":"notes.oneOf.0.items.[INDEX].display_position.y","typeLabel":"number"}},"description":"Position of the note on the canvas.","isRequired":true,"uniqueKey":"notes.oneOf.0.items.[INDEX].display_position","typeLabel":"object"},"size":{"type":"object","properties":{"width":{"type":"number","example":200,"uniqueKey":"notes.oneOf.0.items.[INDEX].size.width","typeLabel":"number"},"height":{"type":"number","example":100,"uniqueKey":"notes.oneOf.0.items.[INDEX].size.height","typeLabel":"number"}},"description":"Dimensions of the note on the canvas.","isRequired":true,"uniqueKey":"notes.oneOf.0.items.[INDEX].size","typeLabel":"object"}},"uniqueKey":"notes.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Visual annotations displayed on the flow canvas.","uniqueKey":"notes.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here."},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300},"y":{"type":"number","example":150}},"description":"Position of the note on the canvas."},"size":{"type":"object","properties":{"width":{"type":"number","example":200},"height":{"type":"number","example":100}},"description":"Dimensions of the note on the canvas."}}},"description":"Visual annotations displayed on the flow canvas.","uniqueKey":"notes.oneOf.1","typeLabel":"null"}],"uniqueKey":"notes","typeLabel":"object[] | null"},"mcps":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"mcps.oneOf.0.items.[INDEX].name","typeLabel":"string"},"url":{"type":"string","description":"The URL of the MCP server.","isRequired":true,"uniqueKey":"mcps.oneOf.0.items.[INDEX].url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"mcps.oneOf.0.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request.","uniqueKey":"mcps.oneOf.0.items.[INDEX].headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"mcps.oneOf.0.items.[INDEX].query_params.additionalProperties","typeLabel":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL.","uniqueKey":"mcps.oneOf.0.items.[INDEX].query_params","typeLabel":"object"},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes).","uniqueKey":"mcps.oneOf.0.items.[INDEX].timeout_ms","typeLabel":"integer"}},"required":["name","url"],"uniqueKey":"mcps.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"A list of MCP server configurations to use for this conversation flow.","uniqueKey":"mcps.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","description":"The URL of the MCP server."},"headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request."},"query_params":{"type":"object","additionalProperties":{"type":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL."},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes)."}},"required":["name","url"]},"description":"A list of MCP server configurations to use for this conversation flow.","uniqueKey":"mcps.oneOf.1","typeLabel":"null"}],"uniqueKey":"mcps","typeLabel":"object[] | null"},"is_transfer_cf":{"oneOf":[{"type":"boolean","example":false,"description":"Whether this conversation flow is used for warm transfer. Can only be set at creation, and is ignored on update.","uniqueKey":"is_transfer_cf.oneOf.0","typeLabel":"boolean"},{"type":"null","example":false,"description":"Whether this conversation flow is used for warm transfer. Can only be set at creation, and is ignored on update.","uniqueKey":"is_transfer_cf.oneOf.1","typeLabel":"null"}],"uniqueKey":"is_transfer_cf","typeLabel":"boolean | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"start_speaker":"agent","nodes":[{"id":"start","type":"conversation","instruction":{"type":"prompt","text":"Greet the customer and ask how you can help them."},"edges":[{"id":"edge_1","transition_condition":{"type":"prompt","prompt":"Customer wants to book appointment"},"destination_node_id":"book_appointment"}]}],"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,"tool_call_strict_mode":true,"knowledge_base_ids":["kb_001","kb_002"],"kb_config":{"top_k":3,"filter_score":0.6},"begin_after_user_silence_ms":2000,"global_prompt":"You are a helpful customer service agent.","flex_mode":false,"tools":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"components":[{"name":"Customer Information Collector","nodes":[{"id":"collect_info","type":"conversation","instruction":{"type":"prompt","text":"Ask the customer for their name and contact information."}}],"flex_mode":false,"tools":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"mcps":[{"name":"\u003cstring>","url":"\u003cstring>","headers":{"Authorization":"Bearer 1234567890"},"query_params":{"index":"1","key":"value"},"timeout_ms":123}],"start_node_id":"collect_info","begin_tag_display_position":{"x":100,"y":200},"notes":[{"id":"note_abc123","content":"Remember to handle edge cases here.","display_position":{"x":300,"y":150},"size":{"width":200,"height":100}}]}],"start_node_id":"start","default_dynamic_variables":{"company_name":"Retell Inc","support_hours":"9 AM - 5 PM"},"begin_tag_display_position":{"x":100,"y":200},"notes":[{"id":"note_abc123","content":"Remember to handle edge cases here.","display_position":{"x":300,"y":150},"size":{"width":200,"height":100}}],"mcps":[{"name":"\u003cstring>","url":"\u003cstring>","headers":{"Authorization":"Bearer 1234567890"},"query_params":{"index":"1","key":"value"},"timeout_ms":123}],"is_transfer_cf":false}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"07cfa96d-6660-4ac8-a8f9-736fd35cbf22":{"description":"Successfully created a conversation flow","content":{"application/json":{"schema":{"type":"object","description":"Override properties for conversation flow configuration in agent override requests.","required":["conversation_flow_id","version","last_modification_timestamp"],"properties":{"conversation_flow_id":{"type":"string","description":"Unique identifier for the conversation flow","isRequired":true,"uniqueKey":"conversation_flow_id","typeLabel":"string"},"version":{"type":"integer","description":"Version number of the conversation flow","isRequired":true,"uniqueKey":"version","typeLabel":"integer"},"last_modification_timestamp":{"type":"integer","example":1703413636133,"description":"Last modification timestamp (milliseconds since epoch). Either the time of last update or creation if no updates available.","isRequired":true,"uniqueKey":"last_modification_timestamp","typeLabel":"integer"},"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":"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":"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":"model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"uniqueKey":"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":"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":"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":"model_config.oneOf.0.backup.oneOf.0.kick_in_timeout_ms","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"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":"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":"model_config.oneOf.0.backup.oneOf.2","typeLabel":"null"}],"uniqueKey":"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":"model_config.oneOf.0.temperature","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"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":"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":"model_config.oneOf.1.primary.model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"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":"model_config.oneOf.1.temperature","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"model_config.oneOf.1","typeLabel":"object"}],"uniqueKey":"model_config","typeLabel":"object"},"backup_model":{"oneOf":[{"type":"object","description":"Backup models are supported only for call agents. Response engines with a backup model cannot be used by chat agents.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","description":"Type of model choice","enum":["cascading"],"isRequired":true,"uniqueKey":"backup_model.oneOf.0.type","typeLabel":"enum\u003cstring>"},"model":{"type":"string","description":"The LLM model to use","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"],"isRequired":true,"uniqueKey":"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":"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":"backup_model.oneOf.0.ultrafast","typeLabel":"boolean"},"backup_kick_in_timeout":{"type":"integer","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.","maximum":60000,"minimum":300,"uniqueKey":"backup_model.oneOf.0.backup_kick_in_timeout","typeLabel":"integer"}},"uniqueKey":"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.","required":["type","model"],"enum":[null],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"backup_model.oneOf.1.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":"backup_model.oneOf.1.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"backup_model.oneOf.1.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":"backup_model.oneOf.1.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":"backup_model.oneOf.1.backup_kick_in_timeout","typeLabel":"integer"}},"uniqueKey":"backup_model.oneOf.1","typeLabel":"object"},{"type":"object","description":"Backup models are supported only for call agents. Response engines with a backup model cannot be used by chat agents.","required":["type","model"],"enum":[null],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"backup_model.oneOf.2.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":"backup_model.oneOf.2.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"backup_model.oneOf.2.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":"backup_model.oneOf.2.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":"backup_model.oneOf.2.backup_kick_in_timeout","typeLabel":"integer"}},"uniqueKey":"backup_model.oneOf.2","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],"deprecated":true,"uniqueKey":"backup_model.oneOf.3","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],"deprecated":true,"uniqueKey":"backup_model.oneOf.4","typeLabel":"null"}],"uniqueKey":"backup_model","typeLabel":"object · object · 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":"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":"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":"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":"model_choice.oneOf.0.ultrafast","typeLabel":"boolean"}},"uniqueKey":"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":"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":"model_choice.oneOf.1.model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"model_choice.oneOf.1","typeLabel":"object"}],"uniqueKey":"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":"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":"model_temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"model_temperature","typeLabel":"number | null"},"tool_call_strict_mode":{"oneOf":[{"type":"boolean","example":true,"description":"Whether to use strict mode for tool calls. Only applicable when using certain supported models.","uniqueKey":"tool_call_strict_mode.oneOf.0","typeLabel":"boolean"},{"type":"null","example":true,"description":"Whether to use strict mode for tool calls. Only applicable when using certain supported models.","uniqueKey":"tool_call_strict_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"tool_call_strict_mode","typeLabel":"boolean | null"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"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":"knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"kb_config.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval.","uniqueKey":"kb_config","typeLabel":"object"},"start_speaker":{"type":"string","enum":["user","agent"],"example":"agent","description":"Who starts the conversation - user or agent.","uniqueKey":"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":"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":"begin_after_user_silence_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"begin_after_user_silence_ms","typeLabel":"integer | null"},"global_prompt":{"oneOf":[{"type":"string","example":"You are a helpful customer service agent.","description":"Global prompt used in every node of the conversation flow.","uniqueKey":"global_prompt.oneOf.0","typeLabel":"string"},{"type":"null","example":"You are a helpful customer service agent.","description":"Global prompt used in every node of the conversation flow.","uniqueKey":"global_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"global_prompt","typeLabel":"string | null"},"flex_mode":{"oneOf":[{"type":"boolean","example":false,"description":"If enabled, the whole conversation flow will be converted as a Single Prompt agent.","uniqueKey":"flex_mode.oneOf.0","typeLabel":"boolean"},{"type":"null","example":false,"description":"If enabled, the whole conversation flow will be converted as a Single Prompt agent.","uniqueKey":"flex_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"flex_mode","typeLabel":"boolean | null"},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["tool_id","type","name","url"],"properties":{"type":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.url","typeLabel":"string"},"tool_id":{"type":"string","description":"Unique identifier for the tool","isRequired":true,"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.tool_id","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST.","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.method","typeLabel":"enum\u003cstring>"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request.","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.query_params.additionalProperties","typeLabel":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL.","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.parameters.properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.parameters.\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"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":"tools.oneOf.0.items.[INDEX].oneOf.0.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.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":"tools.oneOf.0.items.[INDEX].oneOf.0.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["tool_id","type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"],"isRequired":true,"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.app_tool_template_name","typeLabel":"string"},"tool_id":{"type":"string","description":"Unique identifier for the tool","isRequired":true,"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.tool_id","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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.parameters.items.[INDEX].properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.parameters.items.[INDEX].\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"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":"tools.oneOf.0.items.[INDEX].oneOf.1.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.fields.items.[INDEX]","typeLabel":"string"},"description":"Not used at runtime; stored and returned as-is for the UI.","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.fields","typeLabel":"string[]"}},"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1.fields","typeLabel":"string[]"}},"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1","typeLabel":"object"}],"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.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":"tools.oneOf.0.items.[INDEX].oneOf.1.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"tools.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Tools available in the conversation flow.","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"uniqueKey":"tools.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"oneOf":[{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}},{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}}]},"description":"Tools available in the conversation flow.","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"uniqueKey":"tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"tools","typeLabel":"object[] | null"},"components":{"oneOf":[{"type":"array","items":{"type":"object","required":["name","nodes"],"properties":{"name":{"type":"string","description":"Name of the component","example":"Customer Information Collector","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].name","typeLabel":"string"},"nodes":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.id","typeLabel":"string"},"type":{"type":"string","enum":["conversation"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.0.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.1.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.model_choice","typeLabel":"object"},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.interruption_sensitivity.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.interruption_sensitivity.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.interruption_sensitivity","typeLabel":"number | null"},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.responsiveness.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.responsiveness.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.responsiveness","typeLabel":"number | null"},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.voice_speed.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0.5,"maximum":2,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.voice_speed.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.voice_speed","typeLabel":"number | null"},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption","typeLabel":"boolean | null"},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_trigger_ms.oneOf.0","typeLabel":"number"},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_trigger_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_trigger_ms","typeLabel":"number | null"},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_max_count.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_max_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.reminder_max_count","typeLabel":"integer | null"},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.stt_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.stt_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.stt_mode","typeLabel":"enum\u003cstring> | null"},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is custom.","properties":{"provider":{"type":"string","description":"The STT provider to use.","enum":["azure","deepgram","soniox","assemblyai","muse"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.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, and 100 for Muse. Muse detects turn ends itself and ignores this value.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.0.endpointing_ms","typeLabel":"integer"}},"required":["provider","endpointing_ms"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.custom_stt_config","typeLabel":"object | null"},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.0.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.boosted_keywords","typeLabel":"string[] | null"},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skip_response_edge","typeLabel":"object"},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.skippable","typeLabel":"boolean"},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.always_edge","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.else_edge","typeLabel":"object"},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the conversation should be.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_conversation_examples","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.finetune_transition_examples","typeLabel":"object[]"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.kb_config.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0.kb_config","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.id","typeLabel":"string"},"type":{"type":"string","enum":["subagent"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.instruction.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.instruction.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.model_choice","typeLabel":"object"},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.interruption_sensitivity.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.interruption_sensitivity.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.interruption_sensitivity","typeLabel":"number | null"},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.responsiveness.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.responsiveness.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.responsiveness","typeLabel":"number | null"},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.voice_speed.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0.5,"maximum":2,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.voice_speed.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.voice_speed","typeLabel":"number | null"},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption","typeLabel":"boolean | null"},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_trigger_ms.oneOf.0","typeLabel":"number"},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_trigger_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_trigger_ms","typeLabel":"number | null"},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_max_count.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_max_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.reminder_max_count","typeLabel":"integer | null"},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.stt_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.stt_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.stt_mode","typeLabel":"enum\u003cstring> | null"},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is custom.","properties":{"provider":{"type":"string","description":"The STT provider to use.","enum":["azure","deepgram","soniox","assemblyai","muse"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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, and 100 for Muse. Muse detects turn ends itself and ignores this value.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.0.endpointing_ms","typeLabel":"integer"}},"required":["provider","endpointing_ms"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.custom_stt_config","typeLabel":"object | null"},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.0.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.boosted_keywords","typeLabel":"string[] | null"},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skip_response_edge","typeLabel":"object"},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.skippable","typeLabel":"boolean"},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.always_edge","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.else_edge","typeLabel":"object"},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the conversation should be.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_conversation_examples","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.finetune_transition_examples","typeLabel":"object[]"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.kb_config.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.kb_config","typeLabel":"object"},"tool_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tool_ids","typeLabel":"string[] | null"},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.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 transitions). 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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. Only applicable when speak_during_execution is true.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges).","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.name","typeLabel":"string"},"transfer_destination":{"type":"any","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.transfer_destination","typeLabel":"any"},"transfer_option":{"type":"any","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.transfer_option","typeLabel":"any"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.description","typeLabel":"string"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.ignore_e164_validation","typeLabel":"boolean"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.custom_sip_headers.additionalProperties","typeLabel":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. Only applicable when speak_during_execution is true.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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).","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.name","typeLabel":"string"},"type":{"type":"string","enum":["agent_swap"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.agent_id","typeLabel":"string"},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.post_call_analysis_setting","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.description","typeLabel":"string"},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.agent_version","typeLabel":"any"},"speak_during_execution":{"type":"boolean","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.execution_message_type","typeLabel":"enum\u003cstring>"},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.webhook_setting","typeLabel":"enum\u003cstring>"},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.keep_current_voice","typeLabel":"boolean"},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.keep_current_language","typeLabel":"boolean"},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.use_swap_agent_max_duration","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.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 transitions). 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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.description","typeLabel":"string"},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive).","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.delay_ms","typeLabel":"integer"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.name","typeLabel":"string"},"type":{"type":"string","enum":["send_sms"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"sms_content":{"type":"any","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_content","typeLabel":"any"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.execution_message_type","typeLabel":"enum\u003cstring>"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_sender","typeLabel":"any"},"sms_destination":{"type":"any","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_destination","typeLabel":"any"},"speak_after_execution":{"type":"boolean","default":true,"description":"Whether the agent should speak after the SMS tool finishes execution.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.speak_after_execution","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["type","name","url"],"properties":{"type":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.url","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.description","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.method","typeLabel":"enum\u003cstring>"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.query_params.additionalProperties","typeLabel":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.parameters.properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.parameters.\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["type","name","code"],"properties":{"type":{"type":"string","enum":["code"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.name","typeLabel":"string"},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.code","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.description","typeLabel":"string"},"variables":{"type":"array","items":{"type":"any","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.variables.items.[INDEX]","typeLabel":"any"},"description":"The variables to be extracted.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.variables","typeLabel":"any[]"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.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 transitions). 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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.description","typeLabel":"string"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.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 transitions). 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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.description","typeLabel":"string"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the MCP tool.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the MCP tool.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.description","typeLabel":"string"},"mcp_id":{"type":"string","description":"Unique id of the MCP.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.mcp_id","typeLabel":"string"},"input_schema":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.input_schema.additionalProperties","typeLabel":"string"},"description":"The input schema of the MCP tool.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.input_schema","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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.response_variables.additionalProperties","typeLabel":"string"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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 MCP tool is executing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","required":["type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.parameters.items.[INDEX].properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.parameters.items.[INDEX].\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.response_variables","typeLabel":"object"},"output_selection":{"type":"any","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.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.output_selection","typeLabel":"any"},"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. 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\"."}}},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"]},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges)."},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"transfer_destination":{"type":"any"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call."},"transfer_option":{"type":"any"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. 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\"."}}},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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)."},"type":{"type":"string","enum":["agent_swap"]},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to."},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version."},"speak_during_execution":{"type":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap."},"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\"."},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap."},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source."},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false."},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false."},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive)."}}},{"type":"object","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":{"type":"any"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number."},"sms_destination":{"type":"any","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."}}},{"type":"object","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."}}},{"type":"object","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."}}},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"]},"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 the tool does, sometimes can also include information about when to call the tool."},"variables":{"type":"array","items":{"type":"any"},"description":"The variables to be extracted."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. 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\"."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. 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\"."}}},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"]},"mcp_id":{"type":"string","description":"Unique id of the MCP."},"name":{"type":"string","description":"Name of the MCP tool."},"description":{"type":"string","description":"Description of the MCP tool."},"input_schema":{"type":"object","additionalProperties":{"type":"string"},"description":"The input schema of the MCP tool."},"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"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response"},"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\"."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this MCP tool is executing."}}},{"type":"object","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":{"type":"any","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."},"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."}}}]},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1.tools","typeLabel":"object[] | null"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.id","typeLabel":"string"},"type":{"type":"string","enum":["end"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.model_choice","typeLabel":"object"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2.instruction","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","tool_id","tool_type","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.id","typeLabel":"string"},"type":{"type":"string","enum":["function"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"tool_id":{"type":"string","description":"Tool ID for function nodes","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.tool_id","typeLabel":"string"},"tool_type":{"type":"string","enum":["local","shared"],"description":"Tool type for function nodes","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.tool_type","typeLabel":"enum\u003cstring>"},"wait_for_result":{"type":"boolean","description":"Whether to wait for tool result","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Whether to speak during tool execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this function executes.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["type","code","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.id","typeLabel":"string"},"type":{"type":"string","enum":["code"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.code","typeLabel":"string"},"wait_for_result":{"type":"boolean","description":"Whether to wait for code execution result","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.model_choice","typeLabel":"object"},"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Whether to speak during code execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while code executes.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["type","transfer_destination","transfer_option","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.id","typeLabel":"string"},"type":{"type":"string","enum":["transfer_call"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"transfer_destination":{"oneOf":[{"type":"object","required":["type","number"],"properties":{"type":{"type":"string","enum":["predefined"],"description":"The type of transfer destination.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.type","typeLabel":"enum\u003cstring>"},"number":{"type":"string","description":"The number to transfer to in E.164 format or a dynamic variable like {{transfer_number}}.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.number","typeLabel":"string"},"extension":{"type":"string","description":"Extension digits to dial after the main number connects. Sent via DTMF. Allow digits, '*', '#', or a dynamic variable like {{extension}}.","example":"123*456#","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.extension","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["inferred"],"description":"The type of transfer destination.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"The prompt to be used to help infer the transfer destination. The model will take the global prompt, the call transcript, and this prompt together to deduce the right number to transfer to. Can contain dynamic variables.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_destination","typeLabel":"object"},"transfer_option":{"oneOf":[{"type":"object","title":"Cold Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["cold_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring. Requires the telephony side to support caller id override. Retell Twilio numbers support this option. This parameter takes effect only when `cold_transfer_mode` is set to `sip_invite`. When using `sip_refer`, this option is not available. Retell Twilio numbers always use user's number as the caller id when using `sip refer` cold transfer mode.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.show_transferee_as_caller","typeLabel":"boolean"},"cold_transfer_mode":{"type":"string","enum":["sip_refer","sip_invite"],"description":"The mode of the cold transfer. If set to `sip_refer`, will use SIP REFER to transfer the call. If set to `sip_invite`, will use SIP INVITE to transfer the call.","default":"sip_invite","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.cold_transfer_mode","typeLabel":"enum\u003cstring>"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.transfer_ring_duration_ms","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0","typeLabel":"Cold Transfer · object"},{"type":"object","title":"Warm Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["warm_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.show_transferee_as_caller","typeLabel":"boolean"},"agent_detection_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The time to wait before considering transfer fails.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.agent_detection_timeout_ms","typeLabel":"number"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.transfer_ring_duration_ms","typeLabel":"integer"},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.on_hold_music","typeLabel":"enum\u003cstring>"},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.custom_on_hold_music_asset_id","typeLabel":"string"},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option","typeLabel":"object"},"private_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option","typeLabel":"object"},"ivr_option":{"type":"object","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option.prompt","typeLabel":"string"}},"description":"IVR navigation option to run when doing human detection. This prompt will guide the AI on how to navigate the IVR system.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option","typeLabel":"object"},"opt_out_human_detection":{"type":"boolean","description":"If set to true, will not perform human detection for the transfer. Default to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.opt_out_human_detection","typeLabel":"boolean"},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.enable_bridge_audio_cue","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1","typeLabel":"Warm Transfer · object"},{"type":"object","title":"Agentic Warm Transfer","required":["type","agentic_transfer_config"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["agentic_warm_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.type","typeLabel":"enum\u003cstring>"},"agentic_transfer_config":{"type":"object","description":"Configuration for agentic warm transfer. Required for agentic warm transfer.","properties":{"transfer_agent":{"type":"object","description":"The agent that will mediate the transfer decision.","properties":{"agent_id":{"type":"string","minLength":1,"description":"The agent ID of the transfer agent. This agent must have isTransferAgent set to true and should use bridge_transfer and cancel_transfer tools (for Retell LLM) or BridgeTransferNode and CancelTransferNode (for Conversation Flow).","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_id","typeLabel":"string"},"agent_version":{"oneOf":[{"type":"string","description":"The version of the transfer agent to use.","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version.oneOf.0","typeLabel":"string"},{"type":"integer","description":"The version of the transfer agent to use.","minimum":0,"example":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version","typeLabel":"string | integer"}},"required":["agent_id","agent_version"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent","typeLabel":"object"},"transfer_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The maximum time to wait for the transfer agent to make a decision, in milliseconds. Defaults to 30000 (30 seconds).","default":30000,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_timeout_ms","typeLabel":"number"},"action_on_timeout":{"type":"string","enum":["bridge_transfer","cancel_transfer"],"description":"The action to take when the transfer agent times out without making a decision. Defaults to cancel_transfer.","default":"cancel_transfer","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.action_on_timeout","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config","typeLabel":"object"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.show_transferee_as_caller","typeLabel":"boolean"},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.on_hold_music","typeLabel":"enum\u003cstring>"},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.custom_on_hold_music_asset_id","typeLabel":"string"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.transfer_ring_duration_ms","typeLabel":"integer"},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option","typeLabel":"object"},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.enable_bridge_audio_cue","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2","typeLabel":"Agentic Warm Transfer · object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.transfer_option","typeLabel":"Cold Transfer · object | Warm Transfer · object | Agentic Warm Transfer · object"},"edge":{"type":"object","description":"Transition followed by a transfer_call or agent_swap node when the transfer fails. Evaluated after the transfer attempt finishes.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.model_choice","typeLabel":"object"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.ignore_e164_validation","typeLabel":"boolean"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers for transfer calls","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5.instruction","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.id","typeLabel":"string"},"type":{"type":"string","enum":["press_digit"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.instruction.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.instruction.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.model_choice","typeLabel":"object"},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.delay_ms","typeLabel":"integer"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.id","typeLabel":"string"},"type":{"type":"string","enum":["branch"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.else_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.model_choice","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.edges","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["type","instruction","success_edge","failed_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.id","typeLabel":"string"},"type":{"type":"string","enum":["sms"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.0.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.1.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","template"],"properties":{"type":{"type":"string","enum":["template"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.2.type","typeLabel":"enum\u003cstring>"},"template":{"type":"string","enum":["info_collection"],"description":"The template to use for the instruction. \"info_collection\" sends a predefined message requesting information from the user.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.2.template","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.instruction","typeLabel":"object"},"success_edge":{"type":"object","description":"Transition followed by an SMS node after the send operation reports success.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Sent successfully\" for SMS success edge","minLength":1,"enum":["Sent successfully"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Sent successfully"],"description":"Must be \"Sent successfully\" for SMS success edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.success_edge","typeLabel":"object"},"failed_edge":{"type":"object","description":"Transition followed by an SMS node when generating the message content or sending the message fails.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Failed to send\" for SMS failed edge","minLength":1,"enum":["Failed to send"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Failed to send"],"description":"Must be \"Failed to send\" for SMS failed edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.failed_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.model_choice","typeLabel":"object"},"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.3","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.1.type","typeLabel":"enum\u003cstring>"},"phone_number":{"type":"string","description":"Destination phone number in E.164 format.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.1.ignore_e164_validation","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.3","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8.sms_destination","typeLabel":"Destination Customer Number · object | Destination Phone Number · object | object | null"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["type","variables","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.id","typeLabel":"string"},"type":{"type":"string","enum":["extract_dynamic_variables"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"variables":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["string"],"description":"Type of the variable to extract.","example":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"customer_name","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"The name of the customer.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.description","typeLabel":"string"},"examples":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.conditional_prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","name","description","choices"],"properties":{"type":{"type":"string","enum":["enum"],"description":"Type of the variable to extract.","example":"enum","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"product_rating","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"Rating of the product.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.description","typeLabel":"string"},"choices":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.conditional_prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["boolean"],"description":"Type of the variable to extract.","example":"boolean","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"is_converted","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"Whether the customer converted.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.conditional_prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["number"],"description":"Type of the variable to extract.","example":"number","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"order_count","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3.conditional_prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.variables","typeLabel":"object[]"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.model_choice","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this extract step executes.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["type","agent_id","post_call_analysis_setting","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.id","typeLabel":"string"},"type":{"type":"string","enum":["agent_swap"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"agent_id":{"type":"string","description":"The ID of the agent to swap to","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.agent_id","typeLabel":"string"},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.post_call_analysis_setting","typeLabel":"enum\u003cstring>"},"edge":{"type":"object","description":"Edge to transition to if agent swap fails","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.model_choice","typeLabel":"object"},"agent_version":{"oneOf":[{"type":"string","description":"The version of the agent to swap to. If not specified, will use the latest version","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.agent_version.oneOf.0","typeLabel":"string"},{"type":"integer","description":"The version of the agent to swap to. If not specified, will use the latest version","minimum":0,"example":1,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.agent_version.oneOf.1","typeLabel":"integer"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.agent_version","typeLabel":"string | integer"},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.webhook_setting","typeLabel":"enum\u003cstring>"},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.keep_current_voice","typeLabel":"boolean"},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.keep_current_language","typeLabel":"boolean"},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.use_swap_agent_max_duration","typeLabel":"boolean"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10.instruction","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","required":["type","mcp_id","mcp_tool_name","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.id","typeLabel":"string"},"type":{"type":"string","enum":["mcp"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.type","typeLabel":"enum\u003cstring>"},"mcp_id":{"type":"string","description":"Unique ID of the MCP server","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.mcp_id","typeLabel":"string"},"mcp_tool_name":{"type":"string","description":"Name of the MCP tool to call","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.mcp_tool_name","typeLabel":"string"},"wait_for_result":{"type":"boolean","description":"If true, will wait for result before transitioning to next node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.model_choice","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.else_edge","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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.response_variables.additionalProperties","typeLabel":"string"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while MCP tool executes.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.enable_typing_sound","typeLabel":"boolean"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.11","typeLabel":"object"},{"type":"object","required":["type","component_id","component_type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.id","typeLabel":"string"},"type":{"type":"string","enum":["component"],"description":"Type of the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.type","typeLabel":"enum\u003cstring>"},"component_id":{"type":"string","description":"The reference ID of the component","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.component_id","typeLabel":"string"},"component_type":{"type":"string","enum":["local","shared"],"description":"Type of component:\n- local: stored in conversation flow's components array\n- shared: stored in stand-alone conversation-flow-component table\n","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.component_type","typeLabel":"enum\u003cstring>"},"else_edge":{"type":"object","description":"Default edge when no other conditions are met","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.else_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.display_position","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges.items.[INDEX]","typeLabel":"object"},"description":"Array of edges for conditional transitions","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.edges","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.12","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.id","typeLabel":"string"},"type":{"type":"string","enum":["bridge_transfer"],"description":"Type of the node - initiates a warm transfer by bridging the call","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13.instruction","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.13","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.id","typeLabel":"string"},"type":{"type":"string","enum":["cancel_transfer"],"description":"Type of the node - cancels the warm transfer and ends the transfer agent call","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_choice.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":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14.instruction","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX].oneOf.14","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].nodes.items.[INDEX]","typeLabel":"object"},"description":"Nodes that make up the component","example":[{"id":"collect_info","type":"conversation","instruction":{"type":"prompt","text":"Ask the customer for their name and contact information."}}],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].nodes","typeLabel":"object[]"},"flex_mode":{"oneOf":[{"type":"boolean","example":false,"description":"If enabled, the whole component will be converted as a Single Prompt agent.","uniqueKey":"components.oneOf.0.items.[INDEX].flex_mode.oneOf.0","typeLabel":"boolean"},{"type":"null","example":false,"description":"If enabled, the whole component will be converted as a Single Prompt agent.","uniqueKey":"components.oneOf.0.items.[INDEX].flex_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].flex_mode","typeLabel":"boolean | null"},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["tool_id","type","name","url"],"properties":{"type":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.url","typeLabel":"string"},"tool_id":{"type":"string","description":"Unique identifier for the tool","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.tool_id","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST.","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.method","typeLabel":"enum\u003cstring>"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request.","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.query_params.additionalProperties","typeLabel":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL.","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.parameters.properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.parameters.\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["tool_id","type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"],"isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.app_tool_template_name","typeLabel":"string"},"tool_id":{"type":"string","description":"Unique identifier for the tool","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.tool_id","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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.parameters.items.[INDEX].properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.parameters.items.[INDEX].\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.fields.items.[INDEX]","typeLabel":"string"},"description":"Not used at runtime; stored and returned as-is for the UI.","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.0.fields","typeLabel":"string[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1.mode","typeLabel":"enum\u003cstring>"},"fields":{"type":"array","items":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1.fields","typeLabel":"string[]"}},"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.output_selection.oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.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":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Tools available within the component","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"oneOf":[{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}},{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}}]},"description":"Tools available within the component","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"uniqueKey":"components.oneOf.0.items.[INDEX].tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].tools","typeLabel":"object[] | null"},"mcps":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].name","typeLabel":"string"},"url":{"type":"string","description":"The URL of the MCP server.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request.","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].query_params.additionalProperties","typeLabel":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL.","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].query_params","typeLabel":"object"},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes).","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX].timeout_ms","typeLabel":"integer"}},"required":["name","url"],"uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"A list of MCP server configurations to use for this component","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","description":"The URL of the MCP server."},"headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request."},"query_params":{"type":"object","additionalProperties":{"type":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL."},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes)."}},"required":["name","url"]},"description":"A list of MCP server configurations to use for this component","uniqueKey":"components.oneOf.0.items.[INDEX].mcps.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].mcps","typeLabel":"object[] | null"},"start_node_id":{"oneOf":[{"type":"string","description":"ID of the starting node","example":"collect_info","uniqueKey":"components.oneOf.0.items.[INDEX].start_node_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"ID of the starting node","example":"collect_info","uniqueKey":"components.oneOf.0.items.[INDEX].start_node_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].start_node_id","typeLabel":"string | null"},"begin_tag_display_position":{"oneOf":[{"type":"object","properties":{"x":{"type":"number","example":100,"uniqueKey":"components.oneOf.0.items.[INDEX].begin_tag_display_position.oneOf.0.x","typeLabel":"number"},"y":{"type":"number","example":200,"uniqueKey":"components.oneOf.0.items.[INDEX].begin_tag_display_position.oneOf.0.y","typeLabel":"number"}},"description":"Display position for the begin tag in the frontend","uniqueKey":"components.oneOf.0.items.[INDEX].begin_tag_display_position.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"x":{"type":"number","example":100},"y":{"type":"number","example":200}},"description":"Display position for the begin tag in the frontend","uniqueKey":"components.oneOf.0.items.[INDEX].begin_tag_display_position.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].begin_tag_display_position","typeLabel":"object | null"},"notes":{"oneOf":[{"type":"array","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].id","typeLabel":"string"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].content","typeLabel":"string"},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].display_position.x","typeLabel":"number"},"y":{"type":"number","example":150,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].display_position.y","typeLabel":"number"}},"description":"Position of the note on the canvas.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].display_position","typeLabel":"object"},"size":{"type":"object","properties":{"width":{"type":"number","example":200,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].size.width","typeLabel":"number"},"height":{"type":"number","example":100,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].size.height","typeLabel":"number"}},"description":"Dimensions of the note on the canvas.","isRequired":true,"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX].size","typeLabel":"object"}},"uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Visual annotations displayed on the flow canvas.","uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here."},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300},"y":{"type":"number","example":150}},"description":"Position of the note on the canvas."},"size":{"type":"object","properties":{"width":{"type":"number","example":200},"height":{"type":"number","example":100}},"description":"Dimensions of the note on the canvas."}}},"description":"Visual annotations displayed on the flow canvas.","uniqueKey":"components.oneOf.0.items.[INDEX].notes.oneOf.1","typeLabel":"null"}],"uniqueKey":"components.oneOf.0.items.[INDEX].notes","typeLabel":"object[] | null"}},"uniqueKey":"components.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Local components embedded within the conversation flow.","uniqueKey":"components.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","required":["name","nodes"],"properties":{"name":{"type":"string","description":"Name of the component","example":"Customer Information Collector"},"flex_mode":{"oneOf":[{"type":"boolean","example":false,"description":"If enabled, the whole component will be converted as a Single Prompt agent."},{"type":"null","example":false,"description":"If enabled, the whole component will be converted as a Single Prompt agent."}]},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}},{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}}]},"description":"Tools available within the component","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}]},{"type":"null","items":{"oneOf":[{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}},{"type":"object","required":["tool_id","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."},"tool_id":{"type":"string","description":"Unique identifier for the tool"}}}]},"description":"Tools available within the component","example":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}]}]},"mcps":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","description":"The URL of the MCP server."},"headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request."},"query_params":{"type":"object","additionalProperties":{"type":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL."},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes)."}},"required":["name","url"]},"description":"A list of MCP server configurations to use for this component"},{"type":"null","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","description":"The URL of the MCP server."},"headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request."},"query_params":{"type":"object","additionalProperties":{"type":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL."},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes)."}},"required":["name","url"]},"description":"A list of MCP server configurations to use for this component"}]},"nodes":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null","minimum":0,"maximum":1}]},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null","minimum":0,"maximum":1}]},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2},{"type":"null","minimum":0.5,"maximum":2}]},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only."},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only."}]},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only."},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only."}]},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node."},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node."}]},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config."},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config."}]},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"]},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"]}]},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered."},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered."}]},"type":{"type":"string","enum":["conversation"],"description":"Type of the node"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled."},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the conversation should be."}}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation)."},{"type":"null","items":{"type":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation)."}]},"kb_config":{"type":"object","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 at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction."}}},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null","minimum":0,"maximum":1}]},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null","minimum":0,"maximum":1}]},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2},{"type":"null","minimum":0.5,"maximum":2}]},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only."},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only."}]},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only."},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only."}]},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node."},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node."}]},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config."},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config."}]},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"]},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"]}]},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered."},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered."}]},"type":{"type":"string","enum":["subagent"],"description":"Type of the node"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled."},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the conversation should be."}}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation)."},{"type":"null","items":{"type":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation)."}]},"kb_config":{"type":"object","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 at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction."},"tool_ids":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node."},{"type":"null","items":{"type":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node."}]},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. 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\"."}}},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"]},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges)."},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"transfer_destination":{"type":"any"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call."},"transfer_option":{"type":"any"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. 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\"."}}},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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)."},"type":{"type":"string","enum":["agent_swap"]},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to."},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version."},"speak_during_execution":{"type":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap."},"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\"."},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap."},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source."},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false."},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false."},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive)."}}},{"type":"object","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":{"type":"any"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number."},"sms_destination":{"type":"any","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."}}},{"type":"object","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."}}},{"type":"object","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."}}},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"]},"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 the tool does, sometimes can also include information about when to call the tool."},"variables":{"type":"array","items":{"type":"any"},"description":"The variables to be extracted."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. 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\"."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. 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\"."}}},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"]},"mcp_id":{"type":"string","description":"Unique id of the MCP."},"name":{"type":"string","description":"Name of the MCP tool."},"description":{"type":"string","description":"Description of the MCP tool."},"input_schema":{"type":"object","additionalProperties":{"type":"string"},"description":"The input schema of the MCP tool."},"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"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response"},"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\"."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this MCP tool is executing."}}},{"type":"object","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":{"type":"any","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."},"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."}}}]},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc."},{"type":"null","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. 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\"."}}},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"]},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges)."},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"transfer_destination":{"type":"any"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call."},"transfer_option":{"type":"any"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. 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\"."}}},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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)."},"type":{"type":"string","enum":["agent_swap"]},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to."},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version."},"speak_during_execution":{"type":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap."},"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\"."},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap."},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source."},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false."},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false."},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive)."}}},{"type":"object","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":{"type":"any"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number."},"sms_destination":{"type":"any","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."}}},{"type":"object","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."}}},{"type":"object","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."}}},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"]},"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 the tool does, sometimes can also include information about when to call the tool."},"variables":{"type":"array","items":{"type":"any"},"description":"The variables to be extracted."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. 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\"."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. 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\"."}}},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"]},"mcp_id":{"type":"string","description":"Unique id of the MCP."},"name":{"type":"string","description":"Name of the MCP tool."},"description":{"type":"string","description":"Description of the MCP tool."},"input_schema":{"type":"object","additionalProperties":{"type":"string"},"description":"The input schema of the MCP tool."},"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"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response"},"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\"."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this MCP tool is executing."}}},{"type":"object","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":{"type":"any","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."},"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."}}}]},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc."}]}}},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["end"],"description":"Type of the node"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]}}},{"type":"object","required":["type","tool_id","tool_type","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["function"],"description":"Type of the node"},"tool_id":{"type":"string","description":"Tool ID for function nodes"},"tool_type":{"type":"string","enum":["local","shared"],"description":"Tool type for function nodes"},"speak_during_execution":{"type":"boolean","description":"Whether to speak during tool execution"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]},"wait_for_result":{"type":"boolean","description":"Whether to wait for tool result"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this function executes."},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","code","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["code"],"description":"Type of the node"},"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":"Whether to speak during code execution"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]},"wait_for_result":{"type":"boolean","description":"Whether to wait for code execution result"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while code executes."},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","transfer_destination","transfer_option","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["transfer_call"],"description":"Type of the node"},"transfer_destination":{"oneOf":[{"type":"object","required":["type","number"],"properties":{"type":{"type":"string","enum":["predefined"],"description":"The type of transfer destination."},"number":{"type":"string","description":"The number to transfer to in E.164 format or a dynamic variable like {{transfer_number}}."},"extension":{"type":"string","description":"Extension digits to dial after the main number connects. Sent via DTMF. Allow digits, '*', '#', or a dynamic variable like {{extension}}.","example":"123*456#"}}},{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["inferred"],"description":"The type of transfer destination."},"prompt":{"type":"string","description":"The prompt to be used to help infer the transfer destination. The model will take the global prompt, the call transcript, and this prompt together to deduce the right number to transfer to. Can contain dynamic variables."}}}]},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers for transfer calls"},"transfer_option":{"oneOf":[{"type":"object","title":"Cold Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["cold_transfer"],"description":"The type of the transfer."},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring. Requires the telephony side to support caller id override. Retell Twilio numbers support this option. This parameter takes effect only when `cold_transfer_mode` is set to `sip_invite`. When using `sip_refer`, this option is not available. Retell Twilio numbers always use user's number as the caller id when using `sip refer` cold transfer mode."},"cold_transfer_mode":{"type":"string","enum":["sip_refer","sip_invite"],"description":"The mode of the cold transfer. If set to `sip_refer`, will use SIP REFER to transfer the call. If set to `sip_invite`, will use SIP INVITE to transfer the call.","default":"sip_invite"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`."}}},{"type":"object","title":"Warm Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["warm_transfer"],"description":"The type of the transfer."},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option."},"agent_detection_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The time to wait before considering transfer fails."},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`."},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset."},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456"},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables."}}},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"]},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables."}}}]},"private_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables."}}},{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"]},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables."}}}]},"ivr_option":{"type":"object","properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables."}},"description":"IVR navigation option to run when doing human detection. This prompt will guide the AI on how to navigate the IVR system."},"opt_out_human_detection":{"type":"boolean","description":"If set to true, will not perform human detection for the transfer. Default to false."},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true}}},{"type":"object","title":"Agentic Warm Transfer","required":["type","agentic_transfer_config"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["agentic_warm_transfer"],"description":"The type of the transfer."},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option."},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset."},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`."},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables."}}},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"]},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables."}}}]},"agentic_transfer_config":{"type":"object","description":"Configuration for agentic warm transfer. Required for agentic warm transfer.","properties":{"transfer_agent":{"type":"object","description":"The agent that will mediate the transfer decision.","properties":{"agent_id":{"type":"string","minLength":1,"description":"The agent ID of the transfer agent. This agent must have isTransferAgent set to true and should use bridge_transfer and cancel_transfer tools (for Retell LLM) or BridgeTransferNode and CancelTransferNode (for Conversation Flow)."},"agent_version":{"oneOf":[{"type":"string","description":"The version of the transfer agent to use.","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published"},{"type":"integer","description":"The version of the transfer agent to use.","minimum":0,"example":1}]}},"required":["agent_id","agent_version"]},"transfer_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The maximum time to wait for the transfer agent to make a decision, in milliseconds. Defaults to 30000 (30 seconds).","default":30000},"action_on_timeout":{"type":"string","enum":["bridge_transfer","cancel_transfer"],"description":"The action to take when the transfer agent times out without making a decision. Defaults to cancel_transfer.","default":"cancel_transfer"}}},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true}}}]},"edge":{"type":"object","description":"Transition followed by a transfer_call or agent_swap node when the transfer fails. Evaluated after the transfer attempt finishes.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]}}},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["press_digit"],"description":"Type of the node"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["branch"],"description":"Type of the node"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","instruction","success_edge","failed_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["sms"],"description":"Type of the node"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}},{"type":"object","required":["type","template"],"properties":{"type":{"type":"string","enum":["template"],"description":"Type of instruction"},"template":{"type":"string","enum":["info_collection"],"description":"The template to use for the instruction. \"info_collection\" sends a predefined message requesting information from the user."}}}]},"success_edge":{"type":"object","description":"Transition followed by an SMS node after the send operation reports success.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Sent successfully\" for SMS success edge","minLength":1,"enum":["Sent successfully"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Sent successfully"],"description":"Must be \"Sent successfully\" for SMS success edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"failed_edge":{"type":"object","description":"Transition followed by an SMS node when generating the message content or sending the message fails.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Failed to send\" for SMS failed edge","minLength":1,"enum":["Failed to send"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Failed to send"],"description":"Must be \"Failed to send\" for SMS failed edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"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."}]}}},{"type":"object","required":["type","variables","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["extract_dynamic_variables"],"description":"Type of the node"},"variables":{"type":"array","items":{"oneOf":[{"type":"object","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","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","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","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."}}}]}},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this extract step executes."},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","agent_id","post_call_analysis_setting","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["agent_swap"],"description":"Type of the node"},"agent_id":{"type":"string","description":"The ID of the agent to swap to"},"agent_version":{"oneOf":[{"type":"string","description":"The version of the agent to swap to. If not specified, will use the latest version","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published"},{"type":"integer","description":"The version of the agent to swap to. If not specified, will use the latest version","minimum":0,"example":1}]},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap"},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source."},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false."},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false."},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false."},"edge":{"type":"object","description":"Edge to transition to if agent swap fails","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]}}},{"type":"object","required":["type","mcp_id","mcp_tool_name","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["mcp"],"description":"Type of the node"},"mcp_id":{"type":"string","description":"Unique ID of the MCP server"},"mcp_tool_name":{"type":"string","description":"Name of the MCP tool to call"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}}},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"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"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]},"wait_for_result":{"type":"boolean","description":"If true, will wait for result before transitioning to next node"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while MCP tool executes."},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","component_id","component_type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"type":{"type":"string","enum":["component"],"description":"Type of the node"},"component_id":{"type":"string","description":"The reference ID of the component"},"component_type":{"type":"string","enum":["local","shared"],"description":"Type of component:\n- local: stored in conversation flow's components array\n- shared: stored in stand-alone conversation-flow-component table\n"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"Array of edges for conditional transitions"},"else_edge":{"type":"object","description":"Default edge when no other conditions are met","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"]}}},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[]},"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"]},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge"}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"The example transcript to finetune how the node should transition."},"destination_node_id":{"type":"string","description":"Optional destination node ID"}}}}}},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["bridge_transfer"],"description":"Type of the node - initiates a warm transfer by bridging the call"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]}}},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node"},"name":{"type":"string","description":"Optional name for display purposes"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","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":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"]},"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"]},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing."}}}]},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"]},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text"}}},{"type":"object","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"]}}}]},"destination_node_id":{"type":"string","description":"ID of the destination node"}}},"description":"The conditions for global node go back. There would be no destination_node_id for these edges."},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions."},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Transition to this node"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"]},"content":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"]},"tool_call_id":{"type":"string"},"name":{"type":"string"},"arguments":{"type":"string"}}},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"]},"tool_call_id":{"type":"string"},"content":{"type":"string"}}}]},"description":"Find tune the transition condition to this global node"}}},"description":"Don't transition to this node"}}},"display_position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"description":"Position for frontend display"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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."},"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."}}}},"additionalProperties":false},{"type":"object","enum":[null]},{"type":"null","enum":[null]}]},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice"},"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"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false"},"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."}}},"type":{"type":"string","enum":["cancel_transfer"],"description":"Type of the node - cancels the warm transfer and ends the transfer agent call"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction"},"text":{"type":"string","description":"The prompt text for the instruction"}}},{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction"},"text":{"type":"string","description":"The static text for the instruction"}}}]}}}]},"description":"Nodes that make up the component","example":[{"id":"collect_info","type":"conversation","instruction":{"type":"prompt","text":"Ask the customer for their name and contact information."}}]},"start_node_id":{"oneOf":[{"type":"string","description":"ID of the starting node","example":"collect_info"},{"type":"null","description":"ID of the starting node","example":"collect_info"}]},"begin_tag_display_position":{"oneOf":[{"type":"object","properties":{"x":{"type":"number","example":100},"y":{"type":"number","example":200}},"description":"Display position for the begin tag in the frontend"},{"type":"null","properties":{"x":{"type":"number","example":100},"y":{"type":"number","example":200}},"description":"Display position for the begin tag in the frontend"}]},"notes":{"oneOf":[{"type":"array","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here."},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300},"y":{"type":"number","example":150}},"description":"Position of the note on the canvas."},"size":{"type":"object","properties":{"width":{"type":"number","example":200},"height":{"type":"number","example":100}},"description":"Dimensions of the note on the canvas."}}},"description":"Visual annotations displayed on the flow canvas."},{"type":"null","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here."},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300},"y":{"type":"number","example":150}},"description":"Position of the note on the canvas."},"size":{"type":"object","properties":{"width":{"type":"number","example":200},"height":{"type":"number","example":100}},"description":"Dimensions of the note on the canvas."}}},"description":"Visual annotations displayed on the flow canvas."}]}}},"description":"Local components embedded within the conversation flow.","uniqueKey":"components.oneOf.1","typeLabel":"null"}],"uniqueKey":"components","typeLabel":"object[] | null"},"start_node_id":{"oneOf":[{"type":"string","example":"start","description":"ID of the start node in the conversation flow.","uniqueKey":"start_node_id.oneOf.0","typeLabel":"string"},{"type":"null","example":"start","description":"ID of the start node in the conversation flow.","uniqueKey":"start_node_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"start_node_id","typeLabel":"string | null"},"default_dynamic_variables":{"oneOf":[{"type":"object","additionalProperties":{"type":"string","uniqueKey":"default_dynamic_variables.oneOf.0.additionalProperties","typeLabel":"string"},"example":{"company_name":"Retell Inc","support_hours":"9 AM - 5 PM"},"description":"Default dynamic variables that can be referenced throughout the conversation flow.","uniqueKey":"default_dynamic_variables.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"type":"string","uniqueKey":"default_dynamic_variables.oneOf.1.additionalProperties","typeLabel":"string"},"example":{"company_name":"Retell Inc","support_hours":"9 AM - 5 PM"},"description":"Default dynamic variables that can be referenced throughout the conversation flow.","uniqueKey":"default_dynamic_variables.oneOf.1","typeLabel":"null"}],"uniqueKey":"default_dynamic_variables","typeLabel":"object | null"},"begin_tag_display_position":{"oneOf":[{"type":"object","properties":{"x":{"type":"number","example":100,"uniqueKey":"begin_tag_display_position.oneOf.0.x","typeLabel":"number"},"y":{"type":"number","example":200,"uniqueKey":"begin_tag_display_position.oneOf.0.y","typeLabel":"number"}},"description":"Display position for the begin tag in the frontend.","uniqueKey":"begin_tag_display_position.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"x":{"type":"number","example":100},"y":{"type":"number","example":200}},"description":"Display position for the begin tag in the frontend.","uniqueKey":"begin_tag_display_position.oneOf.1","typeLabel":"null"}],"uniqueKey":"begin_tag_display_position","typeLabel":"object | null"},"notes":{"oneOf":[{"type":"array","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123","isRequired":true,"uniqueKey":"notes.oneOf.0.items.[INDEX].id","typeLabel":"string"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here.","isRequired":true,"uniqueKey":"notes.oneOf.0.items.[INDEX].content","typeLabel":"string"},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300,"uniqueKey":"notes.oneOf.0.items.[INDEX].display_position.x","typeLabel":"number"},"y":{"type":"number","example":150,"uniqueKey":"notes.oneOf.0.items.[INDEX].display_position.y","typeLabel":"number"}},"description":"Position of the note on the canvas.","isRequired":true,"uniqueKey":"notes.oneOf.0.items.[INDEX].display_position","typeLabel":"object"},"size":{"type":"object","properties":{"width":{"type":"number","example":200,"uniqueKey":"notes.oneOf.0.items.[INDEX].size.width","typeLabel":"number"},"height":{"type":"number","example":100,"uniqueKey":"notes.oneOf.0.items.[INDEX].size.height","typeLabel":"number"}},"description":"Dimensions of the note on the canvas.","isRequired":true,"uniqueKey":"notes.oneOf.0.items.[INDEX].size","typeLabel":"object"}},"uniqueKey":"notes.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Visual annotations displayed on the flow canvas.","uniqueKey":"notes.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","required":["id","content","display_position","size"],"properties":{"id":{"type":"string","description":"Unique identifier for the note.","example":"note_abc123"},"content":{"type":"string","description":"Text content of the note, can contain refs to images in the format \"\u003cimage:asset_id>\"","example":"Remember to handle edge cases here."},"display_position":{"type":"object","properties":{"x":{"type":"number","example":300},"y":{"type":"number","example":150}},"description":"Position of the note on the canvas."},"size":{"type":"object","properties":{"width":{"type":"number","example":200},"height":{"type":"number","example":100}},"description":"Dimensions of the note on the canvas."}}},"description":"Visual annotations displayed on the flow canvas.","uniqueKey":"notes.oneOf.1","typeLabel":"null"}],"uniqueKey":"notes","typeLabel":"object[] | null"},"mcps":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"mcps.oneOf.0.items.[INDEX].name","typeLabel":"string"},"url":{"type":"string","description":"The URL of the MCP server.","isRequired":true,"uniqueKey":"mcps.oneOf.0.items.[INDEX].url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"mcps.oneOf.0.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request.","uniqueKey":"mcps.oneOf.0.items.[INDEX].headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"mcps.oneOf.0.items.[INDEX].query_params.additionalProperties","typeLabel":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL.","uniqueKey":"mcps.oneOf.0.items.[INDEX].query_params","typeLabel":"object"},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes).","uniqueKey":"mcps.oneOf.0.items.[INDEX].timeout_ms","typeLabel":"integer"}},"required":["name","url"],"uniqueKey":"mcps.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"A list of MCP server configurations to use for this conversation flow.","uniqueKey":"mcps.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","description":"The URL of the MCP server."},"headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the MCP connection request."},"query_params":{"type":"object","additionalProperties":{"type":"string"},"example":{"index":"1","key":"value"},"description":"Query parameters to append to the MCP connection request URL."},"timeout_ms":{"type":"integer","description":"Maximum time to wait for a connection to be established (in milliseconds). Default to 120,000 ms (2 minutes)."}},"required":["name","url"]},"description":"A list of MCP server configurations to use for this conversation flow.","uniqueKey":"mcps.oneOf.1","typeLabel":"null"}],"uniqueKey":"mcps","typeLabel":"object[] | null"},"is_transfer_cf":{"oneOf":[{"type":"boolean","example":false,"description":"Whether this conversation flow is used for warm transfer. Can only be set at creation, and is ignored on update.","uniqueKey":"is_transfer_cf.oneOf.0","typeLabel":"boolean"},{"type":"null","example":false,"description":"Whether this conversation flow is used for warm transfer. Can only be set at creation, and is ignored on update.","uniqueKey":"is_transfer_cf.oneOf.1","typeLabel":"null"}],"uniqueKey":"is_transfer_cf","typeLabel":"boolean | null"},"nodes":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.id","typeLabel":"string"},"type":{"type":"string","enum":["conversation"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.0.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.1.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.0.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.0.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.0.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.0.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.0.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":"nodes.items.[INDEX].oneOf.0.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_choice.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":"nodes.items.[INDEX].oneOf.0.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.0.model_choice.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":"nodes.items.[INDEX].oneOf.0.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.model_choice","typeLabel":"object"},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.0.interruption_sensitivity.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.0.interruption_sensitivity.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.interruption_sensitivity","typeLabel":"number | null"},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.0.responsiveness.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.0.responsiveness.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.responsiveness","typeLabel":"number | null"},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2,"uniqueKey":"nodes.items.[INDEX].oneOf.0.voice_speed.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0.5,"maximum":2,"uniqueKey":"nodes.items.[INDEX].oneOf.0.voice_speed.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.voice_speed","typeLabel":"number | null"},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.allow_dtmf_interruption","typeLabel":"boolean | null"},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_trigger_ms.oneOf.0","typeLabel":"number"},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_trigger_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_trigger_ms","typeLabel":"number | null"},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_max_count.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_max_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.reminder_max_count","typeLabel":"integer | null"},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"nodes.items.[INDEX].oneOf.0.stt_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"nodes.items.[INDEX].oneOf.0.stt_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.stt_mode","typeLabel":"enum\u003cstring> | null"},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is custom.","properties":{"provider":{"type":"string","description":"The STT provider to use.","enum":["azure","deepgram","soniox","assemblyai","muse"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.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, and 100 for Muse. Muse detects turn ends itself and ignores this value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.0.endpointing_ms","typeLabel":"integer"}},"required":["provider","endpointing_ms"],"uniqueKey":"nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"],"uniqueKey":"nodes.items.[INDEX].oneOf.0.custom_stt_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.custom_stt_config","typeLabel":"object | null"},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.0.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"nodes.items.[INDEX].oneOf.0.boosted_keywords.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.boosted_keywords","typeLabel":"string[] | null"},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.skip_response_edge","typeLabel":"object"},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled.","uniqueKey":"nodes.items.[INDEX].oneOf.0.skippable","typeLabel":"boolean"},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.always_edge","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.0.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.else_edge","typeLabel":"object"},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the conversation should be.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_conversation_examples","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.0.finetune_transition_examples","typeLabel":"object[]"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.0.knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"example":["kb_001","kb_002"],"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"nodes.items.[INDEX].oneOf.0.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":"nodes.items.[INDEX].oneOf.0.knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.0.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":"nodes.items.[INDEX].oneOf.0.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":"nodes.items.[INDEX].oneOf.0.kb_config.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction.","uniqueKey":"nodes.items.[INDEX].oneOf.0.kb_config","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.id","typeLabel":"string"},"type":{"type":"string","enum":["subagent"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.instruction.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.instruction.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.1.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"any","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"any"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.1.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.1.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.1.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.1.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":"nodes.items.[INDEX].oneOf.1.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_choice.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":"nodes.items.[INDEX].oneOf.1.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.1.model_choice.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":"nodes.items.[INDEX].oneOf.1.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.model_choice","typeLabel":"object"},"interruption_sensitivity":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.1.interruption_sensitivity.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.1.interruption_sensitivity.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.interruption_sensitivity","typeLabel":"number | null"},"responsiveness":{"oneOf":[{"type":"number","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.1.responsiveness.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0,"maximum":1,"uniqueKey":"nodes.items.[INDEX].oneOf.1.responsiveness.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.responsiveness","typeLabel":"number | null"},"voice_speed":{"oneOf":[{"type":"number","minimum":0.5,"maximum":2,"uniqueKey":"nodes.items.[INDEX].oneOf.1.voice_speed.oneOf.0","typeLabel":"number"},{"type":"null","minimum":0.5,"maximum":2,"uniqueKey":"nodes.items.[INDEX].oneOf.1.voice_speed.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.voice_speed","typeLabel":"number | null"},"allow_dtmf_interruption":{"oneOf":[{"type":"boolean","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"If set, overrides the agent-level allow_dtmf_interruption for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.allow_dtmf_interruption","typeLabel":"boolean | null"},"reminder_trigger_ms":{"oneOf":[{"type":"number","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_trigger_ms.oneOf.0","typeLabel":"number"},{"type":"null","minimum":1,"description":"If set (in milliseconds), overrides the agent-level reminder_trigger_ms for this node only.","uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_trigger_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_trigger_ms","typeLabel":"number | null"},"reminder_max_count":{"oneOf":[{"type":"integer","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_max_count.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"description":"If set, overrides the agent-level reminder_max_count for this node only. Set to 0 to disable reminders for this node.","uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_max_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.reminder_max_count","typeLabel":"integer | null"},"stt_mode":{"oneOf":[{"type":"string","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"nodes.items.[INDEX].oneOf.1.stt_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fast","accurate","custom"],"description":"Balance between speed and accuracy. Fast optimizes for speed using the provider configuration, accurate optimizes for accuracy using the provider configuration, and custom uses custom_stt_config.","uniqueKey":"nodes.items.[INDEX].oneOf.1.stt_mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.stt_mode","typeLabel":"enum\u003cstring> | null"},"custom_stt_config":{"oneOf":[{"type":"object","description":"Custom transcription settings. Required when stt_mode is custom.","properties":{"provider":{"type":"string","description":"The STT provider to use.","enum":["azure","deepgram","soniox","assemblyai","muse"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.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, and 100 for Muse. Muse detects turn ends itself and ignores this value.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.0.endpointing_ms","typeLabel":"integer"}},"required":["provider","endpointing_ms"],"uniqueKey":"nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.0","typeLabel":"object"},{"type":"null","description":"Custom transcription settings. Required when stt_mode is 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, and 100 for Muse. Muse detects turn ends itself and ignores this value."}},"required":["provider","endpointing_ms"],"uniqueKey":"nodes.items.[INDEX].oneOf.1.custom_stt_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.custom_stt_config","typeLabel":"object | null"},"boosted_keywords":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.0.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"maxItems":100,"description":"If set, replaces the agent-level boosted_keywords while this node is active. Set to an empty list to disable boosted keywords for this node. Entries may reference dynamic variables with `{{variable}}` syntax, resolved when the node is entered.","uniqueKey":"nodes.items.[INDEX].oneOf.1.boosted_keywords.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.boosted_keywords","typeLabel":"string[] | null"},"skip_response_edge":{"type":"object","description":"For conversation and subagent nodes, transitions after the agent finishes speaking, without waiting for a user response. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Skip response\" for skip response edge","minLength":1,"enum":["Skip response"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Skip response"],"description":"Must be \"Skip response\" for skip response edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.skip_response_edge","typeLabel":"object"},"skippable":{"type":"boolean","default":false,"description":"Allow skipping this node when its questions are already answered in the current conversation or in saved contact memory when memory reading is enabled.","uniqueKey":"nodes.items.[INDEX].oneOf.1.skippable","typeLabel":"boolean"},"always_edge":{"type":"object","description":"For conversation and subagent nodes, transitions unconditionally after the user responds. Use as the node's only outgoing edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Always\" for always edge","minLength":1,"enum":["Always"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Always"],"description":"Must be \"Always\" for always edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.always_edge","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.1.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.else_edge","typeLabel":"object"},"finetune_conversation_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the conversation should be.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_conversation_examples","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.1.finetune_transition_examples","typeLabel":"object[]"},"knowledge_base_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"Knowledge base IDs for RAG (Retrieval-Augmented Generation).","uniqueKey":"nodes.items.[INDEX].oneOf.1.knowledge_base_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.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":"nodes.items.[INDEX].oneOf.1.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":"nodes.items.[INDEX].oneOf.1.kb_config.filter_score","typeLabel":"number"}},"description":"Knowledge base configuration for RAG retrieval at the node level. If kb_instruction is set here, it overrides the flow-level kb_instruction.","uniqueKey":"nodes.items.[INDEX].oneOf.1.kb_config","typeLabel":"object"},"tool_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"The tool ids of the tools defined in main conversation flow or component that can be used in this subagent node.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tool_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.tool_ids","typeLabel":"string[] | null"},"tools":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.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 transitions). 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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.description","typeLabel":"string"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. Only applicable when speak_during_execution is true.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.name","typeLabel":"string"},"transfer_destination":{"type":"any","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.transfer_destination","typeLabel":"any"},"transfer_option":{"type":"any","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.transfer_option","typeLabel":"any"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.description","typeLabel":"string"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.ignore_e164_validation","typeLabel":"boolean"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.custom_sip_headers.additionalProperties","typeLabel":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. Only applicable when speak_during_execution is true.","uniqueKey":"nodes.items.[INDEX].oneOf.1.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.name","typeLabel":"string"},"type":{"type":"string","enum":["agent_swap"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.agent_id","typeLabel":"string"},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.post_call_analysis_setting","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.description","typeLabel":"string"},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.agent_version","typeLabel":"any"},"speak_during_execution":{"type":"boolean","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap.","uniqueKey":"nodes.items.[INDEX].oneOf.1.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.execution_message_type","typeLabel":"enum\u003cstring>"},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.webhook_setting","typeLabel":"enum\u003cstring>"},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.keep_current_voice","typeLabel":"boolean"},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.keep_current_language","typeLabel":"boolean"},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2.use_swap_agent_max_duration","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.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 transitions). 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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.description","typeLabel":"string"},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive).","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3.delay_ms","typeLabel":"integer"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.name","typeLabel":"string"},"type":{"type":"string","enum":["send_sms"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"sms_content":{"type":"any","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_content","typeLabel":"any"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.execution_message_type","typeLabel":"enum\u003cstring>"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_sender","typeLabel":"any"},"sms_destination":{"type":"any","description":"SMS destination number configuration. If omitted, the message is sent to the customer number on the call.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.sms_destination","typeLabel":"any"},"speak_after_execution":{"type":"boolean","default":true,"description":"Whether the agent should speak after the SMS tool finishes execution.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4.speak_after_execution","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["type","name","url"],"properties":{"type":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.url","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.description","typeLabel":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"Method to use for the request, default to POST.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.method","typeLabel":"enum\u003cstring>"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.headers.additionalProperties","typeLabel":"string"},"example":{"Authorization":"Bearer 1234567890"},"description":"Headers to add to the request.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.headers","typeLabel":"object"},"query_params":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.query_params.additionalProperties","typeLabel":"string"},"example":{"page":"1","sort":"asc"},"description":"Query parameters to append to the request URL.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.parameters.properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.parameters.\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["type","name","code"],"properties":{"type":{"type":"string","enum":["code"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.name","typeLabel":"string"},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.code","typeLabel":"string"},"description":{"type":"string","description":"Describes what this tool does and when to call this tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.description","typeLabel":"string"},"variables":{"type":"array","items":{"type":"any","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.variables.items.[INDEX]","typeLabel":"any"},"description":"The variables to be extracted.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.variables","typeLabel":"any[]"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.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 transitions). 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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.description","typeLabel":"string"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.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 transitions). 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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.name","typeLabel":"string"},"description":{"type":"string","description":"Describes what the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.description","typeLabel":"string"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.speak_during_execution","typeLabel":"boolean"},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9.execution_message_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the MCP tool.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the MCP tool.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.description","typeLabel":"string"},"mcp_id":{"type":"string","description":"Unique id of the MCP.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.mcp_id","typeLabel":"string"},"input_schema":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.input_schema.additionalProperties","typeLabel":"string"},"description":"The input schema of the MCP tool.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.input_schema","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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.response_variables.additionalProperties","typeLabel":"string"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.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 MCP tool is executing.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","required":["type","name","app_id","provider","app_tool_template_name"],"properties":{"type":{"type":"string","enum":["integration_app"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.parameters.items.[INDEX].properties","typeLabel":"object"},"required":{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.parameters.items.[INDEX].\\additionalProperties","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.response_variables","typeLabel":"object"},"output_selection":{"type":"any","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.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.output_selection","typeLabel":"any"},"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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11.enable_typing_sound","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX].oneOf.11","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"oneOf":[{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["end_call"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when ending the call. 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\"."}}},{"type":"object","required":["type","name","transfer_destination","transfer_option"],"properties":{"type":{"type":"string","enum":["transfer_call"]},"name":{"type":"string","example":"transfer_to_support","description":"Name of the tool. Must be unique within all tools available to LLM at any given time (general tools + state tools + state edges)."},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"transfer_destination":{"type":"any"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string"},"example":{"X-Custom-Header":"Custom Value"},"description":"Custom SIP headers to be added to the call."},"transfer_option":{"type":"any"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when transferring the call. 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\"."}}},{"type":"object","required":["type","name","agent_id","post_call_analysis_setting"],"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)."},"type":{"type":"string","enum":["agent_swap"]},"description":{"type":"string","description":"Describes what the tool does, sometimes can also include information about when to call the tool."},"agent_id":{"type":"string","minLength":1,"description":"The id of the agent to swap to."},"agent_version":{"type":"any","description":"The version of the agent to swap to. If not specified, will use the latest version."},"speak_during_execution":{"type":"boolean"},"execution_message_description":{"type":"string","description":"The message for the agent to speak when executing agent swap."},"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\"."},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap."},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source."},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false."},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false."},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["press_digit"]},"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 transitions). 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 the tool does, sometimes can also include information about when to call the tool."},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit, because a lot of IVR systems speak very slowly, and a delay can make sure the agent hears the full menu. Default to 1000 ms (1s). Valid range is 0 to 5000 ms (inclusive)."}}},{"type":"object","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":{"type":"any"},"sms_sender":{"type":"any","description":"SMS sender number configuration. If omitted, the message is sent from the agent's phone number."},"sms_destination":{"type":"any","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."}}},{"type":"object","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."}}},{"type":"object","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."}}},{"type":"object","required":["type","name","variables","description"],"properties":{"type":{"type":"string","enum":["extract_dynamic_variable"]},"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 the tool does, sometimes can also include information about when to call the tool."},"variables":{"type":"array","items":{"type":"any"},"description":"The variables to be extracted."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this tool is executing."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["bridge_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it bridges the original caller to the transfer target and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when bridging the transfer. 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\"."}}},{"type":"object","required":["type","name"],"properties":{"type":{"type":"string","enum":["cancel_transfer"]},"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 transitions). 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 the tool does. This tool is only available to transfer agents (agents with isTransferAgent set to true) in agentic warm transfer mode. When invoked, it cancels the transfer, returns the original caller to the main agent, and ends the transfer agent call."},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution."},"execution_message_description":{"type":"string","description":"Describes what to say to user when cancelling the transfer. 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\"."}}},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["mcp"]},"mcp_id":{"type":"string","description":"Unique id of the MCP."},"name":{"type":"string","description":"Name of the MCP tool."},"description":{"type":"string","description":"Description of the MCP tool."},"input_schema":{"type":"object","additionalProperties":{"type":"string"},"description":"The input schema of the MCP tool."},"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"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response"},"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\"."},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound on the agent audio track while this MCP tool is executing."}}},{"type":"object","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":{"type":"any","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."},"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."}}}]},"description":"The tools owned by this subagent node. This includes other tool types like transfer_call, agent_swap, etc.","uniqueKey":"nodes.items.[INDEX].oneOf.1.tools.oneOf.1","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.1.tools","typeLabel":"object[] | null"}},"uniqueKey":"nodes.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.id","typeLabel":"string"},"type":{"type":"string","enum":["end"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.2.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.2.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.2.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.2.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.2.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":"nodes.items.[INDEX].oneOf.2.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_choice.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":"nodes.items.[INDEX].oneOf.2.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.2.model_choice.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":"nodes.items.[INDEX].oneOf.2.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.model_choice","typeLabel":"object"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.2.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers sent on the outgoing BYE when ending the call. Header names must start with X- or x-. Supports dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.2.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.2.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when ending the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.2.instruction","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","tool_id","tool_type","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.id","typeLabel":"string"},"type":{"type":"string","enum":["function"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"tool_id":{"type":"string","description":"Tool ID for function nodes","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.tool_id","typeLabel":"string"},"tool_type":{"type":"string","enum":["local","shared"],"description":"Tool type for function nodes","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.tool_type","typeLabel":"enum\u003cstring>"},"wait_for_result":{"type":"boolean","description":"Whether to wait for tool result","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.3.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.3.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.3.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.3.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.3.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":"nodes.items.[INDEX].oneOf.3.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_choice.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":"nodes.items.[INDEX].oneOf.3.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.3.model_choice.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":"nodes.items.[INDEX].oneOf.3.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Whether to speak during tool execution","uniqueKey":"nodes.items.[INDEX].oneOf.3.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this function executes.","uniqueKey":"nodes.items.[INDEX].oneOf.3.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.3.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.3.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","required":["type","code","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.id","typeLabel":"string"},"type":{"type":"string","enum":["code"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","maxLength":20000,"description":"JavaScript code to execute in the sandbox.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.code","typeLabel":"string"},"wait_for_result":{"type":"boolean","description":"Whether to wait for code execution result","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.4.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.4.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.4.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.4.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.4.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_choice.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":"nodes.items.[INDEX].oneOf.4.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.4.model_choice.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":"nodes.items.[INDEX].oneOf.4.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.model_choice","typeLabel":"object"},"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":"nodes.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.4.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.4.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":"nodes.items.[INDEX].oneOf.4.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"Whether to speak during code execution","uniqueKey":"nodes.items.[INDEX].oneOf.4.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while code executes.","uniqueKey":"nodes.items.[INDEX].oneOf.4.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.4.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.4.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","required":["type","transfer_destination","transfer_option","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.id","typeLabel":"string"},"type":{"type":"string","enum":["transfer_call"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"transfer_destination":{"oneOf":[{"type":"object","required":["type","number"],"properties":{"type":{"type":"string","enum":["predefined"],"description":"The type of transfer destination.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.type","typeLabel":"enum\u003cstring>"},"number":{"type":"string","description":"The number to transfer to in E.164 format or a dynamic variable like {{transfer_number}}.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.number","typeLabel":"string"},"extension":{"type":"string","description":"Extension digits to dial after the main number connects. Sent via DTMF. Allow digits, '*', '#', or a dynamic variable like {{extension}}.","example":"123*456#","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0.extension","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["inferred"],"description":"The type of transfer destination.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"The prompt to be used to help infer the transfer destination. The model will take the global prompt, the call transcript, and this prompt together to deduce the right number to transfer to. Can contain dynamic variables.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_destination","typeLabel":"object"},"transfer_option":{"oneOf":[{"type":"object","title":"Cold Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["cold_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring. Requires the telephony side to support caller id override. Retell Twilio numbers support this option. This parameter takes effect only when `cold_transfer_mode` is set to `sip_invite`. When using `sip_refer`, this option is not available. Retell Twilio numbers always use user's number as the caller id when using `sip refer` cold transfer mode.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.show_transferee_as_caller","typeLabel":"boolean"},"cold_transfer_mode":{"type":"string","enum":["sip_refer","sip_invite"],"description":"The mode of the cold transfer. If set to `sip_refer`, will use SIP REFER to transfer the call. If set to `sip_invite`, will use SIP INVITE to transfer the call.","default":"sip_invite","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.cold_transfer_mode","typeLabel":"enum\u003cstring>"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0.transfer_ring_duration_ms","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.0","typeLabel":"Cold Transfer · object"},{"type":"object","title":"Warm Transfer","required":["type"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["warm_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.show_transferee_as_caller","typeLabel":"boolean"},"agent_detection_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The time to wait before considering transfer fails.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.agent_detection_timeout_ms","typeLabel":"number"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.transfer_ring_duration_ms","typeLabel":"integer"},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.on_hold_music","typeLabel":"enum\u003cstring>"},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.custom_on_hold_music_asset_id","typeLabel":"string"},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.public_handoff_option","typeLabel":"object"},"private_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is connected, will say the handoff message only to the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.private_handoff_option","typeLabel":"object"},"ivr_option":{"type":"object","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option.prompt","typeLabel":"string"}},"description":"IVR navigation option to run when doing human detection. This prompt will guide the AI on how to navigate the IVR system.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.ivr_option","typeLabel":"object"},"opt_out_human_detection":{"type":"boolean","description":"If set to true, will not perform human detection for the transfer. Default to false.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.opt_out_human_detection","typeLabel":"boolean"},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1.enable_bridge_audio_cue","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.1","typeLabel":"Warm Transfer · object"},{"type":"object","title":"Agentic Warm Transfer","required":["type","agentic_transfer_config"],"x-mintlify-name":"Transfer Options","properties":{"type":{"type":"string","enum":["agentic_warm_transfer"],"description":"The type of the transfer.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.type","typeLabel":"enum\u003cstring>"},"agentic_transfer_config":{"type":"object","description":"Configuration for agentic warm transfer. Required for agentic warm transfer.","properties":{"transfer_agent":{"type":"object","description":"The agent that will mediate the transfer decision.","properties":{"agent_id":{"type":"string","minLength":1,"description":"The agent ID of the transfer agent. This agent must have isTransferAgent set to true and should use bridge_transfer and cancel_transfer tools (for Retell LLM) or BridgeTransferNode and CancelTransferNode (for Conversation Flow).","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_id","typeLabel":"string"},"agent_version":{"oneOf":[{"type":"string","description":"The version of the transfer agent to use.","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version.oneOf.0","typeLabel":"string"},{"type":"integer","description":"The version of the transfer agent to use.","minimum":0,"example":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version.oneOf.1","typeLabel":"integer"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent.agent_version","typeLabel":"string | integer"}},"required":["agent_id","agent_version"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_agent","typeLabel":"object"},"transfer_timeout_ms":{"type":"number","minimum":10000,"maximum":300000,"description":"The maximum time to wait for the transfer agent to make a decision, in milliseconds. Defaults to 30000 (30 seconds).","default":30000,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.transfer_timeout_ms","typeLabel":"number"},"action_on_timeout":{"type":"string","enum":["bridge_transfer","cancel_transfer"],"description":"The action to take when the transfer agent times out without making a decision. Defaults to cancel_transfer.","default":"cancel_transfer","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config.action_on_timeout","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.agentic_transfer_config","typeLabel":"object"},"show_transferee_as_caller":{"type":"boolean","description":"If set to true, will show transferee (the user, not the AI agent) as caller when transferring, requires the telephony side to support caller id override. Retell Twilio numbers support this option.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.show_transferee_as_caller","typeLabel":"boolean"},"on_hold_music":{"type":"string","enum":["none","relaxing_sound","uplifting_beats","ringtone","custom"],"description":"The music to play while the caller is being transferred. Use `custom` together with `custom_on_hold_music_asset_id` to play an uploaded audio asset.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.on_hold_music","typeLabel":"enum\u003cstring>"},"custom_on_hold_music_asset_id":{"type":"string","description":"Asset ID of the uploaded hold music to play. Required when `on_hold_music` is `custom`. Must reference an audio asset owned by the organization (see create-asset).","example":"asset_abc123def456","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.custom_on_hold_music_asset_id","typeLabel":"string"},"transfer_ring_duration_ms":{"type":"integer","minimum":5000,"maximum":90000,"description":"Override the ring duration for this specific transfer, in milliseconds. If not set, falls back to the agent-level `ring_duration_ms`.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.transfer_ring_duration_ms","typeLabel":"integer"},"public_handoff_option":{"oneOf":[{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["prompt"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","example":"Summarize the call in one sentence for the warn handoff.","description":"The prompt to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.0","typeLabel":"object"},{"type":"object","description":"If set, when transfer is successful, will say the handoff message to both the transferee and the agent receiving the transfer. Can leave either a static message or a dynamic one based on prompt. Set to null to disable warm handoff.","properties":{"type":{"type":"string","enum":["static_message"],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"You can take it from here.","description":"The static message to be used for warm handoff. Can contain dynamic variables.","uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1.message","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.public_handoff_option","typeLabel":"object"},"enable_bridge_audio_cue":{"type":"boolean","description":"Whether to play an audio cue when bridging the call. Defaults to true.","default":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2.enable_bridge_audio_cue","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option.oneOf.2","typeLabel":"Agentic Warm Transfer · object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.transfer_option","typeLabel":"Cold Transfer · object | Warm Transfer · object | Agentic Warm Transfer · object"},"edge":{"type":"object","description":"Transition followed by a transfer_call or agent_swap node when the transfer fails. Evaluated after the transfer attempt finishes.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.5.edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.5.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.5.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.5.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.5.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.5.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":"nodes.items.[INDEX].oneOf.5.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_choice.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":"nodes.items.[INDEX].oneOf.5.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.5.model_choice.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":"nodes.items.[INDEX].oneOf.5.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.model_choice","typeLabel":"object"},"ignore_e164_validation":{"type":"boolean","description":"If true, the e.164 validation will be ignored for the from_number. This can be useful when you want to dial to internal pseudo numbers. This only applies when you are using custom telephony and does not apply when you are using Retell Telephony. If omitted, the default value is false.","example":false,"uniqueKey":"nodes.items.[INDEX].oneOf.5.ignore_e164_validation","typeLabel":"boolean"},"custom_sip_headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.5.custom_sip_headers.additionalProperties","typeLabel":"string"},"description":"Custom SIP headers for transfer calls","uniqueKey":"nodes.items.[INDEX].oneOf.5.custom_sip_headers","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.5.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when transferring the call, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.5.instruction","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","required":["type","instruction","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.id","typeLabel":"string"},"type":{"type":"string","enum":["press_digit"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"instruction":{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.instruction.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.instruction.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.instruction","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.6.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.6.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.6.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.6.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.6.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":"nodes.items.[INDEX].oneOf.6.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_choice.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":"nodes.items.[INDEX].oneOf.6.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.6.model_choice.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":"nodes.items.[INDEX].oneOf.6.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.model_choice","typeLabel":"object"},"delay_ms":{"type":"integer","description":"Delay in milliseconds before pressing the digit","uniqueKey":"nodes.items.[INDEX].oneOf.6.delay_ms","typeLabel":"integer"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.6.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.6.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","required":["type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.id","typeLabel":"string"},"type":{"type":"string","enum":["branch"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.else_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.7.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.7.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.7.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.7.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.7.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":"nodes.items.[INDEX].oneOf.7.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_choice.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":"nodes.items.[INDEX].oneOf.7.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.7.model_choice.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":"nodes.items.[INDEX].oneOf.7.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.model_choice","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.7.edges","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.7.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","required":["type","instruction","success_edge","failed_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.id","typeLabel":"string"},"type":{"type":"string","enum":["sms"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"instruction":{"oneOf":[{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.0.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.1.text","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.1","typeLabel":"object"},{"type":"object","required":["type","template"],"properties":{"type":{"type":"string","enum":["template"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.2.type","typeLabel":"enum\u003cstring>"},"template":{"type":"string","enum":["info_collection"],"description":"The template to use for the instruction. \"info_collection\" sends a predefined message requesting information from the user.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.2.template","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.instruction","typeLabel":"object"},"success_edge":{"type":"object","description":"Transition followed by an SMS node after the send operation reports success.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Sent successfully\" for SMS success edge","minLength":1,"enum":["Sent successfully"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Sent successfully"],"description":"Must be \"Sent successfully\" for SMS success edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.success_edge","typeLabel":"object"},"failed_edge":{"type":"object","description":"Transition followed by an SMS node when generating the message content or sending the message fails.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Failed to send\" for SMS failed edge","minLength":1,"enum":["Failed to send"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Failed to send"],"description":"Must be \"Failed to send\" for SMS failed edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.failed_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.8.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.8.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.8.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.8.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_choice.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":"nodes.items.[INDEX].oneOf.8.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.8.model_choice.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":"nodes.items.[INDEX].oneOf.8.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.model_choice","typeLabel":"object"},"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":"nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.1.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_sender.oneOf.3","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.1.type","typeLabel":"enum\u003cstring>"},"phone_number":{"type":"string","description":"Destination phone number in E.164 format.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.1.ignore_e164_validation","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.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":"nodes.items.[INDEX].oneOf.8.sms_destination.oneOf.3","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.8.sms_destination","typeLabel":"Destination Customer Number · object | Destination Phone Number · object | object | null"}},"uniqueKey":"nodes.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","required":["type","variables","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.id","typeLabel":"string"},"type":{"type":"string","enum":["extract_dynamic_variables"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"variables":{"type":"array","items":{"oneOf":[{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["string"],"description":"Type of the variable to extract.","example":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"customer_name","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"The name of the customer.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.description","typeLabel":"string"},"examples":{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0.conditional_prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["type","name","description","choices"],"properties":{"type":{"type":"string","enum":["enum"],"description":"Type of the variable to extract.","example":"enum","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"product_rating","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"Rating of the product.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.description","typeLabel":"string"},"choices":{"type":"array","items":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1.conditional_prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["boolean"],"description":"Type of the variable to extract.","example":"boolean","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"is_converted","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.name","typeLabel":"string"},"description":{"type":"string","description":"Description of the variable.","example":"Whether the customer converted.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2.conditional_prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","required":["type","name","description"],"properties":{"type":{"type":"string","enum":["number"],"description":"Type of the variable to extract.","example":"number","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the variable.","example":"order_count","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.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":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3.conditional_prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.variables","typeLabel":"object[]"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.9.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.9.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.9.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.9.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.9.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":"nodes.items.[INDEX].oneOf.9.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_choice.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":"nodes.items.[INDEX].oneOf.9.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.9.model_choice.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":"nodes.items.[INDEX].oneOf.9.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.model_choice","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while this extract step executes.","uniqueKey":"nodes.items.[INDEX].oneOf.9.enable_typing_sound","typeLabel":"boolean"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.9.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.else_edge","typeLabel":"object"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.9.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","required":["type","agent_id","post_call_analysis_setting","edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.id","typeLabel":"string"},"type":{"type":"string","enum":["agent_swap"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"agent_id":{"type":"string","description":"The ID of the agent to swap to","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.agent_id","typeLabel":"string"},"post_call_analysis_setting":{"type":"string","enum":["both_agents","only_destination_agent"],"description":"Post call analysis setting for the agent swap","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.post_call_analysis_setting","typeLabel":"enum\u003cstring>"},"edge":{"type":"object","description":"Edge to transition to if agent swap fails","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Transfer failed\" for transfer failed edge","minLength":1,"enum":["Transfer failed"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Transfer failed"],"description":"Must be \"Transfer failed\" for transfer failed edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.10.edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.10.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.10.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.10.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.10.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.10.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":"nodes.items.[INDEX].oneOf.10.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_choice.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":"nodes.items.[INDEX].oneOf.10.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.10.model_choice.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":"nodes.items.[INDEX].oneOf.10.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.model_choice","typeLabel":"object"},"agent_version":{"oneOf":[{"type":"string","description":"The version of the agent to swap to. If not specified, will use the latest version","maxLength":20,"minLength":1,"pattern":"^(latest|latest_published|(?!(?:latest|latest_published|v\\d+)$)[a-z][a-z0-9_-]{0,19})$","example":"latest_published","uniqueKey":"nodes.items.[INDEX].oneOf.10.agent_version.oneOf.0","typeLabel":"string"},{"type":"integer","description":"The version of the agent to swap to. If not specified, will use the latest version","minimum":0,"example":1,"uniqueKey":"nodes.items.[INDEX].oneOf.10.agent_version.oneOf.1","typeLabel":"integer"}],"uniqueKey":"nodes.items.[INDEX].oneOf.10.agent_version","typeLabel":"string | integer"},"webhook_setting":{"type":"string","enum":["both_agents","only_destination_agent","only_source_agent"],"description":"Webhook setting for the agent swap, defaults to only source.","uniqueKey":"nodes.items.[INDEX].oneOf.10.webhook_setting","typeLabel":"enum\u003cstring>"},"keep_current_voice":{"type":"boolean","description":"If true, keep the current voice and ambient sound settings when swapping agents. Otherwise, use the destination agent's voice and ambient sound settings. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.10.keep_current_voice","typeLabel":"boolean"},"keep_current_language":{"type":"boolean","description":"If true, keep the current language when swapping agents. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.10.keep_current_language","typeLabel":"boolean"},"use_swap_agent_max_duration":{"type":"boolean","description":"If true, restart the max call duration timer at the swap using the destination agent's max_call_duration_ms, capped so the whole call never exceeds 2 hours. Otherwise, the timer already running is left unchanged. Voice calls only. Defaults to false.","uniqueKey":"nodes.items.[INDEX].oneOf.10.use_swap_agent_max_duration","typeLabel":"boolean"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.10.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when swapping agents, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.10.instruction","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","required":["type","mcp_id","mcp_tool_name","wait_for_result","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.id","typeLabel":"string"},"type":{"type":"string","enum":["mcp"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.type","typeLabel":"enum\u003cstring>"},"mcp_id":{"type":"string","description":"Unique ID of the MCP server","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.mcp_id","typeLabel":"string"},"mcp_tool_name":{"type":"string","description":"Name of the MCP tool to call","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.mcp_tool_name","typeLabel":"string"},"wait_for_result":{"type":"boolean","description":"If true, will wait for result before transitioning to next node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.wait_for_result","typeLabel":"boolean"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.11.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.11.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.11.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.11.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.11.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":"nodes.items.[INDEX].oneOf.11.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_choice.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":"nodes.items.[INDEX].oneOf.11.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.11.model_choice.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":"nodes.items.[INDEX].oneOf.11.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.model_choice","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.11.edges","typeLabel":"object[]"},"else_edge":{"type":"object","description":"Fallback transition used when no conditional edge or global-node condition matches. Evaluated at the same point as the node's conditional edges; for conversation and subagent nodes, an unmatched user response follows this edge.","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge.destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.else_edge","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":"nodes.items.[INDEX].oneOf.11.execution_status_variable","typeLabel":"string"},"response_variables":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"nodes.items.[INDEX].oneOf.11.response_variables.additionalProperties","typeLabel":"string"},"description":"Response variables to add to dynamic variables, key is the variable name, value is the path to the variable in the response","uniqueKey":"nodes.items.[INDEX].oneOf.11.response_variables","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.11.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"What to say when calling the function, only used when speak during execution","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.11.instruction","typeLabel":"object"},"enable_typing_sound":{"type":"boolean","description":"If true, play a typing sound while MCP tool executes.","uniqueKey":"nodes.items.[INDEX].oneOf.11.enable_typing_sound","typeLabel":"boolean"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.11.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.11","typeLabel":"object"},{"type":"object","required":["type","component_id","component_type","else_edge","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.id","typeLabel":"string"},"type":{"type":"string","enum":["component"],"description":"Type of the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.type","typeLabel":"enum\u003cstring>"},"component_id":{"type":"string","description":"The reference ID of the component","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.component_id","typeLabel":"string"},"component_type":{"type":"string","enum":["local","shared"],"description":"Type of component:\n- local: stored in conversation flow's components array\n- shared: stored in stand-alone conversation-flow-component table\n","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.component_type","typeLabel":"enum\u003cstring>"},"else_edge":{"type":"object","description":"Default edge when no other conditions are met","required":["transition_condition","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","description":"Must be \"Else\" for else edge","minLength":1,"enum":["Else"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","prompt","equations","operator"],"properties":{"type":{"type":"string","enum":[],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","enum":["Else"],"description":"Must be \"Else\" for else edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1.prompt","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge.destination_node_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.else_edge","typeLabel":"object"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.12.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.12.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.12.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.12.display_position","typeLabel":"object"},"edges":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.edges.items.[INDEX]","typeLabel":"object"},"description":"Array of edges for conditional transitions","uniqueKey":"nodes.items.[INDEX].oneOf.12.edges","typeLabel":"object[]"},"finetune_transition_examples":{"type":"array","items":{"type":"object","required":["id","transcript"],"properties":{"id":{"type":"string","description":"Unique identifier for the example","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].id","typeLabel":"string"},"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"The example transcript to finetune how the node should transition.","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].transcript","typeLabel":"object[]"},"destination_node_id":{"type":"string","description":"Optional destination node ID","uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples.items.[INDEX]","typeLabel":"object"},"uniqueKey":"nodes.items.[INDEX].oneOf.12.finetune_transition_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.12","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.id","typeLabel":"string"},"type":{"type":"string","enum":["bridge_transfer"],"description":"Type of the node - initiates a warm transfer by bridging the call","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.13.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.13.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.13.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.13.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.13.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":"nodes.items.[INDEX].oneOf.13.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_choice.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":"nodes.items.[INDEX].oneOf.13.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.13.model_choice.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":"nodes.items.[INDEX].oneOf.13.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.13.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"Describes what to say to user when bridging the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.13.instruction","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.13","typeLabel":"object"},{"type":"object","required":["type","id"],"properties":{"id":{"type":"string","description":"Unique identifier for the node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.id","typeLabel":"string"},"type":{"type":"string","enum":["cancel_transfer"],"description":"Type of the node - cancels the warm transfer and ends the transfer agent call","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Optional name for display purposes","uniqueKey":"nodes.items.[INDEX].oneOf.14.name","typeLabel":"string"},"global_node_setting":{"type":"object","required":["condition"],"properties":{"condition":{"oneOf":[{"type":"string","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","minLength":1,"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.0","typeLabel":"string"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.1","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.2","typeLabel":"object"},{"type":"object","description":"Condition for global node activation. A string is a prompt condition and cannot be empty. Also accepts typed PromptCondition, EquationCondition, or EquationPromptCondition objects.","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation_prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.operator","typeLabel":"enum\u003cstring>"},"prompt_condition":{"type":"object","description":"Optional prompt combined with the equations by operator. Omit to evaluate only equations. With no equations, only the prompt is evaluated. Deterministic matches take priority; otherwise the prompt uses normal prompt transition timing.","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.prompt_condition.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.prompt_condition.prompt","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3.prompt_condition","typeLabel":"object"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.condition","typeLabel":"string · object · object · object"},"go_back_conditions":{"type":"array","items":{"type":"object","description":"A connection between conversation-flow nodes. When used in a node's edges array, transitions when its condition matches. Equation conditions compare dynamic variables and are checked in array order; the first match wins. If no equation matches, the LLM evaluates prompt conditions against the conversation and selects a matching transition, if any.","required":["id","transition_condition"],"properties":{"id":{"type":"string","description":"Unique identifier for the edge","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].id","typeLabel":"string"},"transition_condition":{"oneOf":[{"type":"object","required":["type","prompt"],"properties":{"type":{"type":"string","enum":["prompt"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.type","typeLabel":"enum\u003cstring>"},"prompt":{"type":"string","minLength":1,"description":"Prompt condition text","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0.prompt","typeLabel":"string"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.0","typeLabel":"object"},{"type":"object","required":["type","equations","operator"],"properties":{"type":{"type":"string","enum":["equation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].left","typeLabel":"string"},"operator":{"type":"string","enum":["==","!=",">",">=","\u003c","\u003c=","contains","not_contains","exists","not_exist"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.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":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX].right","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.equations","typeLabel":"object[]"},"operator":{"type":"string","enum":["||","\u0026\u0026"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].transition_condition","typeLabel":"object"},"destination_node_id":{"type":"string","description":"ID of the destination node","uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX].destination_node_id","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions.items.[INDEX]","typeLabel":"object"},"description":"The conditions for global node go back. There would be no destination_node_id for these edges.","uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.go_back_conditions","typeLabel":"object[]"},"cool_down":{"type":"number","minimum":1,"description":"The same global node won't be triggered again within the next N node transitions.","uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.cool_down","typeLabel":"number"},"positive_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.positive_finetune_examples","typeLabel":"object[]"},"negative_finetune_examples":{"type":"array","items":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"array","items":{"oneOf":[{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["agent","user"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.role","typeLabel":"enum\u003cstring>"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","name","arguments"],"properties":{"role":{"type":"string","enum":["tool_call_invocation"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.tool_call_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.name","typeLabel":"string"},"arguments":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1.arguments","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["role","tool_call_id","content"],"properties":{"role":{"type":"string","enum":["tool_call_result"],"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.role","typeLabel":"enum\u003cstring>"},"tool_call_id":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.tool_call_id","typeLabel":"string"},"content":{"type":"string","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2.content","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript.items.[INDEX]","typeLabel":"object"},"description":"Find tune the transition condition to this global node","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX].transcript","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples.items.[INDEX]","typeLabel":"object"},"description":"Don't transition to this node","uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting.negative_finetune_examples","typeLabel":"object[]"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.global_node_setting","typeLabel":"object"},"display_position":{"type":"object","properties":{"x":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.14.display_position.x","typeLabel":"number"},"y":{"type":"number","uniqueKey":"nodes.items.[INDEX].oneOf.14.display_position.y","typeLabel":"number"}},"description":"Position for frontend display","uniqueKey":"nodes.items.[INDEX].oneOf.14.display_position","typeLabel":"object"},"model_config":{"oneOf":[{"type":"object","description":"Model override for this node. Only cascading flows use it.","required":["primary"],"properties":{"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":"nodes.items.[INDEX].oneOf.14.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":"nodes.items.[INDEX].oneOf.14.model_config.oneOf.0.primary.tier","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_config.oneOf.0.primary","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_config.oneOf.0","typeLabel":"object"},{"type":"object","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_config.oneOf.1","typeLabel":"object"},{"type":"null","enum":[null],"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_config.oneOf.2","typeLabel":"null"}],"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_config","typeLabel":"object · object · null"},"model_choice":{"type":"object","description":"Deprecated, use model_config. When a request sends both and they differ, the one that differs from the stored node is used, and model_config wins if both changed.","required":["type","model"],"deprecated":true,"properties":{"type":{"type":"string","enum":["cascading"],"description":"Type of model choice","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_choice.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":"nodes.items.[INDEX].oneOf.14.model_choice.model","typeLabel":"enum\u003cstring>"},"high_priority":{"type":"boolean","description":"Whether to use high priority pool with more dedicated resource, default false","uniqueKey":"nodes.items.[INDEX].oneOf.14.model_choice.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":"nodes.items.[INDEX].oneOf.14.model_choice.ultrafast","typeLabel":"boolean"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.model_choice","typeLabel":"object"},"speak_during_execution":{"type":"boolean","description":"If true, will speak during execution","uniqueKey":"nodes.items.[INDEX].oneOf.14.speak_during_execution","typeLabel":"boolean"},"instruction":{"oneOf":[{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["prompt"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.0.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The prompt text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.0.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.0","typeLabel":"object"},{"type":"object","description":"Describes what to say to user when cancelling the transfer. Only applicable when speak_during_execution is true.","required":["type","text"],"properties":{"type":{"type":"string","enum":["static_text"],"description":"Type of instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.1.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"The static text for the instruction","isRequired":true,"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.1.text","typeLabel":"string"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction.oneOf.1","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX].oneOf.14.instruction","typeLabel":"object"}},"uniqueKey":"nodes.items.[INDEX].oneOf.14","typeLabel":"object"}],"uniqueKey":"nodes.items.[INDEX]","typeLabel":"object"},"description":"Array of nodes in the conversation flow.","example":[{"id":"start","type":"conversation","instruction":{"type":"prompt","text":"Greet the customer and ask how you can help them."},"edges":[{"id":"edge_1","transition_condition":{"type":"prompt","prompt":"Customer wants to book appointment"},"destination_node_id":"book_appointment"}]}],"uniqueKey":"nodes","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"conversation_flow_id":"\u003cstring>","version":123,"last_modification_timestamp":1703413636133,"model_config":{"type":"cascading","primary":{"model":"gpt-4.1","tier":"standard"},"backup":{"model":"gpt-4.1","tier":"standard","kick_in_timeout_ms":30150},"temperature":0},"backup_model":{"type":"cascading","model":"gpt-4.1","high_priority":true,"ultrafast":true,"backup_kick_in_timeout":30150},"model_choice":{"type":"cascading","model":"gpt-4.1","high_priority":true,"ultrafast":true},"model_temperature":0.7,"tool_call_strict_mode":true,"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,"global_prompt":"You are a helpful customer service agent.","flex_mode":false,"tools":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"components":[{"name":"Customer Information Collector","nodes":[{"id":"collect_info","type":"conversation","instruction":{"type":"prompt","text":"Ask the customer for their name and contact information."}}],"flex_mode":false,"tools":[{"type":"custom","name":"get_customer_info","description":"Get customer information from database","tool_id":"tool_001","url":"https://api.example.com/customer","method":"GET"}],"mcps":[{"name":"\u003cstring>","url":"\u003cstring>","headers":{"Authorization":"Bearer 1234567890"},"query_params":{"index":"1","key":"value"},"timeout_ms":123}],"start_node_id":"collect_info","begin_tag_display_position":{"x":100,"y":200},"notes":[{"id":"note_abc123","content":"Remember to handle edge cases here.","display_position":{"x":300,"y":150},"size":{"width":200,"height":100}}]}],"start_node_id":"start","default_dynamic_variables":{"company_name":"Retell Inc","support_hours":"9 AM - 5 PM"},"begin_tag_display_position":{"x":100,"y":200},"notes":[{"id":"note_abc123","content":"Remember to handle edge cases here.","display_position":{"x":300,"y":150},"size":{"width":200,"height":100}}],"mcps":[{"name":"\u003cstring>","url":"\u003cstring>","headers":{"Authorization":"Bearer 1234567890"},"query_params":{"index":"1","key":"value"},"timeout_ms":123}],"is_transfer_cf":false,"nodes":[{"id":"start","type":"conversation","instruction":{"type":"prompt","text":"Greet the customer and ask how you can help them."},"edges":[{"id":"edge_1","transition_condition":{"type":"prompt","prompt":"Customer wants to book appointment"},"destination_node_id":"book_appointment"}]}]}}},"exampleType":"generated"}},"exampleType":"generated"},"165bc92d-e96d-4710-b2e3-99b0629728f5":{"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"},"6046d835-b555-4359-9f6f-5a18d22e8a69":{"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"},"0b1cffc7-2220-4b36-b845-99130d3547d3":{"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"},"6f4adad0-00c6-431e-af13-efd96e76ac7e":{"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"},"16ece699-1ba0-460a-967e-8316b207a417":{"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":{"716b9be9-5a10-4a07-85ef-ccb091933a6d":{"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":{"4cbab741-77d0-4a95-9fbb-1de0afb81ba3":{"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":"Create Conversation Flow - Retell AI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-26T22:55:00.319Z","originalFileLocation":"api-references/create-conversation-flow.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=\"Create a new Conversation Flow that can be attached to an agent. This is used to generate response output for the agent.\">\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=\"Create Conversation Flow - Retell AI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a new Conversation Flow that can be attached to an agent. This is used to generate response output for the agent.\">\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/create-conversation-flow\">\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=Conversation+Flow+Response+Engine+%28for+conversation+flow+agent%29\u0026amp;title=Create+Conversation+Flow\u0026amp;description=Create+a+new+Conversation+Flow+that+can+be+attached+to+an+agent.+This+is+used+to+generate+response+output+for+the+agent.\u0026amp;theme=35696226f7b423b96c359dbf\u0026amp;signature=b798bcaa7993d3e9729b8082ee71030aba43740694539f6fd296d31284aab01c\">\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=\"Create Conversation Flow - Retell AI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a new Conversation Flow that can be attached to an agent. This is used to generate response output for the agent.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://retellai.mintlify.app/_mintlify/api/og/v2?division=Conversation+Flow+Response+Engine+%28for+conversation+flow+agent%29\u0026amp;title=Create+Conversation+Flow\u0026amp;description=Create+a+new+Conversation+Flow+that+can+be+attached+to+an+agent.+This+is+used+to+generate+response+output+for+the+agent.\u0026amp;theme=35696226f7b423b96c359dbf\u0026amp;signature=b798bcaa7993d3e9729b8082ee71030aba43740694539f6fd296d31284aab01c\">\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/create-conversation-flow\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-references/create-conversation-flow.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/create-conversation-flow#webpage\",\"url\":\"https://docs.retellai.com/api-references/create-conversation-flow\",\"name\":\"Create Conversation Flow\",\"description\":\"Create a new Conversation Flow that can be attached to an agent. This is used to generate response output for the agent.\",\"dateModified\":\"2026-01-26T22:55:00.319Z\",\"isPartOf\":{\"@id\":\"https://docs.retellai.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.retellai.com/api-references/create-conversation-flow#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.retellai.com/api-references/create-conversation-flow#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Retell AI\",\"item\":\"https://docs.retellai.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create Conversation Flow\",\"item\":\"https://docs.retellai.com/api-references/create-conversation-flow\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.retellai.com/api-references/create-conversation-flow#apireference\",\"headline\":\"Create Conversation Flow\",\"name\":\"Create Conversation Flow\",\"description\":\"Create a new Conversation Flow that can be attached to an agent. This is used to generate response output for the agent.\",\"url\":\"https://docs.retellai.com/api-references/create-conversation-flow\",\"mainEntityOfPage\":{\"@id\":\"https://docs.retellai.com/api-references/create-conversation-flow#webpage\"},\"dateModified\":\"2026-01-26T22:55:00.319Z\",\"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}","description":"Delete an existing Retell LLM Response Engine","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}","description":"Retrieve details of a specific Conversation Flow","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","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","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"}]}]},"title":"Create Conversation Flow - Retell AI","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}