Expanded workflow payload returned by GET /workflows/{workflow_id}/definition.
This is the editor-oriented response: it contains the workflow metadata plus the full canvas graph.
Show child attributes
Was this page helpful?
⌘I
Retrieve workflow definition
curl --request GET \ --url https://api.kapso.ai/platform/v1/workflows/{workflow_id}/definition \ --header 'X-API-Key: <api-key>'
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Kapso Documentation","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/kapso/PataiTeyJNV98BJM/logo/light.png?fit=max\u0026auto=format\u0026n=PataiTeyJNV98BJM\u0026q=85\u0026s=90daf3ba47fbb14af9cca43126691d73","dark":"https://mintcdn.com/kapso/PataiTeyJNV98BJM/logo/dark.png?fit=max\u0026auto=format\u0026n=PataiTeyJNV98BJM\u0026q=85\u0026s=31944d648c0277d7339e957955908a03"},"favicon":"https://mintcdn.com/kapso/Rwd1YXMhJPgFIqTW/favicon.svg?fit=max\u0026auto=format\u0026n=Rwd1YXMhJPgFIqTW\u0026q=85\u0026s=9e1a272e20343c6049e0452b2c5c52c2","appearance":{"default":"dark"},"navbar":{"links":[{"href":"/changelog","label":"Changelog"},{"href":"https://github.com/gokapso","label":"GitHub"},{"href":"https://wa.me/16266694464?text=Hi!%20I%20need%20support%20with%20Kapso","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.kapso.ai"}},"contextual":{"options":["copy","chatgpt","claude","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"kapso","hasAudioNarration":false,"actualSubdomain":"kapso","customDomains":["docs.kapso.ai"],"gitSource":{"type":"github","owner":"gokapso","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae23ef12c07e0f611b76e78","collectionId":"d98b1253-87cc-4091-8d34-5bfe57145085","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae23ef12c07e0f611b76e78"},"feedback":{"issues":true,"thumbs":true},"entitlements":{},"buildId":"6ae23ef12c07e0f611b76e78","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":201},{"language":"default","tag":"Documentation","count":146},{"language":"default","tag":"Platform API","count":113},{"language":"default","tag":"WhatsApp","count":57},{"language":"default","tag":"WhatsApp API","count":46},{"language":"default","tag":"Workflows","count":37},{"language":"default","tag":"Automations","count":35},{"language":"default","tag":"Workflows API","count":29},{"language":"default","tag":"Getting started","count":24},{"language":"default","tag":"WhatsApp Flows","count":22}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api/platform/v1/functions/workflows/retrieve-workflow-definition","slug":"/api/platform/v1/functions/workflows/retrieve-workflow-definition","pageMetadata":{"title":"Retrieve workflow definition","description":"Get the editor-oriented workflow payload for a specific workflow.\n\nThis endpoint returns everything needed to load the canvas:\n- Base workflow metadata\n- `definition.nodes` built from `flow_steps`\n- `definition.edges` built from `flow_edges`\n\nResponse details:\n- `definition.nodes[].id` is the workflow step identifier, not the database ID\n- `definition.edges[].id` is the persisted edge UUID\n- `definition.nodes[].data.node_type` is the canonical backend node type\n- `definition.nodes[].data.config` changes shape by node type\n- Config fields are returned in snake_case\n- Function and call-workflow references are returned as IDs in the Platform API; the Kapso CLI can export them as slugs for local source repos\n\nUse this endpoint when building or syncing a visual workflow editor, exporting a workflow graph, or cloning an existing workflow definition.\n","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /workflows/{workflow_id}/definition","href":"/api/platform/v1/functions/workflows/retrieve-workflow-definition","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Get the editor-oriented workflow payload for a specific workflow.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"This endpoint returns everything needed to load the canvas:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Base workflow metadata\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"definition.nodes\"\n }), \" built from \", _jsx(_components.code, {\n children: \"flow_steps\"\n })]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"definition.edges\"\n }), \" built from \", _jsx(_components.code, {\n children: \"flow_edges\"\n })]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Response details:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"definition.nodes[].id\"\n }), \" is the workflow step identifier, not the database ID\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"definition.edges[].id\"\n }), \" is the persisted edge UUID\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"definition.nodes[].data.node_type\"\n }), \" is the canonical backend node type\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"definition.nodes[].data.config\"\n }), \" changes shape by node type\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Config fields are returned in snake_case\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Function and call-workflow references are returned as IDs in the Platform API; the Kapso CLI can export them as slugs for local source repos\"\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Use this endpoint when building or syncing a visual workflow editor, exporting a workflow graph, or cloning an existing workflow definition.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Retrieve workflow definition","description":"Get the editor-oriented workflow payload for a specific workflow.\n\nThis endpoint returns everything needed to load the canvas:\n- Base workflow metadata\n- `definition.nodes` built from `flow_steps`\n- `definition.edges` built from `flow_edges`\n\nResponse details:\n- `definition.nodes[].id` is the workflow step identifier, not the database ID\n- `definition.edges[].id` is the persisted edge UUID\n- `definition.nodes[].data.node_type` is the canonical backend node type\n- `definition.nodes[].data.config` changes shape by node type\n- Config fields are returned in snake_case\n- Function and call-workflow references are returned as IDs in the Platform API; the Kapso CLI can export them as slugs for local source repos\n\nUse this endpoint when building or syncing a visual workflow editor, exporting a workflow graph, or cloning an existing workflow definition.\n","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /workflows/{workflow_id}/definition","href":"/api/platform/v1/functions/workflows/retrieve-workflow-definition","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/kapso/266d33a37da6f1c1/validate-openapi.js"],"openApiReferenceData":{"operation":{"tags":["Workflows"],"summary":"Retrieve workflow definition","description":"Get the editor-oriented workflow payload for a specific workflow.\n\nThis endpoint returns everything needed to load the canvas:\n- Base workflow metadata\n- `definition.nodes` built from `flow_steps`\n- `definition.edges` built from `flow_edges`\n\nResponse details:\n- `definition.nodes[].id` is the workflow step identifier, not the database ID\n- `definition.edges[].id` is the persisted edge UUID\n- `definition.nodes[].data.node_type` is the canonical backend node type\n- `definition.nodes[].data.config` changes shape by node type\n- Config fields are returned in snake_case\n- Function and call-workflow references are returned as IDs in the Platform API; the Kapso CLI can export them as slugs for local source repos\n\nUse this endpoint when building or syncing a visual workflow editor, exporting a workflow graph, or cloning an existing workflow definition.\n","operationId":"getWorkflowDefinition","responses":{"200":"9cc31931-761d-4251-af00-ac0eac52d347","401":"f65f9bbe-8248-4b9b-b93d-a9465d93a29d","404":"0bb2ab20-5730-454d-9765-0de927d40073"},"method":"get","type":"path","servers":["11d7f2a4-4944-4cb3-8ff1-643bb0a50340"],"security":["c7886ad0-a016-4d4d-80dd-a986c288519f"],"path":"/workflows/{workflow_id}/definition","baseUrlOptions":["https://api.kapso.ai/platform/v1"],"title":"Retrieve workflow definition","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"e1748595-95fc-4bb1-9bdc-9d30cec930eb":{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"description":"Workflow identifier","uniqueKey":"","typeLabel":"string\u003cuuid>"},"description":"Workflow identifier"}},"responses":{"9cc31931-761d-4251-af00-ac0eac52d347":{"description":"Workflow definition retrieved successfully","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","description":"Expanded workflow payload returned by `GET /workflows/{workflow_id}/definition`.\nThis is the editor-oriented response: it contains the workflow metadata plus the full canvas graph.\n","required":["definition","id","name","slug","status","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid","description":"Unique workflow identifier","isRequired":true,"uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"name":{"type":"string","description":"Workflow name (unique per project)","isRequired":true,"uniqueKey":"data.name","typeLabel":"string"},"slug":{"type":"string","description":"URL-safe workflow identifier (lowercase alphanumeric with hyphens). Stable across renames — useful as an external sync key. Auto-generated from `name` on create if not provided. Unique within the project.\n","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","example":"inbound-support","isRequired":true,"uniqueKey":"data.slug","typeLabel":"string"},"status":{"type":"string","enum":["draft","active","archived"],"description":"Workflow lifecycle status:\n- `draft`: Under development, not executable\n- `active`: Published and executable\n- `archived`: Inactive, no longer in use\n","isRequired":true,"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"created_at":{"type":"string","format":"date-time","description":"Workflow creation timestamp","isRequired":true,"uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","description":"Last modification timestamp","isRequired":true,"uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"},"definition":{"type":"object","required":["nodes","edges"],"properties":{"nodes":{"type":"array","description":"Canvas nodes derived from `flow_steps`.\n`id` is the step identifier used inside the workflow definition, not the database primary key.\n","items":{"type":"object","required":["id","type","position","data"],"properties":{"id":{"type":"string","description":"Stable step identifier within the workflow graph.\nThis matches `flow_steps.identifier` and is what edges reference via `source` and `target`.\n","example":"send_intro","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","description":"Canvas renderer type. The API currently returns `flow-node`.","example":"flow-node","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].type","typeLabel":"string"},"position":{"type":"object","required":["x","y"],"properties":{"x":{"type":"number","description":"Horizontal canvas position.","example":360,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].position.x","typeLabel":"number"},"y":{"type":"number","description":"Vertical canvas position.","example":120,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].position.y","typeLabel":"number"}},"additionalProperties":false,"description":"Canvas position of the node.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].position","typeLabel":"object"},"data":{"type":"object","required":["node_type","config","display_name"],"properties":{"node_type":{"type":"string","description":"Persisted workflow node type.\n\nCommon values returned by the Rails serializer:\n- `start`\n- action node types from executable actions such as `send_text`, `send_template`, `send_interactive`, `webhook`, `set_variable`, `handoff`\n- `wait_for_response`\n- `decide`\n- `agent`\n- `call`\n","example":"wait_for_response","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.node_type","typeLabel":"string"},"config":{"oneOf":[{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.0","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","required":["message"],"properties":{"message":{"oneOf":[{"type":"string","description":"Text message body. Supports workflow variable interpolation such as `{{vars.customer_name}}`.","example":"Hi {{vars.customer_name}}, how can we help?","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.message.oneOf.0","typeLabel":"string"},{"type":"object","description":"Text message body. Supports workflow variable interpolation such as `{{vars.customer_name}}`.","example":"Hi {{vars.customer_name}}, how can we help?","additionalProperties":true,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.message.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.message","typeLabel":"string | object"},"phone_number_id":{"oneOf":[{"type":"string","description":"Preferred WhatsApp Business phone number ID to send from. If omitted, Kapso uses the conversation's phone number.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.phone_number_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Preferred WhatsApp Business phone number ID to send from. If omitted, Kapso uses the conversation's phone number.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.phone_number_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.phone_number_id","typeLabel":"string | null"},"whatsapp_config_id":{"oneOf":[{"type":"string","format":"uuid","description":"Legacy internal WhatsApp config ID. Prefer `phone_number_id` for new integrations.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.whatsapp_config_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Legacy internal WhatsApp config ID. Prefer `phone_number_id` for new integrations.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.whatsapp_config_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.whatsapp_config_id","typeLabel":"string\u003cuuid> | null"},"to_phone_number":{"oneOf":[{"type":"string","description":"Override destination phone number. Mainly used by observer-mode workflows that are not attached to an inbound conversation.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.to_phone_number.oneOf.0","typeLabel":"string"},{"type":"null","description":"Override destination phone number. Mainly used by observer-mode workflows that are not attached to an inbound conversation.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.to_phone_number.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.to_phone_number","typeLabel":"string | null"},"delay_seconds":{"oneOf":[{"type":"integer","minimum":0,"description":"Delay before sending the message.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.delay_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"description":"Delay before sending the message.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.delay_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.delay_seconds","typeLabel":"integer | null"},"provider_model_id":{"oneOf":[{"type":"string","format":"uuid","description":"AI model ID used when resolving AI fields.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.provider_model_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"AI model ID used when resolving AI fields.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.provider_model_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.provider_model_id","typeLabel":"string\u003cuuid> | null"},"provider_model_name":{"oneOf":[{"type":"string","description":"AI model name used when resolving AI fields.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.provider_model_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"AI model name used when resolving AI fields.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.provider_model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.provider_model_name","typeLabel":"string | null"},"ai_field_config":{"type":"object","additionalProperties":true,"description":"AI field-resolution settings.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1.ai_field_config","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.1","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","required":["template_id"],"properties":{"template_id":{"type":"string","format":"uuid","description":"WhatsApp template ID.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.template_id","typeLabel":"string\u003cuuid>"},"template_name":{"oneOf":[{"type":"string","description":"Template name returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.template_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Template name returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.template_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.template_name","typeLabel":"string | null"},"parameters":{"description":"Template parameters. Supports Meta components format, `template_params`, arrays, and objects.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.parameters","typeLabel":"any"},"phone_number_id":{"oneOf":[{"type":"string","description":"Preferred WhatsApp Business phone number ID to send from. If omitted, Kapso uses the conversation's phone number.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.phone_number_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Preferred WhatsApp Business phone number ID to send from. If omitted, Kapso uses the conversation's phone number.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.phone_number_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.phone_number_id","typeLabel":"string | null"},"whatsapp_config_id":{"oneOf":[{"type":"string","format":"uuid","description":"Legacy internal WhatsApp config ID. Prefer `phone_number_id` for new integrations.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.whatsapp_config_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Legacy internal WhatsApp config ID. Prefer `phone_number_id` for new integrations.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.whatsapp_config_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.whatsapp_config_id","typeLabel":"string\u003cuuid> | null"},"to_phone_number":{"oneOf":[{"type":"string","description":"Override destination phone number.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.to_phone_number.oneOf.0","typeLabel":"string"},{"type":"null","description":"Override destination phone number.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.to_phone_number.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.to_phone_number","typeLabel":"string | null"},"provider_model_id":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.provider_model_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.provider_model_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.provider_model_id","typeLabel":"string\u003cuuid> | null"},"provider_model_name":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.provider_model_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.provider_model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.provider_model_name","typeLabel":"string | null"},"ai_field_config":{"type":"object","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2.ai_field_config","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.2","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","required":["interactive_type","body_text"],"properties":{"interactive_type":{"type":"string","enum":["button","list","cta_url","flow","product","product_list","catalog_message","location_request_message"],"description":"WhatsApp interactive message type.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.interactive_type","typeLabel":"enum\u003cstring>"},"body_text":{"oneOf":[{"type":"string","description":"Main message body.","maxLength":1024,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.body_text.oneOf.0","typeLabel":"string"},{"type":"object","description":"Main message body.","additionalProperties":true,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.body_text.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.body_text","typeLabel":"string | object"},"footer_text":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.footer_text.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.footer_text.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.footer_text","typeLabel":"string | null"},"header_type":{"oneOf":[{"type":"string","enum":["none","text","image","video","document",null],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["none","text","image","video","document",null],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_type","typeLabel":"enum\u003cstring> | null"},"header_text":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_text.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_text.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_text","typeLabel":"string | null"},"header_media_url":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_media_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_media_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_media_url","typeLabel":"string | null"},"buttons":{"type":"array","maxItems":3,"items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","description":"Stable button payload ID.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.buttons.items.[INDEX].id","typeLabel":"string"},"title":{"type":"string","maxLength":20,"description":"Button label shown to the user.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.buttons.items.[INDEX].title","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.buttons.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.buttons","typeLabel":"object[]"},"list_button_text":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.list_button_text.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.list_button_text.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.list_button_text","typeLabel":"string | null"},"list_sections":{"type":"array","maxItems":10,"items":{"type":"object","required":["rows"],"properties":{"rows":{"type":"array","items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.list_sections.items.[INDEX].rows.items.[INDEX].id","typeLabel":"string"},"title":{"type":"string","maxLength":24,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.list_sections.items.[INDEX].rows.items.[INDEX].title","typeLabel":"string"},"description":{"type":"string","maxLength":72,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.list_sections.items.[INDEX].rows.items.[INDEX].description","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.list_sections.items.[INDEX].rows.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.list_sections.items.[INDEX].rows","typeLabel":"object[]"},"title":{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.list_sections.items.[INDEX].title","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.list_sections.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.list_sections","typeLabel":"object[]"},"cta_display_text":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.cta_display_text.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.cta_display_text.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.cta_display_text","typeLabel":"string | null"},"cta_url":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.cta_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.cta_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.cta_url","typeLabel":"string | null"},"flow_id":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_id","typeLabel":"string | null"},"flow_cta":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_cta.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_cta.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_cta","typeLabel":"string | null"},"flow_token":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_token.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_token","typeLabel":"string | null"},"flow_action":{"oneOf":[{"type":"string","enum":["navigate","data_exchange",null],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_action.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["navigate","data_exchange",null],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_action.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_action","typeLabel":"enum\u003cstring> | null"},"flow_action_payload":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_action_payload.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_action_payload.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.flow_action_payload","typeLabel":"object | null"},"header_config":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Legacy expanded header config returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_config.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Legacy expanded header config returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.header_config","typeLabel":"object | null"},"action_config":{"oneOf":[{"type":"object","additionalProperties":true,"description":"Legacy expanded action config returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.action_config.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"description":"Legacy expanded action config returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.action_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.action_config","typeLabel":"object | null"},"phone_number_id":{"oneOf":[{"type":"string","description":"Preferred WhatsApp Business phone number ID to send from. If omitted, Kapso uses the conversation's phone number.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.phone_number_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Preferred WhatsApp Business phone number ID to send from. If omitted, Kapso uses the conversation's phone number.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.phone_number_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.phone_number_id","typeLabel":"string | null"},"whatsapp_config_id":{"oneOf":[{"type":"string","format":"uuid","description":"Legacy internal WhatsApp config ID. Prefer `phone_number_id` for new integrations.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.whatsapp_config_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Legacy internal WhatsApp config ID. Prefer `phone_number_id` for new integrations.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.whatsapp_config_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.whatsapp_config_id","typeLabel":"string\u003cuuid> | null"},"to_phone_number":{"oneOf":[{"type":"string","description":"Override destination phone number.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.to_phone_number.oneOf.0","typeLabel":"string"},{"type":"null","description":"Override destination phone number.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.to_phone_number.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.to_phone_number","typeLabel":"string | null"},"provider_model_id":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.provider_model_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.provider_model_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.provider_model_id","typeLabel":"string\u003cuuid> | null"},"provider_model_name":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.provider_model_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.provider_model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.provider_model_name","typeLabel":"string | null"},"ai_field_config":{"type":"object","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3.ai_field_config","typeLabel":"object"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.3","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","properties":{"has_timeout":{"type":"boolean","description":"Whether the wait step automatically times out.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.4.has_timeout","typeLabel":"boolean"},"timeout_seconds":{"oneOf":[{"type":"integer","description":"Timeout duration in seconds when `has_timeout` is true.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.4.timeout_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Timeout duration in seconds when `has_timeout` is true.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.4.timeout_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.4.timeout_seconds","typeLabel":"integer | null"},"save_response_to":{"oneOf":[{"type":"string","description":"Variable name where the incoming response should be stored.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.4.save_response_to.oneOf.0","typeLabel":"string"},{"type":"null","description":"Variable name where the incoming response should be stored.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.4.save_response_to.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.4.save_response_to","typeLabel":"string | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.4","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","required":["decision_type","conditions","llm_configuration"],"properties":{"decision_type":{"type":"string","enum":["ai","function"],"description":"Whether branching is evaluated by an AI model or a Kapso function.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.decision_type","typeLabel":"enum\u003cstring>"},"conditions":{"type":"array","description":"Ordered branch definitions for the decide step.","items":{"type":"object","required":["id","label"],"properties":{"id":{"type":"string","format":"uuid","description":"Condition identifier.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.conditions.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"label":{"type":"string","description":"Edge label emitted by this condition.","example":"qualified","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.conditions.items.[INDEX].label","typeLabel":"string"},"description":{"oneOf":[{"type":"string","description":"Human-readable condition description.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.conditions.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Human-readable condition description.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.conditions.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.conditions.items.[INDEX].description","typeLabel":"string | null"}},"additionalProperties":false,"description":"A branch option inside a decide step.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.conditions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.conditions","typeLabel":"object[]"},"llm_configuration":{"type":"object","description":"Additional LLM configuration stored on the decide step.","additionalProperties":true,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.llm_configuration","typeLabel":"object"},"function_id":{"oneOf":[{"type":"string","format":"uuid","description":"Referenced function ID when `decision_type=function`.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.function_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Referenced function ID when `decision_type=function`.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.function_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.function_id","typeLabel":"string\u003cuuid> | null"},"function_name":{"oneOf":[{"type":"string","description":"Referenced function name when `decision_type=function`.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.function_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Referenced function name when `decision_type=function`.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.function_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.function_name","typeLabel":"string | null"},"provider_model_id":{"oneOf":[{"type":"string","format":"uuid","description":"Referenced model ID when `decision_type=ai`.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.provider_model_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Referenced model ID when `decision_type=ai`.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.provider_model_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.provider_model_id","typeLabel":"string\u003cuuid> | null"},"provider_model_name":{"oneOf":[{"type":"string","description":"Referenced model name when `decision_type=ai`.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.provider_model_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Referenced model name when `decision_type=ai`.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.provider_model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.provider_model_name","typeLabel":"string | null"},"llm_temperature":{"oneOf":[{"type":"number","description":"Sampling temperature for AI decisions.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.llm_temperature.oneOf.0","typeLabel":"number"},{"type":"null","description":"Sampling temperature for AI decisions.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.llm_temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.llm_temperature","typeLabel":"number | null"},"llm_max_tokens":{"oneOf":[{"type":"integer","description":"Max output tokens for AI decisions.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.llm_max_tokens.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Max output tokens for AI decisions.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.llm_max_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5.llm_max_tokens","typeLabel":"integer | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.5","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","required":["function_id"],"properties":{"function_id":{"type":"string","format":"uuid","description":"Kapso Function ID to execute.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.6.function_id","typeLabel":"string\u003cuuid>"},"function_name":{"oneOf":[{"type":"string","description":"Function name returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.6.function_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Function name returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.6.function_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.6.function_name","typeLabel":"string | null"},"save_response_to":{"oneOf":[{"type":"string","description":"Variable name where the function response should be stored.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.6.save_response_to.oneOf.0","typeLabel":"string"},{"type":"null","description":"Variable name where the function response should be stored.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.6.save_response_to.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.6.save_response_to","typeLabel":"string | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.6","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"External URL to call.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.url","typeLabel":"string\u003curi>"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"default":"POST","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.method","typeLabel":"enum\u003cstring>"},"headers":{"oneOf":[{"type":"object","description":"HTTP headers. Object form is preferred; definition responses may contain JSON strings for legacy webhook actions.","additionalProperties":{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.headers.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.headers.oneOf.0","typeLabel":"object"},{"type":"string","description":"HTTP headers. Object form is preferred; definition responses may contain JSON strings for legacy webhook actions.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.headers.oneOf.1","typeLabel":"string"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.headers","typeLabel":"object | string"},"body_template":{"description":"Request body template. Object form is preferred; definition responses may contain JSON strings for legacy webhook actions.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.body_template","typeLabel":"any"},"provider_model_id":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.provider_model_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.provider_model_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.provider_model_id","typeLabel":"string\u003cuuid> | null"},"provider_model_name":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.provider_model_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.provider_model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.provider_model_name","typeLabel":"string | null"},"ai_field_config":{"type":"object","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.ai_field_config","typeLabel":"object"},"save_response_to":{"oneOf":[{"type":"string","description":"Variable name where the webhook response should be stored.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.save_response_to.oneOf.0","typeLabel":"string"},{"type":"null","description":"Variable name where the webhook response should be stored.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.save_response_to.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7.save_response_to","typeLabel":"string | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.7","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","properties":{"system_prompt":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.system_prompt.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.system_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.system_prompt","typeLabel":"string | null"},"provider_model_id":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.provider_model_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.provider_model_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.provider_model_id","typeLabel":"string\u003cuuid> | null"},"provider_model_name":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.provider_model_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.provider_model_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.provider_model_name","typeLabel":"string | null"},"temperature":{"oneOf":[{"type":"number","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.temperature.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.temperature.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.temperature","typeLabel":"number | null"},"max_iterations":{"oneOf":[{"type":"integer","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.max_iterations.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.max_iterations.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.max_iterations","typeLabel":"integer | null"},"max_tokens":{"oneOf":[{"type":"integer","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.max_tokens.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.max_tokens.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.max_tokens","typeLabel":"integer | null"},"reasoning_effort":{"oneOf":[{"type":"string","enum":["none","minimal","low","medium","high","xhigh","max",null],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.reasoning_effort.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["none","minimal","low","medium","high","xhigh","max",null],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.reasoning_effort.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.reasoning_effort","typeLabel":"enum\u003cstring> | null"},"prompt_cache_ttl":{"type":"string","enum":["5m","1h"],"default":"5m","description":"How long reusable prompt content stays cached. `1h` is only accepted for\nAnthropic models (including Anthropic models served through OpenRouter);\nother models must use `5m`.\n","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.prompt_cache_ttl","typeLabel":"enum\u003cstring>"},"observer_prompt_mode":{"type":"string","enum":["analysis_only","interactive_chat"],"description":"Prompt orchestration mode used by the flow agent.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.observer_prompt_mode","typeLabel":"enum\u003cstring>"},"message_delivery_mode":{"type":"string","enum":["auto_send_assistant_text","tool_only"],"default":"auto_send_assistant_text","description":"Controls how assistant text becomes user-visible.\n- `auto_send_assistant_text`: normal assistant text responses are sent to the WhatsApp user automatically.\n- `tool_only`: normal assistant text is internal only; the agent must call `send_notification_to_user` to send user-visible messages.\n\n`tool_only` requires a model that accepts forced tool calls. `claude-fable-5-1`, `claude-opus-5-5` and `claude-sonnet-5-5` are rejected with a `provider_model` validation error.\n","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.message_delivery_mode","typeLabel":"enum\u003cstring>"},"enabled_default_tools":{"type":"array","items":{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.enabled_default_tools.items.[INDEX]","typeLabel":"string"},"description":"Built-in agent tools enabled for this node.","example":["emit_event","complete_task"],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.enabled_default_tools","typeLabel":"string[]"},"default_tool_configs":{"type":"object","description":"Optional configuration for built-in agent tools.","properties":{"emit_event":{"type":"object","description":"Configuration for the built-in `emit_event` tool.","properties":{"event_definition_ids":{"type":"array","description":"Optional allowlist of project event definition IDs the agent may emit. Omit or leave empty to allow any valid project event.","items":{"type":"string","format":"uuid","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.default_tool_configs.emit_event.event_definition_ids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.default_tool_configs.emit_event.event_definition_ids","typeLabel":"string\u003cuuid>[]"}},"additionalProperties":false,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.default_tool_configs.emit_event","typeLabel":"object"}},"additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.default_tool_configs","typeLabel":"object"},"flow_agent_function_tools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX].name","typeLabel":"string"},"description":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX].description","typeLabel":"string | null"},"function_id":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX].function_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX].function_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX].function_id","typeLabel":"string\u003cuuid> | null"},"function_name":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX].function_name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX].function_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX].function_name","typeLabel":"string | null"},"input_schema":{"type":"object","description":"JSON Schema-like input contract exposed to the agent.","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX].input_schema","typeLabel":"object"}},"additionalProperties":false,"description":"Function tool attached to an agent node.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_function_tools","typeLabel":"object[]"},"flow_agent_webhooks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].name","typeLabel":"string"},"description":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].description","typeLabel":"string | null"},"url":{"oneOf":[{"type":"string","description":"URL the agent can call.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","description":"URL the agent can call.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].url","typeLabel":"string | null"},"http_method":{"oneOf":[{"type":"string","description":"HTTP method used for the request.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].http_method.oneOf.0","typeLabel":"string"},{"type":"null","description":"HTTP method used for the request.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].http_method.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].http_method","typeLabel":"string | null"},"headers":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].headers.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].headers","typeLabel":"object | null"},"body":{"description":"Request body template.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].body","typeLabel":"any"},"body_schema":{"oneOf":[{"type":"object","description":"Optional schema describing the request/response payload.","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].body_schema.oneOf.0","typeLabel":"object"},{"type":"null","description":"Optional schema describing the request/response payload.","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].body_schema.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].body_schema","typeLabel":"object | null"},"jmespath_query":{"oneOf":[{"type":"string","description":"Optional JMESPath projection applied to the response.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].jmespath_query.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional JMESPath projection applied to the response.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].jmespath_query.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].jmespath_query","typeLabel":"string | null"},"ai_field_config":{"type":"object","description":"AI field-resolution settings for dynamic fields.","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX].ai_field_config","typeLabel":"object"}},"additionalProperties":false,"description":"Custom webhook tool attached to an agent node.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_webhooks","typeLabel":"object[]"},"flow_agent_knowledge_bases":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Knowledge base name. Also used to derive the search tool name exposed to the agent (a name of \"FAQ\" yields `search_faq`); colliding names get a `_2`, `_3`, ... suffix.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_knowledge_bases.items.[INDEX].name","typeLabel":"string"},"description":{"oneOf":[{"type":"string","description":"Included in the search tool description so the agent can tell this knowledge base apart from the others on the same node.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_knowledge_bases.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Included in the search tool description so the agent can tell this knowledge base apart from the others on the same node.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_knowledge_bases.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_knowledge_bases.items.[INDEX].description","typeLabel":"string | null"},"knowledge_base_text":{"oneOf":[{"type":"string","description":"Inline knowledge base content available to the agent. Searched by keyword, line by line, so keep each line self-contained.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_knowledge_bases.items.[INDEX].knowledge_base_text.oneOf.0","typeLabel":"string"},{"type":"null","description":"Inline knowledge base content available to the agent. Searched by keyword, line by line, so keep each line self-contained.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_knowledge_bases.items.[INDEX].knowledge_base_text.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_knowledge_bases.items.[INDEX].knowledge_base_text","typeLabel":"string | null"}},"additionalProperties":false,"description":"Inline knowledge base attached to an agent node.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_knowledge_bases.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_knowledge_bases","typeLabel":"object[]"},"flow_agent_mcp_servers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers.items.[INDEX].name","typeLabel":"string"},"description":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers.items.[INDEX].description","typeLabel":"string | null"},"url":{"oneOf":[{"type":"string","description":"MCP server base URL.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","description":"MCP server base URL.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers.items.[INDEX].url","typeLabel":"string | null"},"headers":{"oneOf":[{"type":"object","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers.items.[INDEX].headers.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers.items.[INDEX].headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers.items.[INDEX].headers","typeLabel":"object | null"}},"additionalProperties":false,"description":"MCP server definition attached to an agent node.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_mcp_servers","typeLabel":"object[]"},"flow_agent_resources":{"type":"array","items":{"type":"object","properties":{"id":{"oneOf":[{"type":"string","format":"uuid","description":"Resource ID returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Resource ID returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].id","typeLabel":"string\u003cuuid> | null"},"resource_type":{"type":"string","enum":["github_repository"],"description":"Resource type. v1 supports GitHub repositories.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].resource_type","typeLabel":"enum\u003cstring>"},"repo_url":{"type":"string","description":"GitHub repository URL.","example":"https://github.com/org/repo","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].repo_url","typeLabel":"string"},"owner":{"oneOf":[{"type":"string","description":"Repository owner returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].owner.oneOf.0","typeLabel":"string"},{"type":"null","description":"Repository owner returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].owner.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].owner","typeLabel":"string | null"},"repo_name":{"oneOf":[{"type":"string","description":"Repository name returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].repo_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Repository name returned by definition responses.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].repo_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].repo_name","typeLabel":"string | null"},"branch":{"oneOf":[{"type":"string","description":"Branch to clone. Defaults to the repository default branch.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].branch.oneOf.0","typeLabel":"string"},{"type":"null","description":"Branch to clone. Defaults to the repository default branch.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].branch.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].branch","typeLabel":"string | null"},"auth_type":{"type":"string","enum":["pat","github_app","public"],"description":"How the sandbox authenticates to the repository. `pat` requires a Personal Access Token, `github_app` requires `github_app_installation_id`, and `public` clears stored credentials.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].auth_type","typeLabel":"enum\u003cstring>"},"pat":{"oneOf":[{"type":"string","description":"GitHub Personal Access Token. Accepted on write; never returned by the API.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].pat.oneOf.0","typeLabel":"string"},{"type":"null","description":"GitHub Personal Access Token. Accepted on write; never returned by the API.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].pat.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].pat","typeLabel":"string | null"},"has_pat":{"oneOf":[{"type":"boolean","description":"Returned when credentials are stored for the resource.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].has_pat.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Returned when credentials are stored for the resource.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].has_pat.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].has_pat","typeLabel":"boolean | null"},"github_app_installation_id":{"oneOf":[{"type":"string","format":"uuid","description":"ID of the GitHub App connection used for this repository. It must reference an connection that is active on the workflow's project and that grants access to the repository.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].github_app_installation_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"ID of the GitHub App connection used for this repository. It must reference an connection that is active on the workflow's project and that grants access to the repository.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].github_app_installation_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].github_app_installation_id","typeLabel":"string\u003cuuid> | null"},"has_github_app":{"oneOf":[{"type":"boolean","description":"Returned when the resource is backed by a GitHub App connection.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].has_github_app.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Returned when the resource is backed by a GitHub App connection.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].has_github_app.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].has_github_app","typeLabel":"boolean | null"},"imported_missing_pat":{"oneOf":[{"type":"boolean","description":"Returned when an imported resource references credentials that were not present in the write payload.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].imported_missing_pat.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Returned when an imported resource references credentials that were not present in the write payload.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].imported_missing_pat.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].imported_missing_pat","typeLabel":"boolean | null"},"imported_missing_github_app":{"oneOf":[{"type":"boolean","description":"Returned when an imported resource requested GitHub App authentication but no usable connection was available in the target project. Select a connection before running the workflow.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].imported_missing_github_app.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Returned when an imported resource requested GitHub App authentication but no usable connection was available in the target project. Select a connection before running the workflow.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].imported_missing_github_app.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX].imported_missing_github_app","typeLabel":"boolean | null"}},"additionalProperties":false,"description":"Repository resource mounted into an agent sandbox.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8.flow_agent_resources","typeLabel":"object[]"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.8","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","properties":{"workflow_id":{"oneOf":[{"type":"string","format":"uuid","description":"ID of the called workflow.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.9.workflow_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"ID of the called workflow.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.9.workflow_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.9.workflow_id","typeLabel":"string\u003cuuid> | null"},"workflow_name":{"oneOf":[{"type":"string","description":"Name of the called workflow.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.9.workflow_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Name of the called workflow.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.9.workflow_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.9.workflow_name","typeLabel":"string | null"},"save_error_to":{"oneOf":[{"type":"string","description":"Variable name where child-workflow errors should be stored.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.9.save_error_to.oneOf.0","typeLabel":"string"},{"type":"null","description":"Variable name where child-workflow errors should be stored.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.9.save_error_to.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.9.save_error_to","typeLabel":"string | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.9","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","properties":{"reason":{"oneOf":[{"type":"string","description":"Optional reason stored with the handoff event.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.10.reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional reason stored with the handoff event.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.10.reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.10.reason","typeLabel":"string | null"},"context_data":{"description":"Optional context payload made available to the human handoff process.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.10.context_data","typeLabel":"any"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.10","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","required":["variable_name","variable_value"],"properties":{"variable_name":{"type":"string","description":"Workflow variable name to set.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.11.variable_name","typeLabel":"string"},"variable_value":{"description":"Value to store. Strings support variable interpolation.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.11.variable_value","typeLabel":"any"},"value_type":{"type":"string","enum":["string","number","boolean","json"],"default":"string","description":"Value coercion mode.","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.11.value_type","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.11","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","required":["event_name"],"properties":{"event_name":{"type":"string","description":"Lowercase dotted snake_case Project Event name to emit.","example":"conversation.csat_scored","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.12.event_name","typeLabel":"string"},"properties":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.12.properties.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.12.properties.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.12.properties.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.12.properties.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.12.properties.additionalProperties","typeLabel":"string | number | boolean | null"},"description":"Flat scalar Project Event properties. Values may be string, number, boolean, or null.","example":{"score":5,"source":"workflow"},"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.12.properties","typeLabel":"object"},"occurred_at":{"oneOf":[{"type":"string","description":"Optional ISO 8601 timestamp or workflow variable. Leave blank to use current time.","example":"{{vars.scored_at}}","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.12.occurred_at.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional ISO 8601 timestamp or workflow variable. Leave blank to use current time.","example":"{{vars.scored_at}}","uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.12.occurred_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.12.occurred_at","typeLabel":"string | null"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.12","typeLabel":"object"},{"type":"object","description":"Node configuration payload. Shape depends on `node_type`.\n\nBuilt-in shapes returned by the definition endpoint:\n- `start`: empty object\n- `wait_for_response`: timeout and variable capture settings\n- `decide`: decision strategy, branches, and model/function settings\n- `agent`: model settings plus nested tools, webhooks, knowledge bases, and MCP servers\n- `call`: referenced workflow ID/name and error variable mapping\n\nAction nodes use the underlying action model's `to_config` output, so keys vary by action type.\n","additionalProperties":true,"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config.oneOf.13","typeLabel":"object"}],"isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.config","typeLabel":"object"},"display_name":{"type":"string","description":"Human-friendly label shown in the visual editor.","example":"Wait for response","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data.display_name","typeLabel":"string"}},"additionalProperties":false,"description":"Node payload rendered under `definition.nodes[].data`.","isRequired":true,"uniqueKey":"data.definition.nodes.items.[INDEX].data","typeLabel":"object"}},"description":"A node in the workflow canvas.","uniqueKey":"data.definition.nodes.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.definition.nodes","typeLabel":"object[]"},"edges":{"type":"array","description":"Canvas edges derived from `flow_edges`.","items":{"type":"object","required":["id","source","target","type"],"properties":{"id":{"type":"string","format":"uuid","description":"Edge identifier (`flow_edges.id`).","isRequired":true,"uniqueKey":"data.definition.edges.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"source":{"type":"string","description":"Source node identifier (`flow_steps.identifier`).","example":"start","isRequired":true,"uniqueKey":"data.definition.edges.items.[INDEX].source","typeLabel":"string"},"target":{"type":"string","description":"Target node identifier (`flow_steps.identifier`).","example":"send_intro","isRequired":true,"uniqueKey":"data.definition.edges.items.[INDEX].target","typeLabel":"string"},"type":{"type":"string","description":"Canvas edge renderer type. The API currently returns `default`.","example":"default","isRequired":true,"uniqueKey":"data.definition.edges.items.[INDEX].type","typeLabel":"string"},"label":{"oneOf":[{"type":"string","description":"Transition label, usually `next` or a decision branch label.","example":"next","uniqueKey":"data.definition.edges.items.[INDEX].label.oneOf.0","typeLabel":"string"},{"type":"null","description":"Transition label, usually `next` or a decision branch label.","example":"next","uniqueKey":"data.definition.edges.items.[INDEX].label.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.edges.items.[INDEX].label","typeLabel":"string | null"},"flow_condition_id":{"oneOf":[{"type":"string","format":"uuid","description":"Condition ID attached to decide-step edges. Null for non-decision edges.","uniqueKey":"data.definition.edges.items.[INDEX].flow_condition_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Condition ID attached to decide-step edges. Null for non-decision edges.","uniqueKey":"data.definition.edges.items.[INDEX].flow_condition_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.definition.edges.items.[INDEX].flow_condition_id","typeLabel":"string\u003cuuid> | null"}},"additionalProperties":false,"description":"A directed transition between two workflow nodes.","uniqueKey":"data.definition.edges.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.definition.edges","typeLabel":"object[]"}},"description":"Full workflow graph definition used by the canvas editor.","isRequired":true,"uniqueKey":"data.definition","typeLabel":"object"},"description":{"oneOf":[{"type":"string","description":"Optional workflow description","uniqueKey":"data.description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional workflow description","uniqueKey":"data.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.description","typeLabel":"string | null"},"lock_version":{"oneOf":[{"type":"integer","description":"Optimistic locking version. Increment on each update to prevent concurrent modification conflicts. Include this value when updating to ensure you're working with the latest version.\n","uniqueKey":"data.lock_version.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Optimistic locking version. Increment on each update to prevent concurrent modification conflicts. Include this value when updating to ensure you're working with the latest version.\n","uniqueKey":"data.lock_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.lock_version","typeLabel":"integer | null"},"message_debounce_seconds":{"oneOf":[{"type":"integer","description":"Debounce window for incoming messages in seconds (default: 1). When a user sends multiple messages rapidly, the workflow waits this duration before processing to batch messages together. Prevents workflow from reacting to every keystroke.\n","uniqueKey":"data.message_debounce_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Debounce window for incoming messages in seconds (default: 1). When a user sends multiple messages rapidly, the workflow waits this duration before processing to batch messages together. Prevents workflow from reacting to every keystroke.\n","uniqueKey":"data.message_debounce_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.message_debounce_seconds","typeLabel":"integer | null"},"agent_default_tools_version":{"oneOf":[{"type":"integer","description":"Version used to decide which built-in agent tools are required by default for this workflow.","uniqueKey":"data.agent_default_tools_version.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Version used to decide which built-in agent tools are required by default for this workflow.","uniqueKey":"data.agent_default_tools_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.agent_default_tools_version","typeLabel":"integer | null"},"inbound_message_read_mode":{"type":"string","enum":["disabled","read_only","read_with_typing"],"description":"Controls how inbound WhatsApp messages are marked as read before the workflow responds (default: read_with_typing).\n- `disabled`: Do nothing — messages are not marked as read\n- `read_only`: Mark messages as read without showing a typing indicator\n- `read_with_typing`: Mark as read and show a typing indicator before responding\n","uniqueKey":"data.inbound_message_read_mode","typeLabel":"enum\u003cstring>"},"project_id":{"type":"string","format":"uuid","description":"Project this workflow belongs to","uniqueKey":"data.project_id","typeLabel":"string\u003cuuid>"},"execution_count":{"type":"integer","minimum":0,"description":"Total number of times this workflow has been executed","uniqueKey":"data.execution_count","typeLabel":"integer"},"last_executed_at":{"oneOf":[{"type":"string","format":"date-time","description":"Timestamp of most recent execution, null if never executed","uniqueKey":"data.last_executed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Timestamp of most recent execution, null if never executed","uniqueKey":"data.last_executed_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.last_executed_at","typeLabel":"string\u003cdate-time> | null"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"description":"Single workflow response including the canvas definition and editor metadata","uniqueKey":"","typeLabel":"object"},"example":{"data":{"id":"2c2d03de-f8e5-4e9d-87fd-d168a8d04a6c","name":"Lead qualification","description":"Qualify inbound leads before handing off to sales","status":"draft","lock_version":3,"message_debounce_seconds":1,"inbound_message_read_mode":"read_with_typing","created_at":"2026-03-10T14:05:22.000Z","updated_at":"2026-03-12T09:44:18.000Z","project_id":"7b7d09f1-4f2d-477c-bb1c-0fc8d1bb6d3e","execution_count":12,"last_executed_at":"2026-03-12T09:40:05.000Z","definition":{"nodes":[{"id":"start","type":"flow-node","position":{"x":120,"y":80},"data":{"node_type":"start","config":{},"display_name":"Start"}},{"id":"send_intro","type":"flow-node","position":{"x":380,"y":80},"data":{"node_type":"send_text","config":{"whatsapp_config_id":"ab11ff46-0f30-49e5-b5ef-a78662bc0ef1","phone_number_id":"15551234567","message":"Hi {{vars.first_name}}, thanks for contacting us.","delay_seconds":0,"provider_model_id":null,"provider_model_name":null,"ai_field_config":{},"to_phone_number":null},"display_name":"Send Text Message"}},{"id":"wait_reply","type":"flow-node","position":{"x":660,"y":80},"data":{"node_type":"wait_for_response","config":{"has_timeout":true,"timeout_seconds":300,"save_response_to":"latest_reply"},"display_name":"Wait for response"}}],"edges":[{"id":"6952ed87-5016-444d-a145-7339c4d3c642","source":"start","target":"send_intro","label":"next","type":"default","flow_condition_id":null},{"id":"0c2b6fc5-eb0c-41cc-8dcf-6aa4f5dd6ca1","source":"send_intro","target":"wait_reply","label":"next","type":"default","flow_condition_id":null}]}}},"examples":{"Example":{"title":"Example","value":{"data":{"id":"2c2d03de-f8e5-4e9d-87fd-d168a8d04a6c","name":"Lead qualification","description":"Qualify inbound leads before handing off to sales","status":"draft","lock_version":3,"message_debounce_seconds":1,"inbound_message_read_mode":"read_with_typing","created_at":"2026-03-10T14:05:22.000Z","updated_at":"2026-03-12T09:44:18.000Z","project_id":"7b7d09f1-4f2d-477c-bb1c-0fc8d1bb6d3e","execution_count":12,"last_executed_at":"2026-03-12T09:40:05.000Z","definition":{"nodes":[{"id":"start","type":"flow-node","position":{"x":120,"y":80},"data":{"node_type":"start","config":{},"display_name":"Start"}},{"id":"send_intro","type":"flow-node","position":{"x":380,"y":80},"data":{"node_type":"send_text","config":{"whatsapp_config_id":"ab11ff46-0f30-49e5-b5ef-a78662bc0ef1","phone_number_id":"15551234567","message":"Hi {{vars.first_name}}, thanks for contacting us.","delay_seconds":0,"provider_model_id":null,"provider_model_name":null,"ai_field_config":{},"to_phone_number":null},"display_name":"Send Text Message"}},{"id":"wait_reply","type":"flow-node","position":{"x":660,"y":80},"data":{"node_type":"wait_for_response","config":{"has_timeout":true,"timeout_seconds":300,"save_response_to":"latest_reply"},"display_name":"Wait for response"}}],"edges":[{"id":"6952ed87-5016-444d-a145-7339c4d3c642","source":"start","target":"send_intro","label":"next","type":"default","flow_condition_id":null},{"id":"0c2b6fc5-eb0c-41cc-8dcf-6aa4f5dd6ca1","source":"send_intro","target":"wait_reply","label":"next","type":"default","flow_condition_id":null}]}}}}},"exampleType":"examples"}},"exampleType":"examples"},"f65f9bbe-8248-4b9b-b93d-a9465d93a29d":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"0bb2ab20-5730-454d-9765-0de927d40073":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"c7886ad0-a016-4d4d-80dd-a986c288519f":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"11d7f2a4-4944-4cb3-8ff1-643bb0a50340":{"url":"https://api.kapso.ai/platform/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-API-Key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"api/platform/v1/openapi-workflows.yaml"},"subdomain":"kapso","siteName":"Kapso Documentation","title":"Retrieve workflow definition - Kapso Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-09T17:51:10.354Z","originalFileLocation":"api/platform/v1/functions/workflows/retrieve-workflow-definition.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=\"dark\"}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=\"Get the editor-oriented workflow payload for a specific workflow. This endpoint returns everything needed to load the canvas: - Base workflow metadata - definition.nodes built from flow_steps - definition.edges built from flow_edges Response details: - definition.nodes[].id is the workflow step identifier, not the database ID - definition.edges[].id is the persisted edge UUID - definition.nodes[].data.node_type is the canonical backend node type - definition.nodes[].data.config changes shape by node type - Config fields are returned in snake_case - Function and call-workflow references are returned as IDs in the Platform API; the Kapso CLI can export them as slugs for local source repos Use this endpoint when building or syncing a visual workflow editor, exporting a workflow graph, or cloning an existing workflow definition.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Kapso Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/kapso/kFSQ47kUpi_M2X6K/_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/kapso/kFSQ47kUpi_M2X6K/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/kapso/kFSQ47kUpi_M2X6K/_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/kapso/kFSQ47kUpi_M2X6K/_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/kapso/kFSQ47kUpi_M2X6K/_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/kapso/kFSQ47kUpi_M2X6K/_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/kapso/kFSQ47kUpi_M2X6K/_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/kapso/kFSQ47kUpi_M2X6K/_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/kapso/kFSQ47kUpi_M2X6K/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Retrieve workflow definition - Kapso Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Get the editor-oriented workflow payload for a specific workflow. This endpoint returns everything needed to load the canvas: - Base workflow metadata - definition.nodes built from flow_steps - definition.edges built from flow_edges Response details: - definition.nodes[].id is the workflow step identifier, not the database ID - definition.edges[].id is the persisted edge UUID - definition.nodes[].data.node_type is the canonical backend node type - definition.nodes[].data.config changes shape by node type - Config fields are returned in snake_case - Function and call-workflow references are returned as IDs in the Platform API; the Kapso CLI can export them as slugs for local source repos Use this endpoint when building or syncing a visual workflow editor, exporting a workflow graph, or cloning an existing workflow definition.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Kapso Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.kapso.ai/api/platform/v1/functions/workflows/retrieve-workflow-definition\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://kapso.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Retrieve+workflow+definition\u0026amp;description=Get+the+editor-oriented+workflow+payload+for+a+specific+workflow.%0A%0AThis+endpoint+returns+everything+needed+to+load+the+canvas%3A%0A-+Base+workflow+metadata%0A-+%60defin\u0026amp;theme=420e86f9db0b7bd8bd360c8d\u0026amp;signature=df256cb545864c0ab60420359a6e99f2fc8725b10ea0790517f0a6c321e172b3\">\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=\"Retrieve workflow definition - Kapso Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Get the editor-oriented workflow payload for a specific workflow. This endpoint returns everything needed to load the canvas: - Base workflow metadata - definition.nodes built from flow_steps - definition.edges built from flow_edges Response details: - definition.nodes[].id is the workflow step identifier, not the database ID - definition.edges[].id is the persisted edge UUID - definition.nodes[].data.node_type is the canonical backend node type - definition.nodes[].data.config changes shape by node type - Config fields are returned in snake_case - Function and call-workflow references are returned as IDs in the Platform API; the Kapso CLI can export them as slugs for local source repos Use this endpoint when building or syncing a visual workflow editor, exporting a workflow graph, or cloning an existing workflow definition.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://kapso.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Retrieve+workflow+definition\u0026amp;description=Get+the+editor-oriented+workflow+payload+for+a+specific+workflow.%0A%0AThis+endpoint+returns+everything+needed+to+load+the+canvas%3A%0A-+Base+workflow+metadata%0A-+%60defin\u0026amp;theme=420e86f9db0b7bd8bd360c8d\u0026amp;signature=df256cb545864c0ab60420359a6e99f2fc8725b10ea0790517f0a6c321e172b3\">\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/kapso/kFSQ47kUpi_M2X6K/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Kapso Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.kapso.ai/api/platform/v1/functions/workflows/retrieve-workflow-definition\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/platform/v1/functions/workflows/retrieve-workflow-definition.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.kapso.ai/#organization\",\"name\":\"Kapso Documentation\",\"url\":\"https://docs.kapso.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/kapso/PataiTeyJNV98BJM/logo/light.png?fit=max\u0026auto=format\u0026n=PataiTeyJNV98BJM\u0026q=85\u0026s=90daf3ba47fbb14af9cca43126691d73\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.kapso.ai#website\",\"name\":\"Kapso Documentation\",\"url\":\"https://docs.kapso.ai\",\"publisher\":{\"@id\":\"https://docs.kapso.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.kapso.ai/api/platform/v1/functions/workflows/retrieve-workflow-definition#webpage\",\"url\":\"https://docs.kapso.ai/api/platform/v1/functions/workflows/retrieve-workflow-definition\",\"name\":\"Retrieve workflow definition\",\"description\":\"Get the editor-oriented workflow payload for a specific workflow. This endpoint returns everything needed to load the canvas: - Base workflow metadata - definition.nodes built from flow_steps - definition.edges built from flow_edges Response details: - definition.nodes[].id is the workflow step identifier, not the database ID - definition.edges[].id is the persisted edge UUID - definition.nodes[].data.node_type is the canonical backend node type - definition.nodes[].data.config changes shape by node type - Config fields are returned in snake_case - Function and call-workflow references are returned as IDs in the Platform API; the Kapso CLI can export them as slugs for local source repos Use this endpoint when building or syncing a visual workflow editor, exporting a workflow graph, or cloning an existing workflow definition.\",\"dateModified\":\"2026-10-09T17:51:10.354Z\",\"isPartOf\":{\"@id\":\"https://docs.kapso.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.kapso.ai/api/platform/v1/functions/workflows/retrieve-workflow-definition#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.kapso.ai/api/platform/v1/functions/workflows/retrieve-workflow-definition#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Workflows API\",\"item\":\"https://docs.kapso.ai/api/platform/v1/functions/workflows/list-workflows\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Workflows\",\"item\":\"https://docs.kapso.ai/api/platform/v1/functions/workflows/list-workflows\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Retrieve workflow definition\",\"item\":\"https://docs.kapso.ai/api/platform/v1/functions/workflows/retrieve-workflow-definition\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.kapso.ai/api/platform/v1/functions/workflows/retrieve-workflow-definition#apireference\",\"headline\":\"Retrieve workflow definition\",\"name\":\"Retrieve workflow definition\",\"description\":\"Get the editor-oriented workflow payload for a specific workflow. This endpoint returns everything needed to load the canvas: - Base workflow metadata - definition.nodes built from flow_steps - definition.edges built from flow_edges Response details: - definition.nodes[].id is the workflow step identifier, not the database ID - definition.edges[].id is the persisted edge UUID - definition.nodes[].data.node_type is the canonical backend node type - definition.nodes[].data.config changes shape by node type - Config fields are returned in snake_case - Function and call-workflow references are returned as IDs in the Platform API; the Kapso CLI can export them as slugs for local source repos Use this endpoint when building or syncing a visual workflow editor, exporting a workflow graph, or cloning an existing workflow definition.\",\"url\":\"https://docs.kapso.ai/api/platform/v1/functions/workflows/retrieve-workflow-definition\",\"mainEntityOfPage\":{\"@id\":\"https://docs.kapso.ai/api/platform/v1/functions/workflows/retrieve-workflow-definition#webpage\"},\"dateModified\":\"2026-10-09T17:51:10.354Z\",\"publisher\":{\"@id\":\"https://docs.kapso.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.kapso.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Kapso Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Kapso Documentation","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/introduction"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API reference","sidebarTitle":"Introduction","href":"/api/introduction"},{"title":"Rate limits","href":"/api/rate-limits"}]},{"group":"WhatsApp API","pages":[{"group":"Conversion events","pages":[{"title":"Get the WABA dataset","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{business_account_id}/dataset","href":"/api/meta/whatsapp/conversion-events/get-the-waba-dataset"},{"title":"Create the WABA dataset","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{business_account_id}/dataset","href":"/api/meta/whatsapp/conversion-events/create-the-waba-dataset"},{"title":"Send conversion events","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{dataset_id}/events","href":"/api/meta/whatsapp/conversion-events/send-conversion-events"}]},{"group":"Messages","pages":[{"title":"List messages","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/messages","href":"/api/meta/whatsapp/messages/list-messages"},{"title":"Send a message","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{phone_number_id}/messages","href":"/api/meta/whatsapp/messages/send-a-message"},{"title":"Send a marketing message","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{phone_number_id}/marketing_messages","href":"/api/meta/whatsapp/messages/send-a-marketing-message"},{"title":"Get message by ID","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/messages/{message_id}","href":"/api/meta/whatsapp/messages/get-message-by-id"}]},{"group":"Usernames","pages":[{"title":"Get current username","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/username","href":"/api/meta/whatsapp/usernames/get-current-username"},{"title":"Claim or change username","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{phone_number_id}/username","href":"/api/meta/whatsapp/usernames/claim-or-change-username"},{"title":"Delete username","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml delete /{phone_number_id}/username","href":"/api/meta/whatsapp/usernames/delete-username"},{"title":"Get reserved username suggestions","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/username_suggestions","href":"/api/meta/whatsapp/usernames/get-reserved-username-suggestions"}]},{"group":"Conversations","pages":[{"title":"List conversations","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/conversations","href":"/api/meta/whatsapp/conversations/list-conversations"},{"title":"Get conversation details","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/conversations/{conversation_id}","href":"/api/meta/whatsapp/conversations/get-conversation-details"},{"title":"Pass, release or take a conversation","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{phone_number_id}/thread_control","href":"/api/meta/whatsapp/conversations/pass-release-or-take-a-conversation"}]},{"group":"Contacts","pages":[{"title":"List contacts","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/contacts","href":"/api/meta/whatsapp/contacts/list-contacts"},{"title":"Get contact details","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/contacts/{wa_id}","href":"/api/meta/whatsapp/contacts/get-contact-details"}]},{"group":"Calls","pages":[{"title":"List calls","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/calls","href":"/api/meta/whatsapp/calls/list-calls"},{"title":"Perform call action","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{phone_number_id}/calls","href":"/api/meta/whatsapp/calls/perform-call-action"},{"title":"Get call permission state","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/call_permissions","href":"/api/meta/whatsapp/calls/get-call-permission-state"}]},{"group":"Media","pages":[{"title":"Upload media","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{phone_number_id}/media","href":"/api/meta/whatsapp/media/upload-media"},{"title":"Get media URL","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{media_id}","href":"/api/meta/whatsapp/media/get-media-url"},{"title":"Delete media","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml delete /{media_id}","href":"/api/meta/whatsapp/media/delete-media"},{"title":"Download media file","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /media_download","href":"/api/meta/whatsapp/media/download-media-file"}]},{"group":"Templates","pages":[{"title":"List message templates","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{business_account_id}/message_templates","href":"/api/meta/whatsapp/templates/list-message-templates"},{"title":"Create or update message template","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{business_account_id}/message_templates","href":"/api/meta/whatsapp/templates/create-or-update-message-template"},{"title":"Delete message template","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml delete /{business_account_id}/message_templates","href":"/api/meta/whatsapp/templates/delete-message-template"},{"title":"Get message template by ID","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{business_account_id}/message_templates/{template_id}","href":"/api/meta/whatsapp/templates/get-message-template-by-id"}]},{"group":"Business Profile","pages":[{"title":"Get business profile","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/whatsapp_business_profile","href":"/api/meta/whatsapp/business-profile/get-business-profile"},{"title":"Update business profile","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{phone_number_id}/whatsapp_business_profile","href":"/api/meta/whatsapp/business-profile/update-business-profile"}]},{"group":"Block Users","pages":[{"title":"List blocked users","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/block_users","href":"/api/meta/whatsapp/block-users/list-blocked-users"},{"title":"Block users","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{phone_number_id}/block_users","href":"/api/meta/whatsapp/block-users/block-users"},{"title":"Unblock users","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml delete /{phone_number_id}/block_users","href":"/api/meta/whatsapp/block-users/unblock-users"}]},{"group":"Flows","pages":[{"title":"List flows","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{business_account_id}/flows","href":"/api/meta/whatsapp/flows/list-flows"},{"title":"Create flow","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{business_account_id}/flows","href":"/api/meta/whatsapp/flows/create-flow"},{"title":"List flows (phone number scoped)","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}/flows","href":"/api/meta/whatsapp/flows/list-flows-phone-number-scoped"},{"title":"Create flow (phone number scoped)","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{phone_number_id}/flows","href":"/api/meta/whatsapp/flows/create-flow-phone-number-scoped"},{"title":"Get flow assets","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{flow_id}/assets","href":"/api/meta/whatsapp/flows/get-flow-assets"},{"title":"Upload flow JSON","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{flow_id}/assets","href":"/api/meta/whatsapp/flows/upload-flow-json"},{"title":"Get flow details","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{flow_id}","href":"/api/meta/whatsapp/flows/get-flow-details"},{"title":"Update flow metadata","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{flow_id}","href":"/api/meta/whatsapp/flows/update-flow-metadata"},{"title":"Delete flow","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml delete /flows/{flow_id}","href":"/api/meta/whatsapp/flows/delete-flow"},{"title":"Publish flow","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{flow_id}/publish","href":"/api/meta/whatsapp/flows/publish-flow"},{"title":"Deprecate flow","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{flow_id}/deprecate","href":"/api/meta/whatsapp/flows/deprecate-flow"}]},{"group":"Phone Numbers","pages":[{"title":"List phone numbers","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{business_account_id}/phone_numbers","href":"/api/meta/whatsapp/phone-numbers/list-phone-numbers"},{"title":"Get phone number details","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml get /{phone_number_id}","href":"/api/meta/whatsapp/phone-numbers/get-phone-number-details"},{"title":"Update phone number settings","deprecated":null,"version":null,"openapi":"/api/meta/whatsapp/openapi-whatsapp.yaml post /{phone_number_id}","href":"/api/meta/whatsapp/phone-numbers/update-phone-number-settings"}]}]},{"group":"Platform API","pages":[{"group":"Customers","pages":[{"title":"List customers","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /customers","href":"/api/platform/v1/customers/list-customers"},{"title":"Create customer","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /customers","href":"/api/platform/v1/customers/create-customer"},{"title":"Get customer","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /customers/{customer_id}","href":"/api/platform/v1/customers/get-customer"},{"title":"Delete customer","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml delete /customers/{customer_id}","href":"/api/platform/v1/customers/delete-customer"},{"title":"Update customer","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /customers/{customer_id}","href":"/api/platform/v1/customers/update-customer"}]},{"group":"Setup Links","pages":[{"title":"List setup links","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /customers/{customer_id}/setup_links","href":"/api/platform/v1/setup-links/list-setup-links"},{"title":"Create setup link","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /customers/{customer_id}/setup_links","href":"/api/platform/v1/setup-links/create-setup-link"},{"title":"Update setup link","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /customers/{customer_id}/setup_links/{setup_link_id}","href":"/api/platform/v1/setup-links/update-setup-link"}]},{"group":"Webhooks","pages":[{"title":"List project webhooks","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/webhooks","href":"/api/platform/v1/webhooks/list-project-webhooks"},{"title":"Create project webhook","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/webhooks","href":"/api/platform/v1/webhooks/create-project-webhook"},{"title":"Get project webhook","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/webhooks/{webhook_id}","href":"/api/platform/v1/webhooks/get-project-webhook"},{"title":"Delete project webhook","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml delete /whatsapp/webhooks/{webhook_id}","href":"/api/platform/v1/webhooks/delete-project-webhook"},{"title":"Update project webhook","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /whatsapp/webhooks/{webhook_id}","href":"/api/platform/v1/webhooks/update-project-webhook"},{"title":"Test project webhook","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/webhooks/{webhook_id}/test","href":"/api/platform/v1/webhooks/test-project-webhook"},{"title":"List webhooks","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/phone_numbers/{phone_number_id}/webhooks","href":"/api/platform/v1/webhooks/list-webhooks"},{"title":"Create webhook","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/phone_numbers/{phone_number_id}/webhooks","href":"/api/platform/v1/webhooks/create-webhook"},{"title":"Get webhook","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/phone_numbers/{phone_number_id}/webhooks/{webhook_id}","href":"/api/platform/v1/webhooks/get-webhook"},{"title":"Delete webhook","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml delete /whatsapp/phone_numbers/{phone_number_id}/webhooks/{webhook_id}","href":"/api/platform/v1/webhooks/delete-webhook"},{"title":"Update webhook","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /whatsapp/phone_numbers/{phone_number_id}/webhooks/{webhook_id}","href":"/api/platform/v1/webhooks/update-webhook"}]},{"group":"Phone Numbers","pages":[{"title":"List phone numbers","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/phone_numbers","href":"/api/platform/v1/phone-numbers/list-phone-numbers"},{"title":"Connect phone number","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /customers/{customer_id}/whatsapp/phone_numbers","href":"/api/platform/v1/phone-numbers/connect-phone-number"},{"title":"Get phone number","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/phone_numbers/{phone_number_id}","href":"/api/platform/v1/phone-numbers/get-phone-number"},{"title":"Delete phone number","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml delete /whatsapp/phone_numbers/{phone_number_id}","href":"/api/platform/v1/phone-numbers/delete-phone-number"},{"title":"Update phone number","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /whatsapp/phone_numbers/{phone_number_id}","href":"/api/platform/v1/phone-numbers/update-phone-number"},{"title":"Check phone health","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/phone_numbers/{phone_number_id}/health","href":"/api/platform/v1/phone-numbers/check-phone-health"}]},{"group":"Broadcasts","pages":[{"title":"List broadcasts","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/broadcasts","href":"/api/platform/v1/broadcasts/list-broadcasts"},{"title":"Create broadcast","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/broadcasts","href":"/api/platform/v1/broadcasts/create-broadcast"},{"title":"Get broadcast","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/broadcasts/{broadcast_id}","href":"/api/platform/v1/broadcasts/get-broadcast"},{"title":"Update broadcast status","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /whatsapp/broadcasts/{broadcast_id}","href":"/api/platform/v1/broadcasts/update-broadcast-status"},{"title":"List recipients","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/broadcasts/{broadcast_id}/recipients","href":"/api/platform/v1/broadcasts/list-recipients"},{"title":"Add recipients","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/broadcasts/{broadcast_id}/recipients","href":"/api/platform/v1/broadcasts/add-recipients"},{"title":"Clear recipients","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml delete /whatsapp/broadcasts/{broadcast_id}/recipients","href":"/api/platform/v1/broadcasts/clear-recipients"},{"title":"Send broadcast","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/broadcasts/{broadcast_id}/send","href":"/api/platform/v1/broadcasts/send-broadcast"},{"title":"Schedule broadcast","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/broadcasts/{broadcast_id}/schedule","href":"/api/platform/v1/broadcasts/schedule-broadcast"},{"title":"Cancel scheduled broadcast","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/broadcasts/{broadcast_id}/cancel","href":"/api/platform/v1/broadcasts/cancel-scheduled-broadcast"}]},{"group":"Messages","pages":[{"title":"List messages","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/messages","href":"/api/platform/v1/messages/list-messages"},{"title":"Get message","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/messages/{message_id}","href":"/api/platform/v1/messages/get-message"}]},{"group":"Conversations","pages":[{"title":"List conversations","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/conversations","href":"/api/platform/v1/conversations/list-conversations"},{"title":"Get conversation","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/conversations/{conversation_id}","href":"/api/platform/v1/conversations/get-conversation"},{"title":"Update conversation status","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /whatsapp/conversations/{conversation_id}","href":"/api/platform/v1/conversations/update-conversation-status"},{"title":"List conversation assignments","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/conversations/{conversation_id}/assignments","href":"/api/platform/v1/conversations/list-conversation-assignments"},{"title":"Create conversation assignment","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/conversations/{conversation_id}/assignments","href":"/api/platform/v1/conversations/create-conversation-assignment"},{"title":"Get conversation assignment","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/conversations/{conversation_id}/assignments/{id}","href":"/api/platform/v1/conversations/get-conversation-assignment"},{"title":"Update conversation assignment","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /whatsapp/conversations/{conversation_id}/assignments/{id}","href":"/api/platform/v1/conversations/update-conversation-assignment"}]},{"group":"Display Names","pages":[{"title":"List display name requests","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/phone_numbers/{phone_number_id}/display_name_requests","href":"/api/platform/v1/display-names/list-display-name-requests"},{"title":"Submit display name request","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/phone_numbers/{phone_number_id}/display_name_requests","href":"/api/platform/v1/display-names/submit-display-name-request"},{"title":"Retrieve display name request","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/phone_numbers/{phone_number_id}/display_name_requests/{request_id}","href":"/api/platform/v1/display-names/retrieve-display-name-request"}]},{"group":"Media","pages":[{"title":"Upload media","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/media","href":"/api/platform/v1/media/upload-media"}]},{"group":"Contacts","pages":[{"title":"List contacts","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/contacts","href":"/api/platform/v1/contacts/list-contacts"},{"title":"Create contact","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/contacts","href":"/api/platform/v1/contacts/create-contact"},{"title":"Get contact","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/contacts/{identifier}","href":"/api/platform/v1/contacts/get-contact"},{"title":"Erase contact","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml delete /whatsapp/contacts/{identifier}","href":"/api/platform/v1/contacts/erase-contact"},{"title":"Update contact","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /whatsapp/contacts/{identifier}","href":"/api/platform/v1/contacts/update-contact"},{"title":"List marketing preferences","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/contacts/{identifier}/marketing_preferences","href":"/api/platform/v1/contacts/list-marketing-preferences"},{"title":"Get marketing preference","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/contacts/{identifier}/marketing_preferences/{phone_number_id}","href":"/api/platform/v1/contacts/get-marketing-preference"}]},{"group":"Users","pages":[{"title":"List project users","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /users","href":"/api/platform/v1/users/list-project-users"}]},{"group":"Webhook Deliveries","pages":[{"title":"List webhook deliveries","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /webhook_deliveries","href":"/api/platform/v1/webhook-deliveries/list-webhook-deliveries"}]},{"group":"Events","pages":[{"title":"List project event definitions","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /event-definitions","href":"/api/platform/v1/events/list-project-event-definitions"},{"title":"Create or update a project event definition","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /event-definitions","href":"/api/platform/v1/events/create-or-update-a-project-event-definition"},{"title":"Retrieve a project event definition","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /event-definitions/{id}","href":"/api/platform/v1/events/retrieve-a-project-event-definition"},{"title":"Delete a project event definition and its events","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml delete /event-definitions/{id}","href":"/api/platform/v1/events/delete-a-project-event-definition-and-its-events"},{"title":"Update a project event definition","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /event-definitions/{id}","href":"/api/platform/v1/events/update-a-project-event-definition"},{"title":"List project events","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /events","href":"/api/platform/v1/events/list-project-events"},{"title":"Emit a project event","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /events","href":"/api/platform/v1/events/emit-a-project-event"}]},{"group":"API Logs","pages":[{"title":"List API logs","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /api_logs","href":"/api/platform/v1/api-logs/list-api-logs"}]},{"group":"Log Search","pages":[{"title":"Search log events","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /log_search","href":"/api/platform/v1/log-search/search-log-events"},{"title":"Search log events with filters","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /log_search","href":"/api/platform/v1/log-search/search-log-events-with-filters"},{"title":"Get log search catalog","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /log_search/catalog","href":"/api/platform/v1/log-search/get-log-search-catalog"}]},{"group":"Provider Models","pages":[{"title":"List provider models","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /provider_models","href":"/api/platform/v1/provider-models/list-provider-models"}]},{"group":"Inbox Embeds","pages":[{"title":"List inbox embeds","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /inbox_embeds","href":"/api/platform/v1/inbox-embeds/list-inbox-embeds"},{"title":"Create inbox embed","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /inbox_embeds","href":"/api/platform/v1/inbox-embeds/create-inbox-embed"},{"title":"Get inbox embed","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /inbox_embeds/{inbox_embed_id}","href":"/api/platform/v1/inbox-embeds/get-inbox-embed"},{"title":"Revoke inbox embed","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml delete /inbox_embeds/{inbox_embed_id}","href":"/api/platform/v1/inbox-embeds/revoke-inbox-embed"},{"title":"Update inbox embed","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /inbox_embeds/{inbox_embed_id}","href":"/api/platform/v1/inbox-embeds/update-inbox-embed"}]},{"group":"WhatsApp Flows","pages":[{"title":"List flows","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/flows","href":"/api/platform/v1/whatsapp-flows/list-flows"},{"title":"Create flow","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/flows","href":"/api/platform/v1/whatsapp-flows/create-flow"},{"title":"Get flow","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/flows/{flow_id}","href":"/api/platform/v1/whatsapp-flows/get-flow"},{"title":"Publish flow","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/flows/{flow_id}/publish","href":"/api/platform/v1/whatsapp-flows/publish-flow"},{"title":"Setup encryption","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/flows/{flow_id}/setup_encryption","href":"/api/platform/v1/whatsapp-flows/setup-encryption"},{"title":"List flow versions","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/flows/{flow_id}/versions","href":"/api/platform/v1/whatsapp-flows/list-flow-versions"},{"title":"Create flow version","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/flows/{flow_id}/versions","href":"/api/platform/v1/whatsapp-flows/create-flow-version"},{"title":"Get flow version","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/flows/{flow_id}/versions/{version_id}","href":"/api/platform/v1/whatsapp-flows/get-flow-version"},{"title":"Get data endpoint","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/flows/{flow_id}/data_endpoint","href":"/api/platform/v1/whatsapp-flows/get-data-endpoint"},{"title":"Create/update data endpoint","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/flows/{flow_id}/data_endpoint","href":"/api/platform/v1/whatsapp-flows/createupdate-data-endpoint"},{"title":"Attach an existing data endpoint function","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml patch /whatsapp/flows/{flow_id}/data_endpoint","href":"/api/platform/v1/whatsapp-flows/attach-an-existing-data-endpoint-function"},{"title":"Deploy data endpoint","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/flows/{flow_id}/data_endpoint/deploy","href":"/api/platform/v1/whatsapp-flows/deploy-data-endpoint"},{"title":"Register data endpoint with Meta","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/flows/{flow_id}/data_endpoint/register","href":"/api/platform/v1/whatsapp-flows/register-data-endpoint-with-meta"},{"title":"Get function logs","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/flows/{flow_id}/function_logs","href":"/api/platform/v1/whatsapp-flows/get-function-logs"},{"title":"Get function invocations","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/flows/{flow_id}/function_invocations","href":"/api/platform/v1/whatsapp-flows/get-function-invocations"}]},{"group":"Findings","pages":[{"title":"List findings","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /findings","href":"/api/platform/v1/findings/list-findings"},{"title":"Get a finding","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /findings/{finding_id}","href":"/api/platform/v1/findings/get-a-finding"},{"title":"Get finding evidence","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /findings/{finding_id}/evidence","href":"/api/platform/v1/findings/get-finding-evidence"},{"title":"Start an investigation","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /findings/{finding_id}/start_investigation","href":"/api/platform/v1/findings/start-an-investigation"},{"title":"Dismiss a finding","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /findings/{finding_id}/dismiss","href":"/api/platform/v1/findings/dismiss-a-finding"},{"title":"Mark a finding as addressed","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /findings/{finding_id}/mark_addressed","href":"/api/platform/v1/findings/mark-a-finding-as-addressed"}]},{"group":"Notifications","pages":[{"title":"List notification event types","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /notifications/events","href":"/api/platform/v1/notifications/list-notification-event-types"},{"title":"List team destinations","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /notifications/destinations","href":"/api/platform/v1/notifications/list-team-destinations"},{"title":"Create a shared email destination","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /notifications/destinations","href":"/api/platform/v1/notifications/create-a-shared-email-destination"},{"title":"Remove a team destination","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml delete /notifications/destinations/{destination_id}","href":"/api/platform/v1/notifications/remove-a-team-destination"},{"title":"List routes","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /notifications/routes","href":"/api/platform/v1/notifications/list-routes"},{"title":"Create or update a route","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml put /notifications/routes","href":"/api/platform/v1/notifications/create-or-update-a-route"},{"title":"Delete a route","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml delete /notifications/routes/{id}","href":"/api/platform/v1/notifications/delete-a-route"}]},{"group":"WhatsApp Funding","pages":[{"title":"Get WABA funding status","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/accounts/{waba_id}/funding","href":"/api/platform/v1/whatsapp-funding/get-waba-funding-status"},{"title":"Ensure WABA funding","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/accounts/{waba_id}/funding","href":"/api/platform/v1/whatsapp-funding/ensure-waba-funding"},{"title":"Get WABA usage","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/accounts/{waba_id}/usage","href":"/api/platform/v1/whatsapp-funding/get-waba-usage"},{"title":"List portfolio accounts with funding","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/portfolios/{portfolio_id}/accounts","href":"/api/platform/v1/whatsapp-funding/list-portfolio-accounts-with-funding"},{"title":"Get portfolio usage","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/portfolios/{portfolio_id}/usage","href":"/api/platform/v1/whatsapp-funding/get-portfolio-usage"},{"title":"Stop portfolio funding","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/portfolios/{portfolio_id}/funding/revoke","href":"/api/platform/v1/whatsapp-funding/stop-portfolio-funding"},{"title":"Get funding operation","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/portfolios/{portfolio_id}/funding/operations/{operation_id}","href":"/api/platform/v1/whatsapp-funding/get-funding-operation"}]},{"group":"Business Verification","pages":[{"title":"Get business verification","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/portfolios/{portfolio_id}/business_verification","href":"/api/platform/v1/business-verification/get-business-verification"},{"title":"List verification submissions","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/portfolios/{portfolio_id}/business_verification/submissions","href":"/api/platform/v1/business-verification/list-verification-submissions"},{"title":"Submit verification documents","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml post /whatsapp/portfolios/{portfolio_id}/business_verification/submissions","href":"/api/platform/v1/business-verification/submit-verification-documents"},{"title":"Get a verification submission","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-platform.yaml get /whatsapp/portfolios/{portfolio_id}/business_verification/submissions/{submission_id}","href":"/api/platform/v1/business-verification/get-a-verification-submission"}]}]},{"group":"Workflows API","pages":[{"group":"Workflows","pages":[{"title":"List workflows","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /workflows","href":"/api/platform/v1/functions/workflows/list-workflows"},{"title":"Create workflow","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml post /workflows","href":"/api/platform/v1/functions/workflows/create-workflow"},{"title":"Retrieve workflow","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /workflows/{workflow_id}","href":"/api/platform/v1/functions/workflows/retrieve-workflow"},{"title":"Update workflow","description":"Update workflow metadata or replace workflow definition collections.\n\nCommon updates:\n- Change workflow name or description\n- Update workflow definition nodes and edges\n- Activate workflow by setting status to 'active'\n- Archive workflow by setting status to 'archived'\n\nDefinition update semantics:\n- Omit `definition` to update metadata only.\n- Omit `definition.nodes` to leave nodes unchanged.\n- Include `definition.nodes` only when sending the complete desired node set. Nodes omitted from that array are removed.\n- Omit `definition.edges` to leave edges unchanged.\n- Include `definition.edges` only when sending the complete desired edge set. Edges omitted from that array are removed.\n- Use snake_case config keys in API payloads.\n\nSuccessful responses contain workflow metadata, including the new `lock_version`. They do not include the expanded graph. Call `GET /workflows/{workflow_id}/definition` after updating when you need the saved nodes and edges.\n\nYou can update the definition of an active workflow. Changes take effect immediately for new executions; running executions continue with the snapshot they started with.\n","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml patch /workflows/{workflow_id}","href":"/api/platform/v1/functions/workflows/update-workflow"},{"title":"Retrieve workflow definition","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /workflows/{workflow_id}/definition","href":"/api/platform/v1/functions/workflows/retrieve-workflow-definition"},{"title":"Get workflow variables","description":"Retrieve all variables available in a workflow, including both fixed system variables and variables discovered from execution history.\n\nReturns two categories of variables:\n- **Fixed variables**: Built-in system and context variables always available (flow_id, started_at, channel, phone_number, etc.)\n- **Discovered variables**: User-defined variables observed during workflow executions, with sample values and usage statistics\n\nUse this endpoint to:\n- Understand what variables are available for use in workflow steps\n- Review variable types and sample values for debugging\n- Build autocomplete for variable references in workflow editors\n","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /workflows/{workflow_id}/variables","href":"/api/platform/v1/functions/workflows/get-workflow-variables"},{"title":"List workflow executions","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /workflows/{workflow_id}/executions","href":"/api/platform/v1/functions/workflows/list-workflow-executions"},{"title":"Start workflow execution","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml post /workflows/{workflow_id}/executions","href":"/api/platform/v1/functions/workflows/start-workflow-execution"},{"title":"Retrieve workflow execution","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /workflow_executions/{execution_id}","href":"/api/platform/v1/functions/workflows/retrieve-workflow-execution"},{"title":"Update workflow execution status","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml patch /workflow_executions/{execution_id}","href":"/api/platform/v1/functions/workflows/update-workflow-execution-status"},{"title":"List workflow execution events","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /workflow_executions/{execution_id}/events","href":"/api/platform/v1/functions/workflows/list-workflow-execution-events"},{"title":"Resume waiting workflow execution","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml post /workflow_executions/{execution_id}/resume","href":"/api/platform/v1/functions/workflows/resume-waiting-workflow-execution"}]},{"group":"Workflow Triggers","pages":[{"title":"List workflow triggers","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /workflows/{workflow_id}/triggers","href":"/api/platform/v1/functions/workflow-triggers/list-workflow-triggers"},{"title":"Replace workflow triggers","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml put /workflows/{workflow_id}/triggers","href":"/api/platform/v1/functions/workflow-triggers/replace-workflow-triggers"},{"title":"Create workflow trigger","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml post /workflows/{workflow_id}/triggers","href":"/api/platform/v1/functions/workflow-triggers/create-workflow-trigger"},{"title":"Delete workflow trigger","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml delete /triggers/{trigger_id}","href":"/api/platform/v1/functions/workflow-triggers/delete-workflow-trigger"},{"title":"Update workflow trigger","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml patch /triggers/{trigger_id}","href":"/api/platform/v1/functions/workflow-triggers/update-workflow-trigger"}]},{"group":"Functions","pages":[{"title":"List functions","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /functions","href":"/api/platform/v1/functions/functions/list-functions"},{"title":"Create function","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml post /functions","href":"/api/platform/v1/functions/functions/create-function"},{"title":"Retrieve function","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /functions/{function_id}","href":"/api/platform/v1/functions/functions/retrieve-function"},{"title":"Delete function","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml delete /functions/{function_id}","href":"/api/platform/v1/functions/functions/delete-function"},{"title":"Update function","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml patch /functions/{function_id}","href":"/api/platform/v1/functions/functions/update-function"},{"title":"Deploy function","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml post /functions/{function_id}/deploy","href":"/api/platform/v1/functions/functions/deploy-function"},{"title":"Invoke function","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml post /functions/{function_id}/invoke","href":"/api/platform/v1/functions/functions/invoke-function"},{"title":"List function secrets","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /functions/{function_id}/secrets","href":"/api/platform/v1/functions/functions/list-function-secrets"},{"title":"Create function secret","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml post /functions/{function_id}/secrets","href":"/api/platform/v1/functions/functions/create-function-secret"},{"title":"Delete function secret","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml delete /functions/{function_id}/secrets/{secret_name}","href":"/api/platform/v1/functions/functions/delete-function-secret"},{"title":"List function invocations","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /functions/{function_id}/invocations","href":"/api/platform/v1/functions/functions/list-function-invocations"}]},{"group":"WhatsApp Conversations","pages":[{"title":"List conversation workflow executions","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-workflows.yaml get /whatsapp/conversations/{conversation_id}/flow_executions","href":"/api/platform/v1/functions/whatsapp-conversations/list-conversation-workflow-executions"}]}]},{"group":"Kapso Agent API","pages":[{"group":"Agent Modes","pages":[{"title":"List modes","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-kapso-agent.yaml get /kapso-agent/modes","href":"/api/platform/v1/kapso-agent/agent-modes/list-modes"},{"title":"Get a mode","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-kapso-agent.yaml get /kapso-agent/modes/{mode}","href":"/api/platform/v1/kapso-agent/agent-modes/get-a-mode"}]},{"group":"Agent Sessions","pages":[{"title":"List mode sessions","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-kapso-agent.yaml get /kapso-agent/modes/{mode}/sessions","href":"/api/platform/v1/kapso-agent/agent-sessions/list-mode-sessions"},{"title":"Get a session","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-kapso-agent.yaml get /kapso-agent/sessions/{id}","href":"/api/platform/v1/kapso-agent/agent-sessions/get-a-session"}]},{"group":"Agent Runs","pages":[{"title":"Create a run","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-kapso-agent.yaml post /kapso-agent/runs","href":"/api/platform/v1/kapso-agent/agent-runs/create-a-run"},{"title":"Get a run","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-kapso-agent.yaml get /kapso-agent/runs/{id}","href":"/api/platform/v1/kapso-agent/agent-runs/get-a-run"},{"title":"Pause a run","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-kapso-agent.yaml post /kapso-agent/runs/{id}/pause","href":"/api/platform/v1/kapso-agent/agent-runs/pause-a-run"},{"title":"Resume a run","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-kapso-agent.yaml post /kapso-agent/runs/{id}/resume","href":"/api/platform/v1/kapso-agent/agent-runs/resume-a-run"},{"title":"Cancel a run","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-kapso-agent.yaml post /kapso-agent/runs/{id}/cancel","href":"/api/platform/v1/kapso-agent/agent-runs/cancel-a-run"},{"title":"Approve a tool call","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-kapso-agent.yaml post /kapso-agent/runs/{id}/approvals/{approval_id}/approve","href":"/api/platform/v1/kapso-agent/agent-runs/approve-a-tool-call"},{"title":"Reject a tool call","deprecated":null,"version":null,"openapi":"/api/platform/v1/openapi-kapso-agent.yaml post /kapso-agent/runs/{id}/approvals/{approval_id}/reject","href":"/api/platform/v1/kapso-agent/agent-runs/reject-a-tool-call"}]}]}]}]},"title":"Retrieve workflow definition - Kapso Documentation","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"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","Page-CBCH2P7b.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.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"]}