Creates or updates the working draft of a phone number’s call flow. The draft is validated leniently and is not live until published. Optimistic concurrency: pass the lock_version returned by a previous read to detect a concurrent edit, and base_published_version to detect a publish that happened mid-edit.
Creates or updates the working draft of a phone number’s call flow. The draft is validated leniently and does not affect live routing until you publish it. The {number} path parameter is the Allo phone number in E.164 format.Send the full definition document and the schema_version it conforms to.
engine_subset decides how much of your flow runs on live calls. Send "engine_subset": "FULL_FLOW" for any flow you build through the API.
Value
What runs on a live call
FULL_FLOW
The whole tree: every node and branch in definition
NESTED_IVR
Only the root phone menu, and only on a line already set to answer with a phone menu. Publishing replaces that menu’s keys with the flow’s root keys. A key that leads to a nested menu, a condition, a voicemail or a hang-up node is removed from the live menu. This mode exists for lines that only had a simple phone menu
When you omit engine_subset, Allo infers it from the nodes. A flow with a business-hours, contact-property, country-code or send-SMS node is FULL_FLOW. Any other flow is inferred as NESTED_IVR, even one with nested menus, rings and an AI receptionist, so only its root menu would run.Once a line’s flow is FULL_FLOW, a later draft cannot downgrade it to NESTED_IVR: the request keeps FULL_FLOW.
Saving a draft never changes live routing. There are two ways to put it on the air:
Publish it yourself with Publish call flow, passing the lock_version from this response. This changes live inbound routing immediately.
Hand it to a person using the confirmation_url in this response: a link where a signed-in user opens this draft, reviews it, and publishes it. Prefer this when a human should approve the change.
Treat confirmation_url as opaque: pass it through verbatim; never build it from a hardcoded app host or parse it. (It is present only while the response status is DRAFT.)
lock_version: pass the value from the draft you read. Omit it (or send null) to upsert the draft without a concurrency check. A stale value returns 409 CALL_FLOW_STALE_LOCK.
base_published_version: the published version your edit is based on. Read it from the version of Get call flow when its status is PUBLISHED. Omitting it means “no published version”, so on a line that already has a published flow the request returns 409 CALL_FLOW_CONCURRENT_EDIT. The same error is returned if someone published a new version while you were editing.
FULL_FLOW runs the whole tree on live calls. NESTED_IVR runs only the root phone menu: its keys that lead to a nested menu, a condition or a voicemail node do nothing. Send FULL_FLOW for flows you build through the API. When omitted, it is inferred from the nodes: FULL_FLOW only if the flow has a business-hours, contact-property, country-code or send-SMS node, otherwise NESTED_IVR. A line whose flow is already FULL_FLOW keeps it.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Allo — Help Center","description":"Documentation and support for Allo, the business phone system that does the work your calls create","colors":{"primary":"#002C2A","light":"#F7F5F0","dark":"#005C48"},"logo":{"light":"https://mintcdn.com/themobilefirstcompany/lUQseAX2HkM5_D4I/Allo-logo-dark.svg?fit=max\u0026auto=format\u0026n=lUQseAX2HkM5_D4I\u0026q=85\u0026s=fc710c4b2d7fad80babb5aff40fd445f","dark":"https://mintcdn.com/themobilefirstcompany/lUQseAX2HkM5_D4I/Allo-logo-white.svg?fit=max\u0026auto=format\u0026n=lUQseAX2HkM5_D4I\u0026q=85\u0026s=6aafc66adc4822b700749ea65edfd057","href":"https://help.withallo.com"},"favicon":"https://mintcdn.com/themobilefirstcompany/rQqa1VZUBtU6450W/icon.ico?fit=max\u0026auto=format\u0026n=rQqa1VZUBtU6450W\u0026q=85\u0026s=93c598907844385de27769ff740b1660","appearance":{"default":"light","strict":true},"background":{"color":{"dark":"#002C2A"}},"navbar":{"links":[{"href":"https://withallo.com/changelog","label":"Changelog"},{"href":"https://withallo.com/download","label":"Download"}],"primary":{"type":"button","label":"Get Started","href":"https://start.withallo.com"}},"footer":{"socials":{"x":"https://x.com/mobilefirstco","linkedin":"https://www.linkedin.com/company/the-mobile-first-company","website":"https://withallo.com"},"links":[{"header":"Product","items":[{"label":"Pricing","href":"https://withallo.com/pricing"},{"label":"Download","href":"https://withallo.com/download"},{"label":"Features","href":"https://withallo.com/features"}]},{"header":"Resources","items":[{"label":"Help Center","href":"https://help.withallo.com"},{"label":"Contact Support","href":"https://help.withallo.com/en/support/contact"},{"label":"System status","href":"https://status.withallo.com"},{"label":"Trust center","href":"https://trust.themobilefirstcompany.com/"}]},{"header":"Company","items":[{"label":"About","href":"https://withallo.com/about"},{"label":"Blog","href":"https://withallo.com/blog"}]},{"header":"Legal","items":[{"label":"Privacy Policy","href":"https://withallo.com/privacy-policy"},{"label":"Terms of Service","href":"https://withallo.com/terms-conditions"},{"label":"Trust Center","href":"https://trust.themobilefirstcompany.com"}]}]},"search":{"prompt":"Search documentation..."},"seo":{"metatags":{"canonical":"https://help.withallo.com","og:locale":"en_US","twitter:site":"@mobilefirstco"}},"icons":{"library":"lucide"},"integrations":{"ga4":{"measurementId":"G-BJ9CLYY37R"},"intercom":{"appId":"q4vb84fg"},"telemetry":{"enabled":true}},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"thumbnails":{"fonts":{"family":"Inter"}},"interaction":{"drilldown":false},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":"en/get-started"},{"language":"fr","href":"fr/get-started"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"themobilefirstcompany","hasAudioNarration":false,"actualSubdomain":"themobilefirstcompany","customDomains":["help.withallo.com"],"gitSource":{"type":"github","owner":"themobilefirstco","repo":"doc-allo","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae90bd4b2788b33cff56a47","collectionId":"34c98883-cb44-4879-859e-954eb2125f58","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae90bd4b2788b33cff56a47"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae90bd4b2788b33cff56a47","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"en","tag":"API Reference","count":146},{"language":"fr","tag":"Référence API","count":146},{"language":"en","tag":"Help","count":104},{"language":"fr","tag":"Aide","count":104},{"language":"en","tag":"Integrations","count":39},{"language":"fr","tag":"Intégrations","count":39},{"language":"en","tag":"CRM","count":21},{"language":"fr","tag":"CRM","count":21},{"language":"fr","tag":"Numéros de téléphone","count":15},{"language":"en","tag":"Partner","count":14},{"language":"fr","tag":"Partner","count":14},{"language":"en","tag":"Webhooks","count":13},{"language":"fr","tag":"Webhooks","count":13},{"language":"en","tag":"AI Receptionist","count":12},{"language":"fr","tag":"Réceptionniste IA","count":12},{"language":"en","tag":"Incoming calls","count":11},{"language":"fr","tag":"Appels entrants","count":11},{"language":"en","tag":"SMS","count":10},{"language":"en","tag":"Conversations","count":10},{"language":"fr","tag":"SMS","count":10}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"en/v2/api-reference/phone-numbers/save-call-flow-draft","slug":"/en/v2/api-reference/phone-numbers/save-call-flow-draft","pageMetadata":{"title":"Save call flow draft","openapi":"PUT /v2/api/numbers/{number}/call_flow/draft","description":"Creates or updates the working draft of a phone number's call flow. The draft is validated leniently and is not live until published. Optimistic concurrency: pass the `lock_version` returned by a previous read to detect a concurrent edit, and `base_published_version` to detect a publish that happened mid-edit.","href":"/en/v2/api-reference/phone-numbers/save-call-flow-draft"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Creates or updates the working draft of a phone number’s call flow. The draft is validated leniently and is not live until published. Optimistic concurrency: pass the \", _jsx(_components.code, {\n children: \"lock_version\"\n }), \" returned by a previous read to detect a concurrent edit, and \", _jsx(_components.code, {\n children: \"base_published_version\"\n }), \" to detect a publish that happened mid-edit.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Note,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Required scope:`}),` `,_jsx(_components.code,{children:`PHONE_NUMBERS_WRITE`})]})}),`\n`,_jsx(Heading,{level:`2`,id:`behavior`,children:`Behavior`}),`\n`,_jsxs(_components.p,{children:[`Creates or updates the working `,_jsx(_components.strong,{children:`draft`}),` of a phone number’s call flow. The draft is validated leniently and does not affect live routing until you publish it. The `,_jsx(_components.code,{children:`{number}`}),` path parameter is the Allo phone number in E.164 format.`]}),`\n`,_jsxs(_components.p,{children:[`Send the full `,_jsx(_components.code,{children:`definition`}),` document and the `,_jsx(_components.code,{children:`schema_version`}),` it conforms to.`]}),`\n`,_jsx(Heading,{level:`2`,id:`engine-subset`,children:`Engine subset`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`engine_subset`}),` decides how much of your flow runs on live calls. `,_jsxs(_components.strong,{children:[`Send `,_jsx(_components.code,{children:`\"engine_subset\": \"FULL_FLOW\"`})]}),` for any flow you build through the API.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Value`}),_jsx(_components.th,{children:`What runs on a live call`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`FULL_FLOW`})}),_jsxs(_components.td,{children:[`The whole tree: every node and branch in `,_jsx(_components.code,{children:`definition`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`NESTED_IVR`})}),_jsx(_components.td,{children:`Only the root phone menu, and only on a line already set to answer with a phone menu. Publishing replaces that menu’s keys with the flow’s root keys. A key that leads to a nested menu, a condition, a voicemail or a hang-up node is removed from the live menu. This mode exists for lines that only had a simple phone menu`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`When you omit `,_jsx(_components.code,{children:`engine_subset`}),`, Allo infers it from the nodes. A flow with a business-hours, contact-property, country-code or send-SMS node is `,_jsx(_components.code,{children:`FULL_FLOW`}),`. `,_jsxs(_components.strong,{children:[`Any other flow is inferred as `,_jsx(_components.code,{children:`NESTED_IVR`})]}),`, even one with nested menus, rings and an AI receptionist, so only its root menu would run.`]}),`\n`,_jsxs(_components.p,{children:[`Once a line’s flow is `,_jsx(_components.code,{children:`FULL_FLOW`}),`, a later draft cannot downgrade it to `,_jsx(_components.code,{children:`NESTED_IVR`}),`: the request keeps `,_jsx(_components.code,{children:`FULL_FLOW`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`going-live`,children:`Going live`}),`\n`,_jsx(_components.p,{children:`Saving a draft never changes live routing. There are two ways to put it on the air:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Publish it yourself`}),` with `,_jsx(_components.a,{href:`/en/v2/api-reference/phone-numbers/publish-call-flow`,children:`Publish call flow`}),`, passing the `,_jsx(_components.code,{children:`lock_version`}),` from this response. This changes live inbound routing immediately.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Hand it to a person`}),` using the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`confirmation_url`})}),` in this response: a link where a signed-in user opens this draft, reviews it, and publishes it. Prefer this when a human should approve the change.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Treat `,_jsx(_components.code,{children:`confirmation_url`}),` as opaque: pass it through verbatim; never build it from a hardcoded app host or parse it. (It is present only while the response `,_jsx(_components.code,{children:`status`}),` is `,_jsx(_components.code,{children:`DRAFT`}),`.)`]}),`\n`,_jsx(Heading,{level:`2`,id:`concurrency`,children:`Concurrency`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`lock_version`}),`: pass the value from the draft you read. Omit it (or send `,_jsx(_components.code,{children:`null`}),`) to upsert the draft without a concurrency check. A stale value returns `,_jsx(_components.code,{children:`409 CALL_FLOW_STALE_LOCK`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`base_published_version`}),`: the published version your edit is based on. Read it from the `,_jsx(_components.code,{children:`version`}),` of `,_jsx(_components.a,{href:`/en/v2/api-reference/phone-numbers/get-call-flow`,children:`Get call flow`}),` when its `,_jsx(_components.code,{children:`status`}),` is `,_jsx(_components.code,{children:`PUBLISHED`}),`. Omitting it means “no published version”, so on a line that already has a published flow the request returns `,_jsx(_components.code,{children:`409 CALL_FLOW_CONCURRENT_EDIT`}),`. The same error is returned if someone published a new version while you were editing.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`errors`,children:`Errors`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`400 CALL_FLOW_SCHEMA_VERSION_MISMATCH`}),`: `,_jsx(_components.code,{children:`schema_version`}),` does not match the server’s current version.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`400 CALL_FLOW_INVALID`}),`: the `,_jsx(_components.code,{children:`definition`}),` is malformed or failed validation.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`404 PHONE_NUMBER_NOT_FOUND`}),`: the number is not one of your account’s numbers.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`409 CALL_FLOW_STALE_LOCK`}),` / `,_jsx(_components.code,{children:`409 CALL_FLOW_CONCURRENT_EDIT`}),`: see Concurrency above.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Save call flow draft","openapi":"PUT /v2/api/numbers/{number}/call_flow/draft","description":"Creates or updates the working draft of a phone number's call flow. The draft is validated leniently and is not live until published. Optimistic concurrency: pass the `lock_version` returned by a previous read to detect a concurrent edit, and `base_published_version` to detect a publish that happened mid-edit.","href":"/en/v2/api-reference/phone-numbers/save-call-flow-draft"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Behavior","slug":"behavior","depth":2,"children":[]},{"title":"Engine subset","slug":"engine-subset","depth":2,"children":[]},{"title":"Going live","slug":"going-live","depth":2,"children":[]},{"title":"Concurrency","slug":"concurrency","depth":2,"children":[]},{"title":"Errors","slug":"errors","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/themobilefirstcompany/8a9814acae5adfe6/webmcp.js"],"openApiReferenceData":{"operation":{"summary":"Save call flow draft","description":"Creates or updates the working draft of a phone number's call flow. The draft is validated leniently and is not live until published. Optimistic concurrency: pass the `lock_version` returned by a previous read to detect a concurrent edit, and `base_published_version` to detect a publish that happened mid-edit.","operationId":"saveCallFlowDraft","tags":["Phone Numbers"],"security":["8c6469dd-3c37-4b9c-9560-75ec6d5b1989"],"parameters":["839242cc-12ea-45a3-8d07-bb777c477e6a"],"requestBody":"ef0cc4a8-e3d8-4edb-9658-f770f1ed9c3b","responses":{"200":"72d5e154-2b26-4e1e-ba40-98d01571abfa","400":"6c1fc6f1-36c8-4249-bf1b-8581a9a88e45","401":"b63e20a7-06f3-43f5-ba95-168e68f37f64","404":"62a3b5cb-8cb4-46d5-8ee1-d31c5081b925","409":"72921801-9f99-4e8b-928b-7700b4f3e267","429":"5afbd512-6a20-4a4a-8dde-70bf492fd97b"},"method":"put","type":"path","servers":["da3f02f3-3994-43c6-a555-8a2834d3bbad"],"path":"/v2/api/numbers/{number}/call_flow/draft","baseUrlOptions":["https://api.withallo.com"],"title":"Save call flow draft","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"839242cc-12ea-45a3-8d07-bb777c477e6a":{"name":"number","in":"path","required":true,"description":"Allo phone number in E.164 format","schema":{"type":"string","example":"+14155551234","isRequired":true,"description":"Allo phone number in E.164 format","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["definition","schema_version"],"properties":{"definition":{"type":"object","description":"The call flow tree document (opaque; camelCase keys).","additionalProperties":true,"isRequired":true,"uniqueKey":"definition","typeLabel":"object"},"schema_version":{"type":"integer","description":"Must match the server's current call flow schema version.","example":1,"isRequired":true,"uniqueKey":"schema_version","typeLabel":"integer"},"lock_version":{"oneOf":[{"type":"integer","description":"The `lock_version` of the draft you are updating; omit or null to upsert without a concurrency check.","uniqueKey":"lock_version.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The `lock_version` of the draft you are updating; omit or null to upsert without a concurrency check.","uniqueKey":"lock_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"lock_version","typeLabel":"integer | null"},"base_published_version":{"oneOf":[{"type":"integer","description":"The published version your edit is based on; a mismatch means someone published mid-edit (409).","uniqueKey":"base_published_version.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The published version your edit is based on; a mismatch means someone published mid-edit (409).","uniqueKey":"base_published_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"base_published_version","typeLabel":"integer | null"},"engine_subset":{"oneOf":[{"type":"string","enum":["NESTED_IVR","FULL_FLOW"],"description":"`FULL_FLOW` runs the whole tree on live calls. `NESTED_IVR` runs only the root phone menu: its keys that lead to a nested menu, a condition or a voicemail node do nothing. Send `FULL_FLOW` for flows you build through the API. When omitted, it is inferred from the nodes: `FULL_FLOW` only if the flow has a business-hours, contact-property, country-code or send-SMS node, otherwise `NESTED_IVR`. A line whose flow is already `FULL_FLOW` keeps it.","uniqueKey":"engine_subset.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["NESTED_IVR","FULL_FLOW"],"description":"`FULL_FLOW` runs the whole tree on live calls. `NESTED_IVR` runs only the root phone menu: its keys that lead to a nested menu, a condition or a voicemail node do nothing. Send `FULL_FLOW` for flows you build through the API. When omitted, it is inferred from the nodes: `FULL_FLOW` only if the flow has a business-hours, contact-property, country-code or send-SMS node, otherwise `NESTED_IVR`. A line whose flow is already `FULL_FLOW` keeps it.","uniqueKey":"engine_subset.oneOf.1","typeLabel":"null"}],"uniqueKey":"engine_subset","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"definition":{},"schema_version":1,"lock_version":123,"base_published_version":123}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"72d5e154-2b26-4e1e-ba40-98d01571abfa":{"description":"The saved draft","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"A version of a phone number's call flow.","properties":{"id":{"oneOf":[{"type":"string","description":"The call flow version ID. Null for a synthesized (never-persisted) flow.","example":"cflv-abc123","uniqueKey":"data.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The call flow version ID. Null for a synthesized (never-persisted) flow.","example":"cflv-abc123","uniqueKey":"data.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.id","typeLabel":"string | null"},"flow_id":{"oneOf":[{"type":"string","description":"The parent call flow ID. Null for a synthesized flow.","example":"cflw-abc123","uniqueKey":"data.flow_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The parent call flow ID. Null for a synthesized flow.","example":"cflw-abc123","uniqueKey":"data.flow_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.flow_id","typeLabel":"string | null"},"version":{"type":"integer","description":"Monotonic version number within the flow.","example":3,"uniqueKey":"data.version","typeLabel":"integer"},"status":{"type":"string","enum":["DRAFT","PUBLISHED","SYNTHESIZED"],"description":"DRAFT (working copy), PUBLISHED (live), or SYNTHESIZED (in-memory representation of a legacy IVR-only line).","example":"PUBLISHED","uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"lock_version":{"type":"integer","description":"Optimistic-concurrency token; pass it back on the next draft save.","example":0,"uniqueKey":"data.lock_version","typeLabel":"integer"},"schema_version":{"type":"integer","description":"The call flow schema version this definition conforms to.","example":1,"uniqueKey":"data.schema_version","typeLabel":"integer"},"engine_subset":{"type":"string","enum":["NESTED_IVR","FULL_FLOW"],"example":"FULL_FLOW","description":"`FULL_FLOW` runs the whole tree on live calls. `NESTED_IVR` runs only the root phone menu: its keys that lead to a nested menu, a condition or a voicemail node do nothing.","uniqueKey":"data.engine_subset","typeLabel":"enum\u003cstring>"},"number":{"oneOf":[{"type":"string","description":"E.164 of the line this flow routes. Null for a never-persisted SYNTHESIZED flow.","example":"+14155551234","uniqueKey":"data.number.oneOf.0","typeLabel":"string"},{"type":"null","description":"E.164 of the line this flow routes. Null for a never-persisted SYNTHESIZED flow.","example":"+14155551234","uniqueKey":"data.number.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.number","typeLabel":"string | null"},"confirmation_url":{"oneOf":[{"type":"string","description":"A link where a signed-in user reviews this draft and publishes it. Present only on a `DRAFT` (a `PUBLISHED` or `SYNTHESIZED` version has nothing to confirm). Use it when a person should approve the change; to go live without one, call `POST /v2/api/numbers/{number}/call_flow/publish`. Treat it as opaque: pass it through verbatim, and never construct or parse it.","example":"https://app.withallo.com/call-flow-draft/cflv-abc123","uniqueKey":"data.confirmation_url.oneOf.0","typeLabel":"string"},{"type":"null","description":"A link where a signed-in user reviews this draft and publishes it. Present only on a `DRAFT` (a `PUBLISHED` or `SYNTHESIZED` version has nothing to confirm). Use it when a person should approve the change; to go live without one, call `POST /v2/api/numbers/{number}/call_flow/publish`. Treat it as opaque: pass it through verbatim, and never construct or parse it.","example":"https://app.withallo.com/call-flow-draft/cflv-abc123","uniqueKey":"data.confirmation_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.confirmation_url","typeLabel":"string | null"},"entry_node_id":{"type":"string","description":"The id of the entry node in `definition.nodes`.","example":"node-22","uniqueKey":"data.entry_node_id","typeLabel":"string"},"definition":{"type":"object","description":"The call flow tree document (opaque; camelCase keys).","additionalProperties":true,"uniqueKey":"data.definition","typeLabel":"object"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"id":"cflv-abc123","flow_id":"cflw-abc123","version":3,"status":"PUBLISHED","lock_version":0,"schema_version":1,"engine_subset":"FULL_FLOW","number":"+14155551234","confirmation_url":"https://app.withallo.com/call-flow-draft/cflv-abc123","entry_node_id":"node-22","definition":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"6c1fc6f1-36c8-4249-bf1b-8581a9a88e45":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"error.retryable","typeLabel":"boolean"},"request_id":{"type":"string","uniqueKey":"error.request_id","typeLabel":"string"},"retry_after_seconds":{"oneOf":[{"type":"integer","uniqueKey":"error.retry_after_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"error.retry_after_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.retry_after_seconds","typeLabel":"integer | null"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","retryable":true,"request_id":"\u003cstring>","retry_after_seconds":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"b63e20a7-06f3-43f5-ba95-168e68f37f64":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"error.retryable","typeLabel":"boolean"},"request_id":{"type":"string","uniqueKey":"error.request_id","typeLabel":"string"},"retry_after_seconds":{"oneOf":[{"type":"integer","uniqueKey":"error.retry_after_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"error.retry_after_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.retry_after_seconds","typeLabel":"integer | null"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","retryable":true,"request_id":"\u003cstring>","retry_after_seconds":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"62a3b5cb-8cb4-46d5-8ee1-d31c5081b925":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"error.retryable","typeLabel":"boolean"},"request_id":{"type":"string","uniqueKey":"error.request_id","typeLabel":"string"},"retry_after_seconds":{"oneOf":[{"type":"integer","uniqueKey":"error.retry_after_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"error.retry_after_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.retry_after_seconds","typeLabel":"integer | null"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","retryable":true,"request_id":"\u003cstring>","retry_after_seconds":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"72921801-9f99-4e8b-928b-7700b4f3e267":{"description":"Conflict with existing resource","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"error.retryable","typeLabel":"boolean"},"request_id":{"type":"string","uniqueKey":"error.request_id","typeLabel":"string"},"retry_after_seconds":{"oneOf":[{"type":"integer","uniqueKey":"error.retry_after_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"error.retry_after_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.retry_after_seconds","typeLabel":"integer | null"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","retryable":true,"request_id":"\u003cstring>","retry_after_seconds":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"5afbd512-6a20-4a4a-8dde-70bf492fd97b":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","uniqueKey":"error.type","typeLabel":"string"},"code":{"type":"string","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"retryable":{"type":"boolean","uniqueKey":"error.retryable","typeLabel":"boolean"},"request_id":{"type":"string","uniqueKey":"error.request_id","typeLabel":"string"},"retry_after_seconds":{"oneOf":[{"type":"integer","uniqueKey":"error.retry_after_seconds.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"error.retry_after_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.retry_after_seconds","typeLabel":"integer | null"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","retryable":true,"request_id":"\u003cstring>","retry_after_seconds":123}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"8c6469dd-3c37-4b9c-9560-75ec6d5b1989":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"Authorization","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"da3f02f3-3994-43c6-a555-8a2834d3bbad":{"url":"https://api.withallo.com","description":"Production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"Authorization","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"Authorization","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"Authorization"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"themobilefirstcompany","siteName":"Allo — Help Center","title":"Save call flow draft - Allo — Help Center","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/en/v2/api-reference/phone-numbers/save-call-flow-draft","matchLevel":0},"fr":{"href":"/fr/v2/api-reference/phone-numbers/save-call-flow-draft","matchLevel":1}}},"lastModified":"2026-10-16T10:02:36.898Z","originalFileLocation":"en/v2/api-reference/phone-numbers/save-call-flow-draft.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";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=\"light\"}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=\"Creates or updates the working draft of a phone number\u0026#x27;s call flow. The draft is validated leniently and is not live until published. Optimistic concurrency: pass the lock_version returned by a previous read to detect a concurrent edit, and base_published_version to detect a publish that happened mid-edit.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Allo — Help Center\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/themobilefirstcompany/XpmSCPLu2mWezDP7/_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/themobilefirstcompany/XpmSCPLu2mWezDP7/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/themobilefirstcompany/XpmSCPLu2mWezDP7/_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/themobilefirstcompany/XpmSCPLu2mWezDP7/_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/themobilefirstcompany/XpmSCPLu2mWezDP7/_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/themobilefirstcompany/XpmSCPLu2mWezDP7/_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/themobilefirstcompany/XpmSCPLu2mWezDP7/_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/themobilefirstcompany/XpmSCPLu2mWezDP7/_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/themobilefirstcompany/XpmSCPLu2mWezDP7/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Save call flow draft - Allo — Help Center\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates or updates the working draft of a phone number\u0026#x27;s call flow. The draft is validated leniently and is not live until published. Optimistic concurrency: pass the lock_version returned by a previous read to detect a concurrent edit, and base_published_version to detect a publish that happened mid-edit.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Allo — Help Center\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://themobilefirstcompany.mintlify.app/_mintlify/api/og/v2?division=Phone+Numbers\u0026amp;title=Save+call+flow+draft\u0026amp;description=Creates+or+updates+the+working+draft+of+a+phone+number%27s+call+flow.+The+draft+is+validated+leniently+and+is+not+live+until+published.+Optimistic+concurrency%3A+pa\u0026amp;theme=79d05b053982c0bb2603e704\u0026amp;signature=dd5f713c8412133cc2de47b6c27ca574352ae21b50966de91dd2f31afdfd633e\">\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=\"Save call flow draft - Allo — Help Center\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates or updates the working draft of a phone number\u0026#x27;s call flow. The draft is validated leniently and is not live until published. Optimistic concurrency: pass the lock_version returned by a previous read to detect a concurrent edit, and base_published_version to detect a publish that happened mid-edit.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://themobilefirstcompany.mintlify.app/_mintlify/api/og/v2?division=Phone+Numbers\u0026amp;title=Save+call+flow+draft\u0026amp;description=Creates+or+updates+the+working+draft+of+a+phone+number%27s+call+flow.+The+draft+is+validated+leniently+and+is+not+live+until+published.+Optimistic+concurrency%3A+pa\u0026amp;theme=79d05b053982c0bb2603e704\u0026amp;signature=dd5f713c8412133cc2de47b6c27ca574352ae21b50966de91dd2f31afdfd633e\">\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/themobilefirstcompany/XpmSCPLu2mWezDP7/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Allo — Help Center\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#002C2A\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003clink data-mint-head rel=\"canonical\" href=\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/v2/api-reference/phone-numbers/save-call-flow-draft.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://help.withallo.com/fr/v2/api-reference/phone-numbers/save-call-flow-draft\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://help.withallo.com/#organization\",\"name\":\"Allo — Help Center\",\"url\":\"https://help.withallo.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/themobilefirstcompany/lUQseAX2HkM5_D4I/Allo-logo-dark.svg?fit=max\u0026auto=format\u0026n=lUQseAX2HkM5_D4I\u0026q=85\u0026s=fc710c4b2d7fad80babb5aff40fd445f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://help.withallo.com#website\",\"name\":\"Allo — Help Center\",\"url\":\"https://help.withallo.com\",\"publisher\":{\"@id\":\"https://help.withallo.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft#webpage\",\"url\":\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft\",\"name\":\"Save call flow draft\",\"description\":\"Creates or updates the working draft of a phone number's call flow. The draft is validated leniently and is not live until published. Optimistic concurrency: pass the lock_version returned by a previous read to detect a concurrent edit, and base_published_version to detect a publish that happened mid-edit.\",\"dateModified\":\"2026-10-16T10:02:36.898Z\",\"isPartOf\":{\"@id\":\"https://help.withallo.com#website\"},\"breadcrumb\":{\"@id\":\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Phone Numbers\",\"item\":\"https://help.withallo.com/en/v2/api-reference/phone-numbers/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Save call flow draft\",\"item\":\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft#apireference\",\"headline\":\"Save call flow draft\",\"name\":\"Save call flow draft\",\"description\":\"Creates or updates the working draft of a phone number's call flow. The draft is validated leniently and is not live until published. Optimistic concurrency: pass the lock_version returned by a previous read to detect a concurrent edit, and base_published_version to detect a publish that happened mid-edit.\",\"url\":\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft\",\"mainEntityOfPage\":{\"@id\":\"https://help.withallo.com/en/v2/api-reference/phone-numbers/save-call-flow-draft#webpage\"},\"dateModified\":\"2026-10-16T10:02:36.898Z\",\"publisher\":{\"@id\":\"https://help.withallo.com/#organization\"},\"isPartOf\":{\"@id\":\"https://help.withallo.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Allo — Help Center\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Allo — Help Center","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Help","pages":[{"title":"Help","href":"/en/get-started"}]},{"tab":"API Reference","groups":[{"group":"API","pages":[{"title":"Overview","href":"/en/v2/api-reference/introduction"},{"title":"Authentication","href":"/en/v2/api-reference/guides/authentication"},{"title":"Rate limits","href":"/en/v2/api-reference/guides/rate-limits"},{"title":"Pagination","href":"/en/v2/api-reference/guides/pagination"},{"title":"Error handling","href":"/en/v2/api-reference/guides/error-handling"},{"title":"Error codes","href":"/en/v2/api-reference/guides/error-codes"},{"title":"Common use cases","href":"/en/v2/api-reference/guides/common-use-cases"}]},{"group":"Webhooks","pages":[{"title":"Overview","href":"/en/v2/api-reference/webhooks/overview"},{"title":"List webhooks","openapi":"GET /v2/api/webhooks","href":"/en/v2/api-reference/webhooks/get-webhooks"},{"title":"Get webhook","openapi":"GET /v2/api/webhooks/{webhook_id}","href":"/en/v2/api-reference/webhooks/get-webhook"},{"title":"Create webhook","openapi":"POST /v2/api/webhooks","href":"/en/v2/api-reference/webhooks/create-webhook"},{"title":"Update webhook","openapi":"PUT /v2/api/webhooks/{webhook_id}","href":"/en/v2/api-reference/webhooks/update-webhook"},{"title":"Delete webhook","openapi":"DELETE /v2/api/webhooks/{webhook_id}","href":"/en/v2/api-reference/webhooks/delete-webhook"},{"title":"List event types","openapi":"GET /v2/api/webhooks/event_types","href":"/en/v2/api-reference/webhooks/list-event-types"},{"title":"Event catalog","href":"/en/v2/api-reference/webhooks/event-catalog"},{"title":"Verifying webhook signatures","href":"/en/v2/api-reference/webhooks/verifying-signatures"},{"title":"Delivery and retries","href":"/en/v2/api-reference/webhooks/delivery-and-retries"},{"title":"Testing webhooks","href":"/en/v2/api-reference/webhooks/testing"},{"title":"Best practices","href":"/en/v2/api-reference/webhooks/best-practices"},{"title":"Troubleshoot","href":"/en/v2/api-reference/webhooks/troubleshooting"}]},{"group":"Conversations","pages":[{"title":"Overview","href":"/en/v2/api-reference/conversations/overview"},{"title":"List conversations","openapi":"GET /v2/api/conversations","href":"/en/v2/api-reference/conversations/list-conversations"},{"title":"Get conversation item","openapi":"GET /v2/api/conversations/items/{id}","href":"/en/v2/api-reference/conversations/get-item"},{"title":"Get recording download link","openapi":"GET /v2/api/conversations/items/{id}/recording","href":"/en/v2/api-reference/conversations/get-item-recording"},{"title":"Search conversation items","openapi":"POST /v2/api/conversations/items/search","href":"/en/v2/api-reference/conversations/search-conversation-items"},{"title":"Get many conversation items","openapi":"POST /v2/api/conversations/items/batch","href":"/en/v2/api-reference/conversations/batch-get"},{"title":"Execute conversation action","openapi":"PUT /v2/api/conversations/{contact_number}/action","href":"/en/v2/api-reference/conversations/execute-action"},{"title":"Update call summary","openapi":"PATCH /v2/api/conversations/items/{id}/summary","href":"/en/v2/api-reference/conversations/update-summary"},{"title":"Pin conversation","openapi":"PUT /v2/api/conversations/{contact_number}/pin","href":"/en/v2/api-reference/conversations/pin-conversation"},{"title":"Unpin conversation","openapi":"DELETE /v2/api/conversations/{contact_number}/pin","href":"/en/v2/api-reference/conversations/unpin-conversation"}]},{"group":"CRM","pages":[{"title":"Overview","href":"/en/v2/api-reference/crm/overview"}]},{"group":"People","pages":[{"title":"Overview","href":"/en/v2/api-reference/crm/people-overview"},{"title":"Get person","openapi":"GET /v2/api/crm/people/{id}","href":"/en/v2/api-reference/crm/get-person"},{"title":"Create person","openapi":"POST /v2/api/crm/people","href":"/en/v2/api-reference/crm/create-person"},{"title":"Update person","openapi":"PUT /v2/api/crm/people/{id}","href":"/en/v2/api-reference/crm/update-person"},{"title":"Search people","openapi":"POST /v2/api/crm/people/search","href":"/en/v2/api-reference/crm/search-people"}]},{"group":"Custom fields","pages":[{"title":"Overview","href":"/en/v2/api-reference/crm/attributes-overview"},{"title":"List custom fields","openapi":"GET /v2/api/crm/attributes","href":"/en/v2/api-reference/crm/list-attributes"},{"title":"Create custom field","openapi":"POST /v2/api/crm/attributes","href":"/en/v2/api-reference/crm/create-attribute"},{"title":"Update custom field","openapi":"PATCH /v2/api/crm/attributes/{key}","href":"/en/v2/api-reference/crm/update-attribute"},{"title":"Delete custom field","openapi":"DELETE /v2/api/crm/attributes/{key}","href":"/en/v2/api-reference/crm/delete-attribute"}]},{"group":"Views","pages":[{"title":"Overview","href":"/en/v2/api-reference/crm/views-overview"},{"title":"List views","openapi":"GET /v2/api/crm/views","href":"/en/v2/api-reference/crm/list-views"},{"title":"Get view","openapi":"GET /v2/api/crm/views/{id}","href":"/en/v2/api-reference/crm/get-view"},{"title":"Create view","openapi":"POST /v2/api/crm/views","href":"/en/v2/api-reference/crm/create-view"},{"title":"Update view","openapi":"PATCH /v2/api/crm/views/{id}","href":"/en/v2/api-reference/crm/update-view"},{"title":"Delete view","openapi":"DELETE /v2/api/crm/views/{id}","href":"/en/v2/api-reference/crm/delete-view"}]},{"group":"Companies","pages":[{"title":"Overview","href":"/en/v2/api-reference/crm/companies-overview"},{"title":"Get company","openapi":"GET /v2/api/crm/companies/{id}","href":"/en/v2/api-reference/crm/get-company"},{"title":"Create company","openapi":"POST /v2/api/crm/companies","href":"/en/v2/api-reference/crm/create-company"},{"title":"Update company","openapi":"PUT /v2/api/crm/companies/{id}","href":"/en/v2/api-reference/crm/update-company"},{"title":"Search companies","openapi":"POST /v2/api/crm/companies/search","href":"/en/v2/api-reference/crm/search-companies"},{"title":"List company attributes","openapi":"GET /v2/api/crm/companies/attributes","href":"/en/v2/api-reference/crm/list-company-attributes"},{"title":"Create company attribute","openapi":"POST /v2/api/crm/companies/attributes","href":"/en/v2/api-reference/crm/create-company-attribute"},{"title":"Update company attribute","openapi":"PATCH /v2/api/crm/companies/attributes/{key}","href":"/en/v2/api-reference/crm/update-company-attribute"},{"title":"Delete company attribute","openapi":"DELETE /v2/api/crm/companies/attributes/{key}","href":"/en/v2/api-reference/crm/delete-company-attribute"}]},{"group":"Deals","pages":[{"title":"Overview","href":"/en/v2/api-reference/crm/deals-overview"},{"title":"Search deals","openapi":"POST /v2/api/crm/deals/search","href":"/en/v2/api-reference/crm/search-deals"},{"title":"Get deal","openapi":"GET /v2/api/crm/deals/{id}","href":"/en/v2/api-reference/crm/get-deal"}]},{"group":"Notes","pages":[{"title":"Overview","href":"/en/v2/api-reference/notes/overview"},{"title":"List conversation notes","openapi":"GET /v2/api/conversations/{contact_number}/notes","href":"/en/v2/api-reference/notes/list-conversation-notes"},{"title":"Create conversation note","openapi":"POST /v2/api/conversations/{contact_number}/notes","href":"/en/v2/api-reference/notes/create-conversation-note"},{"title":"Get conversation note","openapi":"GET /v2/api/conversations/notes/{id}","href":"/en/v2/api-reference/notes/get-conversation-note"},{"title":"Update conversation note","openapi":"PATCH /v2/api/conversations/notes/{id}","href":"/en/v2/api-reference/notes/update-conversation-note"},{"title":"Delete conversation note","openapi":"DELETE /v2/api/conversations/notes/{id}","href":"/en/v2/api-reference/notes/delete-conversation-note"},{"title":"List person notes","openapi":"GET /v2/api/crm/people/{person_id}/notes","href":"/en/v2/api-reference/notes/list-person-notes"},{"title":"Create person note","openapi":"POST /v2/api/crm/people/{person_id}/notes","href":"/en/v2/api-reference/notes/create-person-note"},{"title":"Update person note","openapi":"PATCH /v2/api/crm/people/{person_id}/notes/{note_id}","href":"/en/v2/api-reference/notes/update-person-note"},{"title":"Delete person note","openapi":"DELETE /v2/api/crm/people/{person_id}/notes/{note_id}","href":"/en/v2/api-reference/notes/delete-person-note"}]},{"group":"Threads","pages":[{"title":"Overview","href":"/en/v2/api-reference/threads/overview"},{"title":"Get thread","openapi":"GET /v2/api/threads/{id}","href":"/en/v2/api-reference/threads/get-thread"},{"title":"Find thread","openapi":"GET /v2/api/threads","href":"/en/v2/api-reference/threads/find-thread"},{"title":"Create thread","openapi":"POST /v2/api/threads","href":"/en/v2/api-reference/threads/create-thread"},{"title":"Create thread comment","openapi":"POST /v2/api/threads/{id}/comments","href":"/en/v2/api-reference/threads/create-comment"},{"title":"Update thread comment","openapi":"PATCH /v2/api/threads/comments/{comment_id}","href":"/en/v2/api-reference/threads/update-comment"},{"title":"Resolve thread","openapi":"POST /v2/api/threads/{id}/resolve","href":"/en/v2/api-reference/threads/resolve-thread"},{"title":"Unresolve thread","openapi":"POST /v2/api/threads/{id}/unresolve","href":"/en/v2/api-reference/threads/unresolve-thread"}]},{"group":"Inboxes","pages":[{"title":"Overview","href":"/en/v2/api-reference/inboxes/overview"},{"title":"List inboxes","openapi":"GET /v2/api/inboxes","href":"/en/v2/api-reference/inboxes/list-inboxes"},{"title":"Get inbox suggestions","openapi":"GET /v2/api/inboxes/suggestions","href":"/en/v2/api-reference/inboxes/get-inbox-suggestions"},{"title":"List menu options","openapi":"GET /v2/api/numbers/{number}/menu_options","href":"/en/v2/api-reference/inboxes/list-menu-options"},{"title":"Create inbox","openapi":"POST /v2/api/inboxes","href":"/en/v2/api-reference/inboxes/create-inbox"},{"title":"Update inbox","openapi":"PATCH /v2/api/inboxes/{inbox_id}","href":"/en/v2/api-reference/inboxes/update-inbox"},{"title":"Delete inbox","openapi":"DELETE /v2/api/inboxes/{inbox_id}","href":"/en/v2/api-reference/inboxes/delete-inbox"}]},{"group":"Phone Numbers","pages":[{"title":"Overview","href":"/en/v2/api-reference/phone-numbers/overview"},{"title":"List phone numbers","openapi":"GET /v2/api/numbers","href":"/en/v2/api-reference/phone-numbers/list-numbers"},{"title":"Get call flow","openapi":"GET /v2/api/numbers/{number}/call_flow","href":"/en/v2/api-reference/phone-numbers/get-call-flow"},{"title":"Get call flow draft","openapi":"GET /v2/api/numbers/{number}/call_flow/draft","description":"Returns the working draft of a phone number's call flow. Unlike `GET /v2/api/numbers/{number}/call_flow?status=draft`, this endpoint does NOT fall back to the published flow when no draft exists — it returns `404 CALL_FLOW_DRAFT_NOT_FOUND`. Use it to read a draft's `lock_version` without risk of accidentally holding the published version's lock.","href":"/en/v2/api-reference/phone-numbers/get-call-flow-draft"},{"title":"Save call flow draft","openapi":"PUT /v2/api/numbers/{number}/call_flow/draft","href":"/en/v2/api-reference/phone-numbers/save-call-flow-draft"},{"title":"Publish call flow","openapi":"POST /v2/api/numbers/{number}/call_flow/publish","description":"Publishes the working draft, making it the live call flow for the phone number. This changes live inbound routing immediately. Runs full validation, which is stricter than the lenient validation a draft save runs, so a draft that saved successfully can still fail to publish; the whole publish rolls back if validation fails. Publishing consumes the draft, so the line is left with no draft afterwards.","href":"/en/v2/api-reference/phone-numbers/publish-call-flow"}]},{"group":"AI Receptionist","pages":[{"title":"Overview","href":"/en/v2/api-reference/agent/overview"},{"title":"Get configuration","openapi":"GET /v2/api/numbers/{number}/agent","href":"/en/v2/api-reference/agent/get-agent"},{"title":"Update configuration","openapi":"PATCH /v2/api/numbers/{number}/agent","href":"/en/v2/api-reference/agent/update-agent"},{"title":"Set prompt","openapi":"PUT /v2/api/numbers/{number}/agent/prompt","href":"/en/v2/api-reference/agent/set-agent-prompt"},{"title":"Turn on or off","openapi":"PUT /v2/api/numbers/{number}/agent/status","href":"/en/v2/api-reference/agent/set-agent-status"},{"title":"Add website knowledge","openapi":"POST /v2/api/numbers/{number}/agent/knowledge/websites","href":"/en/v2/api-reference/agent/add-website-knowledge"},{"title":"Enable or disable a website","openapi":"PATCH /v2/api/numbers/{number}/agent/knowledge/websites/{id}","href":"/en/v2/api-reference/agent/update-website-knowledge"},{"title":"Delete website knowledge","openapi":"DELETE /v2/api/numbers/{number}/agent/knowledge/websites/{id}","href":"/en/v2/api-reference/agent/delete-website-knowledge"},{"title":"Delete file knowledge","openapi":"DELETE /v2/api/numbers/{number}/agent/knowledge/files/{id}","href":"/en/v2/api-reference/agent/delete-file-knowledge"},{"title":"List calendars","openapi":"GET /v2/api/calendars","href":"/en/v2/api-reference/agent/list-calendars"},{"title":"Get a calendar","openapi":"GET /v2/api/calendars/{id}","href":"/en/v2/api-reference/agent/get-calendar"},{"title":"List voices","openapi":"GET /v2/api/voices","href":"/en/v2/api-reference/agent/list-voices"}]},{"group":"Tags","pages":[{"title":"Overview","href":"/en/v2/api-reference/tags/overview"},{"title":"List tags","openapi":"GET /v2/api/tags","href":"/en/v2/api-reference/tags/list-tags"},{"title":"Create tag","openapi":"POST /v2/api/tags","href":"/en/v2/api-reference/tags/create-tag"},{"title":"Delete tag","openapi":"DELETE /v2/api/tags/{id}","href":"/en/v2/api-reference/tags/delete-tag"},{"title":"Add tags","openapi":"POST /v2/api/conversations/items/{id}/tags","href":"/en/v2/api-reference/tags/add-tags"},{"title":"Remove tag","openapi":"DELETE /v2/api/conversations/items/{id}/tags/{tag}","href":"/en/v2/api-reference/tags/remove-tag"}]},{"group":"Summary Templates","pages":[{"title":"Overview","href":"/en/v2/api-reference/summary-templates/overview"},{"title":"List summary templates","openapi":"GET /v2/api/summary_templates","href":"/en/v2/api-reference/summary-templates/list-summary-templates"},{"title":"Get summary template","openapi":"GET /v2/api/summary_templates/{id}","href":"/en/v2/api-reference/summary-templates/get-summary-template"},{"title":"Create summary template","openapi":"POST /v2/api/summary_templates","href":"/en/v2/api-reference/summary-templates/create-summary-template"},{"title":"Update summary template","openapi":"PUT /v2/api/summary_templates/{id}","href":"/en/v2/api-reference/summary-templates/update-summary-template"},{"title":"Delete summary template","openapi":"DELETE /v2/api/summary_templates/{id}","href":"/en/v2/api-reference/summary-templates/delete-summary-template"},{"title":"Set a number's default template","openapi":"PUT /v2/api/numbers/{number}/default_summary_template","href":"/en/v2/api-reference/summary-templates/set-number-default-summary-template"}]},{"group":"Users","pages":[{"title":"Overview","href":"/en/v2/api-reference/users/overview"},{"title":"Me","openapi":"GET /v2/api/me","href":"/en/v2/api-reference/users/me"},{"title":"List users","openapi":"GET /v2/api/users","href":"/en/v2/api-reference/users/list-users"},{"title":"Get user","openapi":"GET /v2/api/users/{id}","href":"/en/v2/api-reference/users/get-user"}]},{"group":"SMS","pages":[{"title":"Overview","href":"/en/v2/api-reference/sms/overview"},{"title":"Send SMS","openapi":"POST /v1/api/sms","href":"/en/v2/api-reference/sms/send-sms"},{"title":"Send SMS (France)","openapi":"POST /v1/api/sms#france","href":"/en/v2/api-reference/sms/send-sms-france"}]},{"group":"Analytics","pages":[{"title":"Overview","href":"/en/v2/api-reference/analytics/overview"},{"title":"Team metrics","openapi":"POST /v2/api/analytics/overview","href":"/en/v2/api-reference/analytics/team-summary"},{"title":"Outbound metrics","openapi":"POST /v2/api/analytics/outbound","href":"/en/v2/api-reference/analytics/outbound"}]},{"group":"Power Dialer","pages":[{"title":"Overview","href":"/en/v2/api-reference/dialing-queues/overview"},{"title":"List current queue numbers","openapi":"GET /v2/api/dialing-queues/current","href":"/en/v2/api-reference/dialing-queues/get-current"},{"title":"Upsert current queue","openapi":"PATCH /v2/api/dialing-queues/current","href":"/en/v2/api-reference/dialing-queues/update-current"},{"title":"Append numbers","openapi":"POST /v2/api/dialing-queues/current/numbers","href":"/en/v2/api-reference/dialing-queues/append-numbers"},{"title":"Clear queue numbers","openapi":"DELETE /v2/api/dialing-queues/current/numbers","href":"/en/v2/api-reference/dialing-queues/clear-numbers"},{"title":"Reset current queue","openapi":"POST /v2/api/dialing-queues/current","href":"/en/v2/api-reference/dialing-queues/reset-current"},{"title":"Reassign queue","openapi":"PATCH /v2/api/dialing-queues/{queue_id}/assignee","href":"/en/v2/api-reference/dialing-queues/assign-queue"}]},{"group":"Partner","pages":[{"title":"Overview","href":"/en/v2/api-reference/partner/overview"},{"title":"Get account price","openapi":"GET /v2/api/partner/accounts/price","href":"/en/v2/api-reference/partner/get-price"},{"title":"Create account","openapi":"POST /v2/api/partner/accounts","href":"/en/v2/api-reference/partner/create-account"},{"title":"Get account","openapi":"GET /v2/api/partner/accounts/{id}","href":"/en/v2/api-reference/partner/get-account"},{"title":"Deactivate account","openapi":"DELETE /v2/api/partner/accounts/{id}","href":"/en/v2/api-reference/partner/delete-account"},{"title":"Get number price","openapi":"GET /v2/api/partner/accounts/{id}/numbers/price","href":"/en/v2/api-reference/partner/get-number-price"},{"title":"Add number","openapi":"POST /v2/api/partner/accounts/{id}/numbers","href":"/en/v2/api-reference/partner/add-number"},{"title":"Add member","openapi":"POST /v2/api/partner/accounts/{id}/members","href":"/en/v2/api-reference/partner/add-member"},{"title":"List members","openapi":"GET /v2/api/partner/accounts/{id}/members","href":"/en/v2/api-reference/partner/list-members"},{"title":"Get prepaid credit","openapi":"GET /v2/api/partner/credit","href":"/en/v2/api-reference/partner/get-credit"},{"title":"Get eSIM offer","openapi":"GET /v2/api/partner/accounts/{account_id}/esims/offer","href":"/en/v2/api-reference/partner/get-esim-offer"},{"title":"Order eSIM","openapi":"POST /v2/api/partner/accounts/{account_id}/esims","href":"/en/v2/api-reference/partner/order-esim"},{"title":"Get eSIM","openapi":"GET /v2/api/partner/esims/{id}","href":"/en/v2/api-reference/partner/get-esim"},{"title":"Get eSIM activation code","openapi":"GET /v2/api/partner/esims/{id}/activation_code","href":"/en/v2/api-reference/partner/get-esim-activation-code"}]}]}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/v2/api-reference/phone-numbers/save-call-flow-draft"}]}]},"basePath":"","title":"Save call flow draft - Allo — Help Center","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}