import Mobilerun from '@mobilerun/sdk';const client = new Mobilerun({ apiKey: process.env['MOBILERUN_CLOUD_API_KEY'], // This is the default and can be omitted});const flow = await client.workflows.flows.create({ actions: [{ actionId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', position: 0 }], name: 'x', triggerId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',});console.log(flow.data);
import os
from mobilerun_sdk import Mobilerun
client = Mobilerun(
api_key=os.environ.get("MOBILERUN_CLOUD_API_KEY"), # This is the default and can be omitted
)
flow = client.workflows.flows.create(
actions=[{
"action_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"position": 0,
}],
name="x",
trigger_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
)
print(flow.data)
Create a flow that binds a trigger (triggerId) to an ordered list of actions, with at least one action required. Optional settings include target deviceIds, a cooldown (cooldownSeconds/cooldownScope), and webhook notifications on success or failure.
Supports an optional Idempotency-Key header (1-255 printable ASCII characters). Replays with the same key and an identical body return the original 201; a changed body under the same key returns 422 idempotency_key_reused.
POST
/
flows
JavaScript
import Mobilerun from '@mobilerun/sdk';const client = new Mobilerun({ apiKey: process.env['MOBILERUN_CLOUD_API_KEY'], // This is the default and can be omitted});const flow = await client.workflows.flows.create({ actions: [{ actionId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', position: 0 }], name: 'x', triggerId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',});console.log(flow.data);
import os
from mobilerun_sdk import Mobilerun
client = Mobilerun(
api_key=os.environ.get("MOBILERUN_CLOUD_API_KEY"), # This is the default and can be omitted
)
flow = client.workflows.flows.create(
actions=[{
"action_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"position": 0,
}],
name="x",
trigger_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
)
print(flow.data)
Idempotency-Key: 1-255 printable ASCII characters. Same key with a different request body is a 422 idempotency_key_reused. A retryable in-flight duplicate is a 409 with Retry-After and x-should-retry: true; a terminal duplicate is a 409 with x-should-retry: false. A replay returns the current resource state with Idempotent-Replayed: true.
{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"Mobilerun","colors":{"primary":"#4566D9","light":"#73A0FF","dark":"#4566D9"},"logo":{"light":"https://mintcdn.com/mobilerun/dj4o2PD1fQzmydpp/logo/dark.svg?fit=max\u0026auto=format\u0026n=dj4o2PD1fQzmydpp\u0026q=85\u0026s=94794bb3cda4a2b043ae10ae8c62de4d","dark":"https://mintcdn.com/mobilerun/dj4o2PD1fQzmydpp/logo/light.svg?fit=max\u0026auto=format\u0026n=dj4o2PD1fQzmydpp\u0026q=85\u0026s=48f04fef89a01ee7524aba18bc42e98c","href":"https://mobilerun.ai"},"favicon":{"light":"https://mintcdn.com/mobilerun/3WD57gGwKcqvkcxT/favicon.png?fit=max\u0026auto=format\u0026n=3WD57gGwKcqvkcxT\u0026q=85\u0026s=18b3ce5f77441e67930307555c63dce1","dark":"https://mintcdn.com/mobilerun/3WD57gGwKcqvkcxT/favicon-dark.png?fit=max\u0026auto=format\u0026n=3WD57gGwKcqvkcxT\u0026q=85\u0026s=5de0002e3ece75d65013ce83fb6d0c67"},"background":{"color":{"light":"#FBFAF7","dark":"#0F0D0B"}},"navbar":{"primary":{"type":"button","label":"Get Started","href":"https://cloud.mobilerun.ai"}},"footer":{"socials":{"github":"https://github.com/droidrun/droidrun","x":"https://x.com/droid_run","discord":"https://discord.gg/droidrun","website":"https://mobilerun.ai"}},"fonts":{"family":"Geist"},"icons":{"library":"lucide"},"integrations":{"posthog":{"apiKey":"phc_3BmiVdnS2Wvlm007eHGZLBPwRFCVVWzIZXbB0u3ZH1d","apiHost":"https://pineapple.droidrun.ai"}},"errors":{"404":{"redirect":false}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mobilerun","hasAudioNarration":false,"actualSubdomain":"mobilerun","customDomains":["docs.mobilerun.ai"],"gitSource":{"type":"github","owner":"droidrun","repo":"mobilerun-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae213e4661bff0c6e738d56","collectionId":"10530db3-e25a-4ea4-ba0a-67a6f99ff391","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae213e4661bff0c6e738d56"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae213e4661bff0c6e738d56","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Cloud","count":244},{"language":"default","tag":"API Reference","count":198},{"language":"default","tag":"Phones","count":92},{"language":"default","tag":"Guides","count":59},{"language":"default","tag":"Tools","count":49},{"language":"default","tag":"Workflows","count":42},{"language":"default","tag":"Tasks","count":26},{"language":"default","tag":"Framework","count":24},{"language":"default","tag":"Flows","count":20},{"language":"default","tag":"Webhooks","count":18}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":true},"customCss":[{"filePath":"custom.css","content":":root{--brand-background:#FBFAF7;--brand-foreground:#272320;--brand-card:#FFFDFA;--brand-popover:#FFFDFA;--brand-card-foreground:#272320;--brand-primary-foreground:#F7F8FC;--brand-secondary:#F3F0EA;--brand-secondary-foreground:#272320;--brand-muted:#F3F0EA;--brand-muted-foreground:#76706C;--brand-accent:#E0EBFF;--brand-accent-foreground:#273C81;--brand-destructive:#C74C41;--brand-destructive-foreground:#FDFCF9;--brand-border:#E6E4E0;--brand-input:#F5F3EF;--brand-sidebar:#F7F5F1;--brand-sidebar-foreground:#312D2A;--brand-sidebar-border:#E6E4E0;--brand-chart-1:#4566D9;--brand-chart-2:#00A0C5;--brand-chart-3:#9878E5;--brand-chart-4:#CD9130;--brand-chart-5:#009A7B}html.dark{--brand-background:#0F0D0B;--brand-foreground:#E6E4E1;--brand-card:#161311;--brand-popover:#1A1816;--brand-card-foreground:#E6E4E1;--brand-primary-foreground:#0E111B;--brand-secondary:#1D1A18;--brand-secondary-foreground:#E6E4E1;--brand-muted:#1A1816;--brand-muted-foreground:#9C9793;--brand-accent:#1C2746;--brand-accent-foreground:#BAD0FF;--brand-destructive:#C5372F;--brand-destructive-foreground:#F0EEEB;--brand-border:#24211F;--brand-input:#1F1C1A;--brand-sidebar:#14110F;--brand-sidebar-foreground:#D9D7D4;--brand-sidebar-border:#24211F;--brand-chart-1:#73A0FF;--brand-chart-2:#1EBDE3;--brand-chart-3:#AC8FF8;--brand-chart-4:#E4AC59;--brand-chart-5:#30B69A}#content-area{max-width:none!important}@media (min-width:1280px){#content-area,.docs-content,.mdx-content,.prose{max-width:900px!important}}@media (min-width:1536px){#content-area,.docs-content,.mdx-content,.prose{max-width:1000px!important}}@media (min-width:1920px){#content-area,.docs-content,.mdx-content,.prose{max-width:1200px!important}}@media (min-width:2560px){#content-area,.docs-content,.mdx-content,.prose{max-width:1600px!important}}@media (min-width:1280px){main{max-width:none!important}.container{max-width:1400px!important}}@media (min-width:1920px){.container{max-width:1600px!important}}@media (min-width:2560px){.container{max-width:1800px!important}}a[href=\"https://mobilerun.ai\"]{height:auto!important;max-height:none!important}img[src*=\"/logo/dark.svg\"],img[src*=\"/logo/light.svg\"]{height:2rem!important;max-height:none!important;width:auto!important}html[data-current-path^=\"/framework\"]{--primary:217 119 87;--primary-light:232 153 120;--primary-dark:181 90 62}html[data-current-path^=\"/framework\"] a[href=\"https://mobilerun.ai\"] img[src*=\"/logo/light.svg\"]{content:url(/framework/logo/light.svg)}html[data-current-path^=\"/framework\"] a[href=\"https://mobilerun.ai\"] img[src*=\"/logo/dark.svg\"]{content:url(/framework/logo/dark.svg)}html[data-current-path^=\"/framework\"] a[href=\"https://mobilerun.ai\"] img[src*=\"/logo/dark.svg\"],html[data-current-path^=\"/framework\"] a[href=\"https://mobilerun.ai\"] img[src*=\"/logo/light.svg\"]{height:1.7rem!important;transform:translate(2px,2px)}html[data-current-path^=\"/framework\"] a[href=\"https://mobilerun.ai\"]{display:inline-flex!important;align-items:center!important}img[src$=\"/logo/assistant-light.svg\"]{width:24px!important;height:24px!important;max-width:none;flex-shrink:0}.dark img[src$=\"/logo/assistant-light.svg\"]{content:url(/logo/assistant-dark.svg)}"}],"page":{"pagePath":"api-reference/flows/create-a-flow","slug":"/api-reference/flows/create-a-flow","pageMetadata":{"title":"Create a flow","description":"Create a flow that binds a trigger (`triggerId`) to an ordered list of actions, with at least one action required. Optional settings include target `deviceIds`, a cooldown (`cooldownSeconds`/`cooldownScope`), and webhook notifications on success or failure.\n\nSupports an optional `Idempotency-Key` header (1-255 printable ASCII characters). Replays with the same key and an identical body return the original 201; a changed body under the same key returns 422 `idempotency_key_reused`.","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows","href":"/api-reference/flows/create-a-flow","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 p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Create a flow that binds a trigger (\", _jsx(_components.code, {\n children: \"triggerId\"\n }), \") to an ordered list of actions, with at least one action required. Optional settings include target \", _jsx(_components.code, {\n children: \"deviceIds\"\n }), \", a cooldown (\", _jsx(_components.code, {\n children: \"cooldownSeconds\"\n }), \"/\", _jsx(_components.code, {\n children: \"cooldownScope\"\n }), \"), and webhook notifications on success or failure.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Supports an optional \", _jsx(_components.code, {\n children: \"Idempotency-Key\"\n }), \" header (1-255 printable ASCII characters). Replays with the same key and an identical body return the original 201; a changed body under the same key returns 422 \", _jsx(_components.code, {\n children: \"idempotency_key_reused\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\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":"Create a flow","description":"Create a flow that binds a trigger (`triggerId`) to an ordered list of actions, with at least one action required. Optional settings include target `deviceIds`, a cooldown (`cooldownSeconds`/`cooldownScope`), and webhook notifications on success or failure.\n\nSupports an optional `Idempotency-Key` header (1-255 printable ASCII characters). Replays with the same key and an identical body return the original 201; a changed body under the same key returns 422 `idempotency_key_reused`.","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows","href":"/api-reference/flows/create-a-flow","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Create a flow that binds a trigger (`triggerId`) to an ordered list of actions, with at least one action required. Optional settings include target `deviceIds`, a cooldown (`cooldownSeconds`/`cooldownScope`), and webhook notifications on success or failure.\n\nSupports an optional `Idempotency-Key` header (1-255 printable ASCII characters). Replays with the same key and an identical body return the original 201; a changed body under the same key returns 422 `idempotency_key_reused`.","operationId":"createFlow","parameters":["0137f7bd-cf74-47a4-b082-2c27d60d514b"],"requestBody":"a9ecf3f1-6290-450e-9885-c545f2607816","responses":{"201":"2c7fc453-ffad-4f42-b3cf-72e293fd8ff1","400":"67557c74-ca5f-41c3-9be3-77d89c75377f","404":"832d1200-2187-4b55-b678-cabbcbb6aad1","409":"cfa69758-9375-4c18-813c-434d0800a462"},"summary":"Create a flow","tags":["Flows"],"x-codeSamples":[{"lang":"JavaScript","source":"import Mobilerun from '@mobilerun/sdk';\n\nconst client = new Mobilerun({\n apiKey: process.env['MOBILERUN_CLOUD_API_KEY'], // This is the default and can be omitted\n});\n\nconst flow = await client.workflows.flows.create({\n actions: [{ actionId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', position: 0 }],\n name: 'x',\n triggerId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n});\n\nconsole.log(flow.data);"},{"lang":"Python","source":"import os\nfrom mobilerun_sdk import Mobilerun\n\nclient = Mobilerun(\n api_key=os.environ.get(\"MOBILERUN_CLOUD_API_KEY\"), # This is the default and can be omitted\n)\nflow = client.workflows.flows.create(\n actions=[{\n \"action_id\": \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n \"position\": 0,\n }],\n name=\"x\",\n trigger_id=\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\nprint(flow.data)"}],"method":"post","type":"path","servers":["27c3817e-26b1-4d01-9f37-c148948b3db3"],"security":["89bb6dba-eb42-463d-b719-9dad8a841292"],"path":"/flows","baseUrlOptions":["https://api.mobilerun.ai/v1"],"title":"Create a flow","codeSamples":[{"lang":"JavaScript","source":"import Mobilerun from '@mobilerun/sdk';\n\nconst client = new Mobilerun({\n apiKey: process.env['MOBILERUN_CLOUD_API_KEY'], // This is the default and can be omitted\n});\n\nconst flow = await client.workflows.flows.create({\n actions: [{ actionId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', position: 0 }],\n name: 'x',\n triggerId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n});\n\nconsole.log(flow.data);"},{"lang":"Python","source":"import os\nfrom mobilerun_sdk import Mobilerun\n\nclient = Mobilerun(\n api_key=os.environ.get(\"MOBILERUN_CLOUD_API_KEY\"), # This is the default and can be omitted\n)\nflow = client.workflows.flows.create(\n actions=[{\n \"action_id\": \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n \"position\": 0,\n }],\n name=\"x\",\n trigger_id=\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\nprint(flow.data)"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"0137f7bd-cf74-47a4-b082-2c27d60d514b":{"description":"Idempotency-Key: 1-255 printable ASCII characters. Same key with a different request body is a 422 idempotency_key_reused. A retryable in-flight duplicate is a 409 with Retry-After and x-should-retry: true; a terminal duplicate is a 409 with x-should-retry: false. A replay returns the current resource state with Idempotent-Replayed: true.","in":"header","name":"idempotency-key","required":false,"schema":{"description":"Idempotency-Key: 1-255 printable ASCII characters. Same key with a different request body is a 422 idempotency_key_reused. A retryable in-flight duplicate is a 409 with Retry-After and x-should-retry: true; a terminal duplicate is a 409 with x-should-retry: false. A replay returns the current resource state with Idempotent-Replayed: true.","example":"b3f6a9f0-6f1a-4e9a-9e7a-9c9b6b6a5a3f","maxLength":255,"minLength":1,"pattern":"^[\\x21-\\x7E]{1,255}$","type":"string","isRequired":false,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"actions":{"items":{"additionalProperties":false,"properties":{"actionId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"actions.items.[INDEX].actionId","typeLabel":"string\u003cuuid>"},"position":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"actions.items.[INDEX].position","typeLabel":"integer"},"children":{"items":{"additionalProperties":false,"properties":{"actionId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"actions.items.[INDEX].children.items.[INDEX].actionId","typeLabel":"string\u003cuuid>"},"position":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"actions.items.[INDEX].children.items.[INDEX].position","typeLabel":"integer"},"continueOnError":{"default":false,"type":"boolean","uniqueKey":"actions.items.[INDEX].children.items.[INDEX].continueOnError","typeLabel":"boolean"},"key":{"description":"Stable identifier used by template resolution v2+ to address this step as {{key.field}}. Omitted keys are derived from the step name whenever a flow is created. For template resolution v3, replacing an existing flow's full action tree requires every step to carry an explicit key — a missing key is rejected there, not derived, so a name change can never silently move a step's key.","pattern":"^[a-z_][a-z0-9_-]{0,63}$","type":"string","uniqueKey":"actions.items.[INDEX].children.items.[INDEX].key","typeLabel":"string"},"nameOverride":{"maxLength":256,"minLength":1,"type":"string","uniqueKey":"actions.items.[INDEX].children.items.[INDEX].nameOverride","typeLabel":"string"},"overrides":{"oneOf":[{"additionalProperties":false,"properties":{"params":{"additionalProperties":{"oneOf":[{}],"uniqueKey":"actions.items.[INDEX].children.items.[INDEX].overrides.oneOf.0.params.additionalProperties","typeLabel":"any"},"type":"object","uniqueKey":"actions.items.[INDEX].children.items.[INDEX].overrides.oneOf.0.params","typeLabel":"object"}},"type":"object","uniqueKey":"actions.items.[INDEX].children.items.[INDEX].overrides.oneOf.0","typeLabel":"object"},{"additionalProperties":false,"properties":{"params":{"additionalProperties":{"oneOf":[{}]},"type":"object"}},"type":"null","uniqueKey":"actions.items.[INDEX].children.items.[INDEX].overrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"actions.items.[INDEX].children.items.[INDEX].overrides","typeLabel":"object | null"},"recordingEnabled":{"default":false,"type":"boolean","uniqueKey":"actions.items.[INDEX].children.items.[INDEX].recordingEnabled","typeLabel":"boolean"}},"required":["actionId","position"],"type":"object","uniqueKey":"actions.items.[INDEX].children.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"actions.items.[INDEX].children","typeLabel":"object[]"},"continueOnError":{"default":false,"type":"boolean","uniqueKey":"actions.items.[INDEX].continueOnError","typeLabel":"boolean"},"key":{"description":"Stable identifier used by template resolution v2+ to address this step as {{key.field}}. Omitted keys are derived from the step name whenever a flow is created. For template resolution v3, replacing an existing flow's full action tree requires every step to carry an explicit key — a missing key is rejected there, not derived, so a name change can never silently move a step's key.","pattern":"^[a-z_][a-z0-9_-]{0,63}$","type":"string","uniqueKey":"actions.items.[INDEX].key","typeLabel":"string"},"nameOverride":{"maxLength":256,"minLength":1,"type":"string","uniqueKey":"actions.items.[INDEX].nameOverride","typeLabel":"string"},"overrides":{"oneOf":[{"additionalProperties":false,"properties":{"params":{"additionalProperties":{"oneOf":[{}],"uniqueKey":"actions.items.[INDEX].overrides.oneOf.0.params.additionalProperties","typeLabel":"any"},"type":"object","uniqueKey":"actions.items.[INDEX].overrides.oneOf.0.params","typeLabel":"object"}},"type":"object","uniqueKey":"actions.items.[INDEX].overrides.oneOf.0","typeLabel":"object"},{"additionalProperties":false,"properties":{"params":{"additionalProperties":{"oneOf":[{}]},"type":"object"}},"type":"null","uniqueKey":"actions.items.[INDEX].overrides.oneOf.1","typeLabel":"null"}],"uniqueKey":"actions.items.[INDEX].overrides","typeLabel":"object | null"},"recordingEnabled":{"default":false,"type":"boolean","uniqueKey":"actions.items.[INDEX].recordingEnabled","typeLabel":"boolean"}},"required":["actionId","position"],"type":"object","uniqueKey":"actions.items.[INDEX]","typeLabel":"object"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"actions","typeLabel":"object[]"},"name":{"maxLength":256,"minLength":1,"type":"string","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"triggerId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"triggerId","typeLabel":"string\u003cuuid>"},"cooldownScope":{"default":"flow","enum":["flow","device"],"type":"string","uniqueKey":"cooldownScope","typeLabel":"enum\u003cstring>"},"cooldownSeconds":{"oneOf":[{"minimum":0,"type":"integer","uniqueKey":"cooldownSeconds.oneOf.0","typeLabel":"integer"},{"minimum":0,"type":"null","uniqueKey":"cooldownSeconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"cooldownSeconds","typeLabel":"integer | null"},"delivery":{"additionalProperties":false,"properties":{"destination":{"enum":["mobilerun","one_drive","google_drive"],"type":"string","isRequired":true,"uniqueKey":"delivery.destination","typeLabel":"enum\u003cstring>"},"folder":{"description":"not allowed when destination is mobilerun","maxLength":1024,"minLength":1,"type":"string","uniqueKey":"delivery.folder","typeLabel":"string"},"recording":{"additionalProperties":false,"properties":{"filename":{"maxLength":255,"minLength":1,"type":"string","isRequired":true,"uniqueKey":"delivery.recording.filename","typeLabel":"string"}},"required":["filename"],"type":"object","uniqueKey":"delivery.recording","typeLabel":"object"},"screenshots":{"additionalProperties":false,"properties":{},"type":"object","uniqueKey":"delivery.screenshots","typeLabel":"object"}},"required":["destination"],"type":"object","uniqueKey":"delivery","typeLabel":"object"},"description":{"maxLength":2048,"type":"string","uniqueKey":"description","typeLabel":"string"},"deviceIds":{"default":[],"items":{"format":"uuid","type":"string","uniqueKey":"deviceIds.items.[INDEX]","typeLabel":"string\u003cuuid>"},"maxItems":256,"type":"array","uniqueKey":"deviceIds","typeLabel":"string\u003cuuid>[]"},"enabled":{"default":true,"type":"boolean","uniqueKey":"enabled","typeLabel":"boolean"},"healthMonitoringEnabled":{"default":true,"type":"boolean","uniqueKey":"healthMonitoringEnabled","typeLabel":"boolean"},"notifyOnFailure":{"default":false,"type":"boolean","uniqueKey":"notifyOnFailure","typeLabel":"boolean"},"notifyOnSuccess":{"default":false,"type":"boolean","uniqueKey":"notifyOnSuccess","typeLabel":"boolean"},"notifyWebhookId":{"oneOf":[{"format":"uuid","type":"string","uniqueKey":"notifyWebhookId.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","uniqueKey":"notifyWebhookId.oneOf.1","typeLabel":"null"}],"uniqueKey":"notifyWebhookId","typeLabel":"string\u003cuuid> | null"},"recordingEnabled":{"type":"boolean","uniqueKey":"recordingEnabled","typeLabel":"boolean"},"recordingPolicy":{"additionalProperties":false,"properties":{"mode":{"enum":["off","flow","selected_steps"],"type":"string","isRequired":true,"uniqueKey":"recordingPolicy.mode","typeLabel":"enum\u003cstring>"}},"required":["mode"],"type":"object","uniqueKey":"recordingPolicy","typeLabel":"object"},"selfHealingEnabled":{"type":"boolean","uniqueKey":"selfHealingEnabled","typeLabel":"boolean"},"selfHealingMaxAttempts":{"default":2,"maximum":5,"minimum":1,"type":"integer","uniqueKey":"selfHealingMaxAttempts","typeLabel":"integer"}},"required":["name","triggerId","actions"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"actions":[{"actionId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","position":1,"children":[{"actionId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","position":1,"continueOnError":false,"key":"\u003cstring>","nameOverride":"\u003cstring>","overrides":{"params":{}},"recordingEnabled":false}],"continueOnError":false,"key":"\u003cstring>","nameOverride":"\u003cstring>","overrides":{"params":{}},"recordingEnabled":false}],"name":"\u003cstring>","triggerId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","cooldownScope":"flow","cooldownSeconds":1,"description":"\u003cstring>","deviceIds":[],"enabled":true,"healthMonitoringEnabled":true,"notifyOnFailure":false,"notifyOnSuccess":false,"notifyWebhookId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","recordingEnabled":true,"selfHealingEnabled":true,"selfHealingMaxAttempts":2}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"2c7fc453-ffad-4f42-b3cf-72e293fd8ff1":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"agentId":{"oneOf":[{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.agentId.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","isRequired":true,"uniqueKey":"data.agentId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.agentId","typeLabel":"string\u003cuuid> | null"},"archivedAt":{"oneOf":[{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.archivedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","isRequired":true,"uniqueKey":"data.archivedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.archivedAt","typeLabel":"string\u003cdate-time> | null"},"blockedAt":{"oneOf":[{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.blockedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","isRequired":true,"uniqueKey":"data.blockedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.blockedAt","typeLabel":"string\u003cdate-time> | null"},"consecutiveFailures":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"data.consecutiveFailures","typeLabel":"integer"},"cooldownScope":{"enum":["flow","device"],"type":"string","isRequired":true,"uniqueKey":"data.cooldownScope","typeLabel":"enum\u003cstring>"},"cooldownSeconds":{"oneOf":[{"type":"integer","isRequired":true,"uniqueKey":"data.cooldownSeconds.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"data.cooldownSeconds.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.cooldownSeconds","typeLabel":"integer | null"},"createdAt":{"oneOf":[{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.createdAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","isRequired":true,"uniqueKey":"data.createdAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.createdAt","typeLabel":"string\u003cdate-time> | null"},"createdBy":{"oneOf":[{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.createdBy.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","isRequired":true,"uniqueKey":"data.createdBy.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.createdBy","typeLabel":"string\u003cuuid> | null"},"delivery":{"oneOf":[{"additionalProperties":false,"properties":{"destination":{"enum":["mobilerun","one_drive","google_drive"],"type":"string","isRequired":true,"uniqueKey":"data.delivery.oneOf.0.destination","typeLabel":"enum\u003cstring>"},"folder":{"description":"not allowed when destination is mobilerun","maxLength":1024,"minLength":1,"type":"string","uniqueKey":"data.delivery.oneOf.0.folder","typeLabel":"string"},"recording":{"additionalProperties":false,"properties":{"filename":{"maxLength":255,"minLength":1,"type":"string","isRequired":true,"uniqueKey":"data.delivery.oneOf.0.recording.filename","typeLabel":"string"}},"required":["filename"],"type":"object","uniqueKey":"data.delivery.oneOf.0.recording","typeLabel":"object"},"screenshots":{"additionalProperties":false,"properties":{},"type":"object","uniqueKey":"data.delivery.oneOf.0.screenshots","typeLabel":"object"}},"required":["destination"],"type":"object","isRequired":true,"uniqueKey":"data.delivery.oneOf.0","typeLabel":"object"},{"additionalProperties":false,"properties":{"destination":{"enum":["mobilerun","one_drive","google_drive"],"type":"string"},"folder":{"description":"not allowed when destination is mobilerun","maxLength":1024,"minLength":1,"type":"string"},"recording":{"additionalProperties":false,"properties":{"filename":{"maxLength":255,"minLength":1,"type":"string"}},"required":["filename"],"type":"object"},"screenshots":{"additionalProperties":false,"properties":{},"type":"object"}},"required":["destination"],"type":"null","isRequired":true,"uniqueKey":"data.delivery.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.delivery","typeLabel":"object | null"},"description":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.description.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.description","typeLabel":"string | null"},"deviceIds":{"items":{"format":"uuid","type":"string","uniqueKey":"data.deviceIds.items.[INDEX]","typeLabel":"string\u003cuuid>"},"type":"array","isRequired":true,"uniqueKey":"data.deviceIds","typeLabel":"string\u003cuuid>[]"},"enabled":{"description":"Compatibility projection of lifecycleStatus; true only when lifecycleStatus is enabled.","type":"boolean","isRequired":true,"uniqueKey":"data.enabled","typeLabel":"boolean"},"healthMonitoringEnabled":{"type":"boolean","isRequired":true,"uniqueKey":"data.healthMonitoringEnabled","typeLabel":"boolean"},"id":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"lastFailureAt":{"oneOf":[{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.lastFailureAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","isRequired":true,"uniqueKey":"data.lastFailureAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.lastFailureAt","typeLabel":"string\u003cdate-time> | null"},"lastFailureCode":{"oneOf":[{"enum":["device_not_found","permission_denied","client_error","transient","logic","invalid_config",null],"type":"string","isRequired":true,"uniqueKey":"data.lastFailureCode.oneOf.0","typeLabel":"enum\u003cstring>"},{"enum":["device_not_found","permission_denied","client_error","transient","logic","invalid_config",null],"type":"null","isRequired":true,"uniqueKey":"data.lastFailureCode.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.lastFailureCode","typeLabel":"enum\u003cstring> | null"},"lastTriggeredAt":{"oneOf":[{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.lastTriggeredAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","isRequired":true,"uniqueKey":"data.lastTriggeredAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.lastTriggeredAt","typeLabel":"string\u003cdate-time> | null"},"lifecycleStatus":{"enum":["enabled","disabled","archived"],"type":"string","isRequired":true,"uniqueKey":"data.lifecycleStatus","typeLabel":"enum\u003cstring>"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.name","typeLabel":"string"},"notifyOnFailure":{"type":"boolean","isRequired":true,"uniqueKey":"data.notifyOnFailure","typeLabel":"boolean"},"notifyOnSuccess":{"type":"boolean","isRequired":true,"uniqueKey":"data.notifyOnSuccess","typeLabel":"boolean"},"notifyWebhookId":{"oneOf":[{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.notifyWebhookId.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","isRequired":true,"uniqueKey":"data.notifyWebhookId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.notifyWebhookId","typeLabel":"string\u003cuuid> | null"},"ownerId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.ownerId","typeLabel":"string\u003cuuid>"},"recordingEnabled":{"deprecated":true,"description":"Deprecated: use recordingPolicy.mode (\"flow\" = recordingEnabled=true, \"off\" = recordingEnabled=false).","type":"boolean","isRequired":true,"uniqueKey":"data.recordingEnabled","typeLabel":"boolean"},"recordingPolicy":{"properties":{"mode":{"enum":["off","flow","selected_steps"],"type":"string","isRequired":true,"uniqueKey":"data.recordingPolicy.mode","typeLabel":"enum\u003cstring>"}},"required":["mode"],"type":"object","isRequired":true,"uniqueKey":"data.recordingPolicy","typeLabel":"object"},"selfHealingEnabled":{"type":"boolean","isRequired":true,"uniqueKey":"data.selfHealingEnabled","typeLabel":"boolean"},"selfHealingMaxAttempts":{"maximum":5,"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"data.selfHealingMaxAttempts","typeLabel":"integer"},"status":{"enum":["healthy","failing","blocked"],"type":"string","isRequired":true,"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"templateResolutionVersion":{"description":"Template-resolver semantics this flow runs under. 1 = legacy (missing/forbidden/null all resolve to ''). 2 = typed (missing/forbidden throw, a whole-token null stays JSON null). 3 = typed, key-based (steps are addressed as {{steps.\u003ckey>...}} instead of by name; trigger.payload is not available). Existing flows stay 1; new flows default to the current version.","maximum":3,"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"data.templateResolutionVersion","typeLabel":"integer"},"triggerId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.triggerId","typeLabel":"string\u003cuuid>"},"updatedAt":{"oneOf":[{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.updatedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","isRequired":true,"uniqueKey":"data.updatedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.updatedAt","typeLabel":"string\u003cdate-time> | null"},"userId":{"deprecated":true,"description":"Deprecated: use ownerId (tenancy) / createdBy (actor).","format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.userId","typeLabel":"string\u003cuuid>"}},"required":["id","userId","ownerId","agentId","createdBy","name","description","triggerId","enabled","lifecycleStatus","archivedAt","deviceIds","cooldownSeconds","cooldownScope","notifyWebhookId","notifyOnSuccess","notifyOnFailure","lastTriggeredAt","status","templateResolutionVersion","consecutiveFailures","lastFailureCode","lastFailureAt","blockedAt","healthMonitoringEnabled","selfHealingEnabled","selfHealingMaxAttempts","recordingEnabled","recordingPolicy","delivery","createdAt","updatedAt"],"type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["data"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"agentId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","archivedAt":"2023-11-07T05:31:56Z","blockedAt":"2023-11-07T05:31:56Z","consecutiveFailures":1,"cooldownScope":"flow","cooldownSeconds":123,"createdAt":"2023-11-07T05:31:56Z","createdBy":"3c90c3cc-0d44-4b50-8888-8dd25736052a","delivery":{"destination":"mobilerun","folder":"\u003cstring>","recording":{"filename":"\u003cstring>"},"screenshots":{}},"description":"\u003cstring>","deviceIds":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"enabled":true,"healthMonitoringEnabled":true,"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","lastFailureAt":"2023-11-07T05:31:56Z","lastFailureCode":"device_not_found","lastTriggeredAt":"2023-11-07T05:31:56Z","lifecycleStatus":"enabled","name":"\u003cstring>","notifyOnFailure":true,"notifyOnSuccess":true,"notifyWebhookId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","ownerId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","recordingEnabled":true,"recordingPolicy":{"mode":"off"},"selfHealingEnabled":true,"selfHealingMaxAttempts":3,"status":"healthy","templateResolutionVersion":2,"triggerId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","updatedAt":"2023-11-07T05:31:56Z","userId":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Flow created","exampleType":"generated"},"67557c74-ca5f-41c3-9be3-77d89c75377f":{"content":{"application/json":{"schema":{"properties":{"code":{"enum":["template_reference_invalid"],"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"details":{"items":{"properties":{"field":{"type":"string","isRequired":true,"uniqueKey":"details.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"details.items.[INDEX].message","typeLabel":"string"},"knownSteps":{"items":{"type":"string","uniqueKey":"details.items.[INDEX].knownSteps.items.[INDEX]","typeLabel":"string"},"maxItems":30,"type":"array","uniqueKey":"details.items.[INDEX].knownSteps","typeLabel":"string[]"},"reference":{"type":"string","uniqueKey":"details.items.[INDEX].reference","typeLabel":"string"}},"required":["field","message"],"type":"object","uniqueKey":"details.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"details","typeLabel":"object[]"},"message":{"enum":["Template reference validation failed"],"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"enum\u003cstring>"}},"required":["code","message","details"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"template_reference_invalid","details":[{"field":"\u003cstring>","message":"\u003cstring>","knownSteps":["\u003cstring>"],"reference":"\u003cstring>"}],"message":"Template reference validation failed"}}},"exampleType":"generated"}},"description":"Template reference validation failed","exampleType":"generated"},"832d1200-2187-4b55-b678-cabbcbb6aad1":{"content":{"application/json":{"schema":{"properties":{"code":{"enum":["flow_not_found"],"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["code","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"flow_not_found","message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Flow not found","exampleType":"generated"},"cfa69758-9375-4c18-813c-434d0800a462":{"content":{"application/json":{"schema":{"properties":{"code":{"enum":["routine_limit_reached"],"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"details":{"properties":{"agentId":{"oneOf":[{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"details.agentId.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","isRequired":true,"uniqueKey":"details.agentId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"details.agentId","typeLabel":"string\u003cuuid> | null"},"limit":{"minimum":1,"type":"integer","isRequired":true,"uniqueKey":"details.limit","typeLabel":"integer"},"used":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"details.used","typeLabel":"integer"}},"required":["limit","used","agentId"],"type":"object","isRequired":true,"uniqueKey":"details","typeLabel":"object"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["code","message","details"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"routine_limit_reached","details":{"agentId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","limit":2,"used":1},"message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"The target agent bucket has reached its routine limit","exampleType":"generated"}},"security":{"89bb6dba-eb42-463d-b719-9dad8a841292":{"bearerAuth":{"bearerFormat":"Opaque","description":"Bearer token via Authorization header","scheme":"bearer","type":"http","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"27c3817e-26b1-4d01-9f37-c148948b3db3":{"description":"Droidrun Cloud API","url":"https://api.mobilerun.ai/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"bearerFormat":"Opaque","description":"Bearer token via Authorization header","scheme":"bearer","type":"http","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer token via Authorization header","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/workflows.yaml"},"subdomain":"mobilerun","siteName":"Mobilerun","title":"Create a flow - Mobilerun","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T14:38:21.656Z","originalFileLocation":"api-reference/flows/create-a-flow.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create a flow that binds a trigger (triggerId) to an ordered list of actions, with at least one action required. Optional settings include target deviceIds, a cooldown (cooldownSeconds/cooldownScope), and webhook notifications on success or failure. Supports an optional Idempotency-Key header (1-255 printable ASCII characters). Replays with the same key and an identical body return the original 201; a changed body under the same key returns 422 idempotency_key_reused.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Mobilerun\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mobilerun/0rQTQmMhNsQvIVRn/_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/mobilerun/0rQTQmMhNsQvIVRn/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mobilerun/0rQTQmMhNsQvIVRn/_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/mobilerun/0rQTQmMhNsQvIVRn/_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/mobilerun/0rQTQmMhNsQvIVRn/_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/mobilerun/0rQTQmMhNsQvIVRn/_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/mobilerun/0rQTQmMhNsQvIVRn/_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/mobilerun/0rQTQmMhNsQvIVRn/_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/mobilerun/0rQTQmMhNsQvIVRn/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a flow - Mobilerun\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a flow that binds a trigger (triggerId) to an ordered list of actions, with at least one action required. Optional settings include target deviceIds, a cooldown (cooldownSeconds/cooldownScope), and webhook notifications on success or failure. Supports an optional Idempotency-Key header (1-255 printable ASCII characters). Replays with the same key and an identical body return the original 201; a changed body under the same key returns 422 idempotency_key_reused.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Mobilerun\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mobilerun.ai/api-reference/flows/create-a-flow\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mobilerun.mintlify.app/_mintlify/api/og/v2?division=Flows\u0026amp;title=Create+a+flow\u0026amp;description=Create+a+flow+that+binds+a+trigger+%28%60triggerId%60%29+to+an+ordered+list+of+actions%2C+with+at+least+one+action+required.+Optional+settings+include+target+%60deviceIds%60%2C\u0026amp;theme=5028ffe8122f3fae85f0c05b\u0026amp;signature=9e603481af7a2a3297499846b1f3d4fd497610df74fc47625cbbd25aa7fe6eeb\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create a flow - Mobilerun\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a flow that binds a trigger (triggerId) to an ordered list of actions, with at least one action required. Optional settings include target deviceIds, a cooldown (cooldownSeconds/cooldownScope), and webhook notifications on success or failure. Supports an optional Idempotency-Key header (1-255 printable ASCII characters). Replays with the same key and an identical body return the original 201; a changed body under the same key returns 422 idempotency_key_reused.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mobilerun.mintlify.app/_mintlify/api/og/v2?division=Flows\u0026amp;title=Create+a+flow\u0026amp;description=Create+a+flow+that+binds+a+trigger+%28%60triggerId%60%29+to+an+ordered+list+of+actions%2C+with+at+least+one+action+required.+Optional+settings+include+target+%60deviceIds%60%2C\u0026amp;theme=5028ffe8122f3fae85f0c05b\u0026amp;signature=9e603481af7a2a3297499846b1f3d4fd497610df74fc47625cbbd25aa7fe6eeb\">\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/mobilerun/0rQTQmMhNsQvIVRn/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Mobilerun\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4566D9\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mobilerun.ai/api-reference/flows/create-a-flow\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/flows/create-a-flow.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.mobilerun.ai/#organization\",\"name\":\"Mobilerun\",\"url\":\"https://docs.mobilerun.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mobilerun/dj4o2PD1fQzmydpp/logo/dark.svg?fit=max\u0026auto=format\u0026n=dj4o2PD1fQzmydpp\u0026q=85\u0026s=94794bb3cda4a2b043ae10ae8c62de4d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mobilerun.ai#website\",\"name\":\"Mobilerun\",\"url\":\"https://docs.mobilerun.ai\",\"publisher\":{\"@id\":\"https://docs.mobilerun.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mobilerun.ai/api-reference/flows/create-a-flow#webpage\",\"url\":\"https://docs.mobilerun.ai/api-reference/flows/create-a-flow\",\"name\":\"Create a flow\",\"description\":\"Create a flow that binds a trigger (triggerId) to an ordered list of actions, with at least one action required. Optional settings include target deviceIds, a cooldown (cooldownSeconds/cooldownScope), and webhook notifications on success or failure. Supports an optional Idempotency-Key header (1-255 printable ASCII characters). Replays with the same key and an identical body return the original 201; a changed body under the same key returns 422 idempotency_key_reused.\",\"dateModified\":\"2026-10-23T14:38:21.656Z\",\"isPartOf\":{\"@id\":\"https://docs.mobilerun.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mobilerun.ai/api-reference/flows/create-a-flow#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mobilerun.ai/api-reference/flows/create-a-flow#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Workflows\",\"item\":\"https://docs.mobilerun.ai/api-reference/triggers/list-triggers\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flows\",\"item\":\"https://docs.mobilerun.ai/api-reference/flows/list-flows\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a flow\",\"item\":\"https://docs.mobilerun.ai/api-reference/flows/create-a-flow\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.mobilerun.ai/api-reference/flows/create-a-flow#apireference\",\"headline\":\"Create a flow\",\"name\":\"Create a flow\",\"description\":\"Create a flow that binds a trigger (triggerId) to an ordered list of actions, with at least one action required. Optional settings include target deviceIds, a cooldown (cooldownSeconds/cooldownScope), and webhook notifications on success or failure. Supports an optional Idempotency-Key header (1-255 printable ASCII characters). Replays with the same key and an identical body return the original 201; a changed body under the same key returns 422 idempotency_key_reused.\",\"url\":\"https://docs.mobilerun.ai/api-reference/flows/create-a-flow\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mobilerun.ai/api-reference/flows/create-a-flow#webpage\"},\"dateModified\":\"2026-10-23T14:38:21.656Z\",\"publisher\":{\"@id\":\"https://docs.mobilerun.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mobilerun.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Mobilerun\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Mobilerun","nav":{"global":null,"dropdowns":[{"dropdown":"Cloud","icon":"cloud","color":{"light":"#4566D9","dark":"#73A0FF"},"tabs":[{"tab":"Guides","icon":"book","pages":[{"title":"Guides","href":"/quickstart"}]},{"tab":"Assistant","icon":"https://mintlify.s3.us-west-1.amazonaws.com/mobilerun/logo/assistant-light.svg","pages":[{"title":"Assistant","href":"/assistant/overview"}]},{"tab":"API Reference","icon":"code","groups":[{"group":"Phones","pages":[{"group":"Tools","pages":[{"group":"Apps","pages":[{"title":"List apps","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/apps","href":"/api-reference/apps/list-apps"},{"title":"Install app","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/apps","href":"/api-reference/apps/install-app"},{"title":"List app installs","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/apps/installs","href":"/api-reference/apps/list-app-installs"},{"title":"Open a deep link","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/apps/open-deep-link","href":"/api-reference/apps/open-a-deep-link"},{"title":"Start app","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml put /devices/{deviceId}/apps/{packageName}","href":"/api-reference/apps/start-app"},{"title":"Delete app","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml delete /devices/{deviceId}/apps/{packageName}","href":"/api-reference/apps/delete-app"},{"title":"Stop app","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml patch /devices/{deviceId}/apps/{packageName}","href":"/api-reference/apps/stop-app"},{"title":"Grant app permission","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml put /devices/{deviceId}/apps/{packageName}/permissions/{permission}","href":"/api-reference/apps/grant-app-permission"},{"title":"Revoke app permission","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml delete /devices/{deviceId}/apps/{packageName}/permissions/{permission}","href":"/api-reference/apps/revoke-app-permission"},{"title":"List packages","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/packages","href":"/api-reference/apps/list-packages"}]},{"group":"Browser","pages":[{"title":"Execute JavaScript in the device's Chrome browser (CDP)","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/browser/execute-script","href":"/api-reference/browser/execute-javascript-in-the-devices-chrome-browser-cdp"}]},{"group":"Recordings","pages":[{"title":"List device recordings","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/recordings","href":"/api-reference/recordings/list-device-recordings"},{"title":"Start a device recording","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/recordings","href":"/api-reference/recordings/start-a-device-recording"},{"title":"Get a device recording","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/recordings/{recordingId}","href":"/api-reference/recordings/get-a-device-recording"},{"title":"Stop a device recording","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/recordings/{recordingId}","href":"/api-reference/recordings/stop-a-device-recording"},{"title":"Delete a device recording","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml delete /devices/{deviceId}/recordings/{recordingId}","href":"/api-reference/recordings/delete-a-device-recording"},{"title":"List a device recording's saved screenshots","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/recordings/{recordingId}/screenshots","href":"/api-reference/recordings/list-a-device-recordings-saved-screenshots"},{"title":"Get a device recording trajectory","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/recordings/{recordingId}/trajectory","href":"/api-reference/recordings/get-a-device-recording-trajectory"},{"title":"Get a device recording video","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/recordings/{recordingId}/video","href":"/api-reference/recordings/get-a-device-recording-video"}]},{"group":"Files","pages":[{"title":"List files","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/files","href":"/api-reference/files/list-files"},{"title":"Upload file","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/files","href":"/api-reference/files/upload-file"},{"title":"Delete file","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml delete /devices/{deviceId}/files","href":"/api-reference/files/delete-file"},{"title":"Download file","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/files/download","href":"/api-reference/files/download-file"}]},{"group":"Navigation","pages":[{"title":"Perform a global action","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/global","href":"/api-reference/navigation/perform-a-global-action"},{"title":"Input key","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml put /devices/{deviceId}/keyboard","href":"/api-reference/navigation/input-key"},{"title":"Input text","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/keyboard","href":"/api-reference/navigation/input-text"},{"title":"Clear input","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml delete /devices/{deviceId}/keyboard","href":"/api-reference/navigation/clear-input"},{"title":"Take screenshot","deprecated":true,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/screenshot","href":"/api-reference/navigation/take-screenshot"},{"title":"Swipe","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/swipe","href":"/api-reference/navigation/swipe"},{"title":"Tap by coordinates","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/tap","href":"/api-reference/navigation/tap-by-coordinates"},{"title":"UI state","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/ui-state","href":"/api-reference/navigation/ui-state"}]},{"group":"Proxy","pages":[{"title":"Get proxy connection state","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/proxy","href":"/api-reference/proxy/get-proxy-connection-state"},{"title":"Connect proxy","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/proxy","href":"/api-reference/proxy/connect-proxy"},{"title":"Disconnect proxy","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml delete /devices/{deviceId}/proxy","href":"/api-reference/proxy/disconnect-proxy"}]},{"group":"Misc","pages":[{"title":"Get device clipboard","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/clipboard","href":"/api-reference/misc/get-device-clipboard"},{"title":"Set device clipboard","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/clipboard","href":"/api-reference/misc/set-device-clipboard"},{"title":"Device fingerprint snapshot","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/fingerprint","href":"/api-reference/misc/device-fingerprint-snapshot"},{"title":"Enable kiosk (lock-task) mode","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml put /devices/{deviceId}/kiosk","href":"/api-reference/misc/enable-kiosk-lock-task-mode"},{"title":"Disable kiosk (lock-task) mode","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml delete /devices/{deviceId}/kiosk","href":"/api-reference/misc/disable-kiosk-lock-task-mode"},{"title":"Get device language/locale","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/language","href":"/api-reference/misc/get-device-languagelocale"},{"title":"Set device language/locale","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/language","href":"/api-reference/misc/set-device-languagelocale"},{"title":"Get device location","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/location","href":"/api-reference/misc/get-device-location"},{"title":"Set device location","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/location","href":"/api-reference/misc/set-device-location"},{"title":"Reset the device location to default","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml delete /devices/{deviceId}/location","href":"/api-reference/misc/reset-the-device-location-to-default"},{"title":"Check if overlay is visible","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/overlay","href":"/api-reference/misc/check-if-overlay-is-visible"},{"title":"Set overlay visibility","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/overlay","href":"/api-reference/misc/set-overlay-visibility"},{"title":"Device time","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/time","href":"/api-reference/misc/device-time"},{"title":"Get device timezone","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml get /devices/{deviceId}/timezone","href":"/api-reference/misc/get-device-timezone"},{"title":"Set device timezone","deprecated":null,"version":null,"openapi":"/api-reference/phones/tools.yaml post /devices/{deviceId}/timezone","href":"/api-reference/misc/set-device-timezone"}]}]},{"group":"Devices","pages":[{"title":"List devices","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /devices","href":"/api-reference/devices/list-devices"},{"title":"Provision a new device","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml post /devices","href":"/api-reference/devices/provision-a-new-device"},{"title":"Count claimed devices","deprecated":true,"version":null,"openapi":"/api-reference/phones.yaml get /devices/count","href":"/api-reference/devices/count-claimed-devices"},{"title":"Summarize claimed devices","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /devices/summary","href":"/api-reference/devices/summarize-claimed-devices"},{"title":"Get device info","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /devices/{deviceId}","href":"/api-reference/devices/get-device-info"},{"title":"Terminate a device","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml delete /devices/{deviceId}","href":"/api-reference/devices/terminate-a-device"},{"title":"Get capabilities for a specific device","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /devices/{deviceId}/capabilities","href":"/api-reference/devices/get-capabilities-for-a-specific-device"},{"title":"Update device name","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml put /devices/{deviceId}/name","href":"/api-reference/devices/update-device-name"},{"title":"Reboot a device","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml post /devices/{deviceId}/reboot","href":"/api-reference/devices/reboot-a-device"},{"title":"Reset a device to a fresh state","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml post /devices/{deviceId}/reset","href":"/api-reference/devices/reset-a-device-to-a-fresh-state"},{"title":"Resume (unpark) a stopped device","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml post /devices/{deviceId}/resume","href":"/api-reference/devices/resume-unpark-a-stopped-device"},{"title":"Stop (park) a device","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml post /devices/{deviceId}/stop","href":"/api-reference/devices/stop-park-a-device"},{"title":"List tasks for a device","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /devices/{deviceId}/tasks","href":"/api-reference/devices/list-tasks-for-a-device"},{"title":"Wait for device to be ready","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /devices/{deviceId}/wait","href":"/api-reference/devices/wait-for-device-to-be-ready"}]},{"group":"Apps Cloud Storage","pages":[{"title":"List apps","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /apps","href":"/api-reference/apps-cloud-storage/list-apps"},{"title":"Create a signed upload URL for an app","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml post /apps/create-signed-upload-url","href":"/api-reference/apps-cloud-storage/create-a-signed-upload-url-for-an-app"},{"title":"Get the user’s storage usage","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /apps/storage-usage","href":"/api-reference/apps-cloud-storage/get-the-user’s-storage-usage"},{"title":"Get app by ID","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /apps/{id}","href":"/api-reference/apps-cloud-storage/get-app-by-id"},{"title":"Delete uploaded app","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml delete /apps/{id}","href":"/api-reference/apps-cloud-storage/delete-uploaded-app"},{"title":"Confirm successful app upload","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml post /apps/{id}/confirm-upload","href":"/api-reference/apps-cloud-storage/confirm-successful-app-upload"},{"title":"Mark app upload as failed","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml post /apps/{id}/mark-failed","href":"/api-reference/apps-cloud-storage/mark-app-upload-as-failed"},{"title":"List versions for an app","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /apps/{id}/versions","href":"/api-reference/apps-cloud-storage/list-versions-for-an-app"}]},{"group":"App Credentials","pages":[{"title":"List credentials","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /credentials","href":"/api-reference/app-credentials/list-credentials"},{"title":"List packages","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /credentials/packages","href":"/api-reference/app-credentials/list-packages"},{"title":"Initialize a new package/app","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml post /credentials/packages","href":"/api-reference/app-credentials/initialize-a-new-packageapp"},{"title":"List credentials for a specific package","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /credentials/packages/{packageName}","href":"/api-reference/app-credentials/list-credentials-for-a-specific-package"},{"title":"Create a credential","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml post /credentials/packages/{packageName}","href":"/api-reference/app-credentials/create-a-credential"},{"title":"Get a credential","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml get /credentials/packages/{packageName}/credentials/{credentialName}","href":"/api-reference/app-credentials/get-a-credential"},{"title":"Delete a credential and all its fields","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml delete /credentials/packages/{packageName}/credentials/{credentialName}","href":"/api-reference/app-credentials/delete-a-credential-and-all-its-fields"},{"title":"Add a credential field","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml post /credentials/packages/{packageName}/credentials/{credentialName}/fields","href":"/api-reference/app-credentials/add-a-credential-field"},{"title":"Delete a field from a credential","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml delete /credentials/packages/{packageName}/credentials/{credentialName}/fields/{fieldType}","href":"/api-reference/app-credentials/delete-a-field-from-a-credential"},{"title":"Update the value of a credential field","deprecated":null,"version":null,"openapi":"/api-reference/phones.yaml patch /credentials/packages/{packageName}/credentials/{credentialName}/fields/{fieldType}","href":"/api-reference/app-credentials/update-the-value-of-a-credential-field"}]}]},{"group":"Mobilerun Proxy","pages":[{"group":"Countries","pages":[{"title":"List available countries","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-proxy.yaml get /connect/countries","href":"/api-reference/countries/list-available-countries"}]},{"group":"Users","pages":[{"title":"List SOCKS5 users","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-proxy.yaml get /connect/users","href":"/api-reference/users/list-socks5-users"},{"title":"Create a SOCKS5 user","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-proxy.yaml post /connect/users","href":"/api-reference/users/create-a-socks5-user"},{"title":"Get a SOCKS5 user by ID","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-proxy.yaml get /connect/users/{id}","href":"/api-reference/users/get-a-socks5-user-by-id"},{"title":"Delete a SOCKS5 user","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-proxy.yaml delete /connect/users/{id}","href":"/api-reference/users/delete-a-socks5-user"},{"title":"Update a SOCKS5 user","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-proxy.yaml patch /connect/users/{id}","href":"/api-reference/users/update-a-socks5-user"},{"title":"List connections by SOCKS5 user","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-proxy.yaml get /connect/users/{id}/connections","href":"/api-reference/users/list-connections-by-socks5-user"}]}]},{"group":"Mobilerun Numbers","pages":[{"group":"Numbers","pages":[{"title":"List phone numbers","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml get /numbers/phones","href":"/api-reference/numbers/list-phone-numbers"},{"title":"Purchase a phone number","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml post /numbers/phones","href":"/api-reference/numbers/purchase-a-phone-number"},{"title":"Get included phone-number capacity for a country","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml get /numbers/phones/capacity","href":"/api-reference/numbers/get-included-phone-number-capacity-for-a-country"},{"title":"List dedicated-number countries","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml get /numbers/phones/countries","href":"/api-reference/numbers/list-dedicated-number-countries"},{"title":"Get phone number by id","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml get /numbers/phones/{id}","href":"/api-reference/numbers/get-phone-number-by-id"},{"title":"Cancel a phone-number purchase or an active rental","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml delete /numbers/phones/{id}","href":"/api-reference/numbers/cancel-a-phone-number-purchase-or-an-active-rental"},{"title":"Update a phone number's display label","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml patch /numbers/phones/{id}","href":"/api-reference/numbers/update-a-phone-numbers-display-label"},{"title":"List messages (inbox + outbox) on a number","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml get /numbers/phones/{id}/messages","href":"/api-reference/numbers/list-messages-inbox-+-outbox-on-a-number"}]},{"group":"Messages","pages":[{"title":"Send an SMS from a number","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml post /numbers/phones/{id}/messages","href":"/api-reference/messages/send-an-sms-from-a-number"},{"title":"List the caller's own SMS inbox/outbox messages","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml get /numbers/messages","href":"/api-reference/messages/list-the-callers-own-sms-inboxoutbox-messages"},{"title":"List the caller's own SMS conversations, one row per thread","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml get /numbers/messages/conversations","href":"/api-reference/messages/list-the-callers-own-sms-conversations-one-row-per-thread"},{"title":"Mark a conversation's inbound messages read up to a cursor","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml post /numbers/messages/conversations/read","href":"/api-reference/messages/mark-a-conversations-inbound-messages-read-up-to-a-cursor"},{"title":"Get one of the caller's SMS messages","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-numbers.yaml get /numbers/messages/{id}","href":"/api-reference/messages/get-one-of-the-callers-sms-messages"}]}]},{"group":"Mobilerun Mailbox","pages":[{"group":"Mailboxes","pages":[{"title":"List mailboxes","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml get /mailboxes","href":"/api-reference/mailboxes/list-mailboxes"},{"title":"Claim or rent a mailbox","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml post /mailboxes","href":"/api-reference/mailboxes/claim-or-rent-a-mailbox"},{"title":"Get included mailbox capacity","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml get /mailboxes/capacity","href":"/api-reference/mailboxes/get-included-mailbox-capacity"},{"title":"Connect a Gmail inbox","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml post /mailboxes/connections","href":"/api-reference/mailboxes/connect-a-gmail-inbox"},{"title":"Poll a Gmail inbox connection","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml get /mailboxes/connections/{connectionId}","href":"/api-reference/mailboxes/poll-a-gmail-inbox-connection"},{"title":"Get a mailbox","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml get /mailboxes/{mailboxId}","href":"/api-reference/mailboxes/get-a-mailbox"},{"title":"Cancel or archive a mailbox","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml delete /mailboxes/{mailboxId}","href":"/api-reference/mailboxes/cancel-or-archive-a-mailbox"},{"title":"Update a mailbox label","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml patch /mailboxes/{mailboxId}","href":"/api-reference/mailboxes/update-a-mailbox-label"},{"title":"Unlink a Gmail inbox","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml post /mailboxes/{mailboxId}/disconnect","href":"/api-reference/mailboxes/unlink-a-gmail-inbox"},{"title":"Get the best OTP candidate","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml get /mailboxes/{mailboxId}/otp","href":"/api-reference/mailboxes/get-the-best-otp-candidate"},{"title":"Restart rent on an archived mailbox","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml post /mailboxes/{mailboxId}/restart","href":"/api-reference/mailboxes/restart-rent-on-an-archived-mailbox"},{"title":"Undo a scheduled cancellation","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml post /mailboxes/{mailboxId}/uncancel","href":"/api-reference/mailboxes/undo-a-scheduled-cancellation"}]},{"group":"Mailbox Messages","pages":[{"title":"List mailbox messages","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml get /mailboxes/{mailboxId}/messages","href":"/api-reference/mailbox-messages/list-mailbox-messages"},{"title":"Get a mailbox message","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-mailbox.yaml get /mailboxes/{mailboxId}/messages/{messageId}","href":"/api-reference/mailbox-messages/get-a-mailbox-message"}]}]},{"group":"Mobilerun VA Chat","pages":[{"group":"Chat","pages":[{"title":"Abort the named session's in-flight chat turn","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml post /assistant/chat/abort","href":"/api-reference/chat/abort-the-named-sessions-in-flight-chat-turn"},{"title":"Send a single user message","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml post /assistant/chat/message","href":"/api-reference/chat/send-a-single-user-message"},{"title":"List messages for a chat session","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml get /assistant/chat/messages","href":"/api-reference/chat/list-messages-for-a-chat-session"},{"title":"Deliver a HITL approval/rejection to the user's active chat session","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml post /assistant/chat/permission","href":"/api-reference/chat/deliver-a-hitl-approvalrejection-to-the-users-active-chat-session"},{"title":"Deliver a question answer to the user's active chat session","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml post /assistant/chat/question","href":"/api-reference/chat/deliver-a-question-answer-to-the-users-active-chat-session"},{"title":"Dismiss an outstanding question without answering","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml post /assistant/chat/question/reject","href":"/api-reference/chat/dismiss-an-outstanding-question-without-answering"},{"title":"List the user's named chat or agent-workflow sessions","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml get /assistant/chat/sessions","href":"/api-reference/chat/list-the-users-named-chat-or-agent-workflow-sessions"},{"title":"Create a named chat session","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml post /assistant/chat/sessions","href":"/api-reference/chat/create-a-named-chat-session"},{"title":"Rename, archive, or pin a named chat session","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml patch /assistant/chat/sessions/{id}","href":"/api-reference/chat/rename-archive-or-pin-a-named-chat-session"},{"title":"Re-attach to the active turn stream","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml get /assistant/chat/stream","href":"/api-reference/chat/re-attach-to-the-active-turn-stream"}]},{"group":"Files","pages":[{"title":"List the user's ready files, optionally filtered by zone","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml get /agents/files","href":"/api-reference/files/list-the-users-ready-files-optionally-filtered-by-zone"},{"title":"Mint a presigned PUT URL for a user file upload","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml post /agents/files/upload-url","href":"/api-reference/files/mint-a-presigned-put-url-for-a-user-file-upload"},{"title":"Hard-delete a file","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml delete /agents/files/{fileId}","href":"/api-reference/files/hard-delete-a-file"},{"title":"Update file metadata (skills zone only)","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml patch /agents/files/{fileId}","href":"/api-reference/files/update-file-metadata-skills-zone-only"},{"title":"Confirm a file upload by server-side HEAD validation","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml post /agents/files/{fileId}/confirm","href":"/api-reference/files/confirm-a-file-upload-by-server-side-head-validation"},{"title":"Download an owned file","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml get /agents/files/{fileId}/download","href":"/api-reference/files/download-an-owned-file"},{"title":"Cancel a pending upload (transitions to expired, deletes the underlying object)","deprecated":null,"version":null,"openapi":"/api-reference/mobilerun-va-chat.yaml delete /agents/files/{fileId}/pending","href":"/api-reference/files/cancel-a-pending-upload-transitions-to-expired-deletes-the-underlying-object"}]}]},{"group":"Tasks","pages":[{"group":"Tasks","pages":[{"title":"List Tasks","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml get /tasks","href":"/api-reference/tasks/list-tasks"},{"title":"Run Task","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml post /tasks","href":"/api-reference/tasks/run-task"},{"title":"Run Streamed Task","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml post /tasks/stream","href":"/api-reference/tasks/run-streamed-task"},{"title":"Get Task","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml get /tasks/{task_id}","href":"/api-reference/tasks/get-task"},{"title":"Attach Task","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml get /tasks/{task_id}/attach","href":"/api-reference/tasks/attach-task"},{"title":"Stop Task","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml post /tasks/{task_id}/cancel","href":"/api-reference/tasks/stop-task"},{"title":"Send Message","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml post /tasks/{task_id}/message","href":"/api-reference/tasks/send-message"},{"title":"Get Task Screenshots","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml get /tasks/{task_id}/screenshots","href":"/api-reference/tasks/get-task-screenshots"},{"title":"Get Task Screenshot","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml get /tasks/{task_id}/screenshots/{index}","href":"/api-reference/tasks/get-task-screenshot"},{"title":"Get Task Status","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml get /tasks/{task_id}/status","href":"/api-reference/tasks/get-task-status"},{"title":"Get Task Trajectory","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml get /tasks/{task_id}/trajectory","href":"/api-reference/tasks/get-task-trajectory"},{"title":"Get Task Ui States","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml get /tasks/{task_id}/ui_states","href":"/api-reference/tasks/get-task-ui-states"},{"title":"Get Task Ui State","deprecated":null,"version":null,"openapi":"/api-reference/tasks.yaml get /tasks/{task_id}/ui_states/{index}","href":"/api-reference/tasks/get-task-ui-state"}]}]},{"group":"Workflows","pages":[{"group":"Triggers","pages":[{"title":"List triggers","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /triggers","href":"/api-reference/triggers/list-triggers"},{"title":"Create a trigger","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /triggers","href":"/api-reference/triggers/create-a-trigger"},{"title":"Get a trigger","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /triggers/{triggerId}","href":"/api-reference/triggers/get-a-trigger"},{"title":"Delete a trigger","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml delete /triggers/{triggerId}","href":"/api-reference/triggers/delete-a-trigger"},{"title":"Update a trigger","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml patch /triggers/{triggerId}","href":"/api-reference/triggers/update-a-trigger"},{"title":"Fire a custom trigger with payload","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /triggers/{triggerId}/fire","href":"/api-reference/triggers/fire-a-custom-trigger-with-payload"}]},{"group":"Actions","pages":[{"title":"List actions","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /actions","href":"/api-reference/actions/list-actions"},{"title":"Create an action","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /actions","href":"/api-reference/actions/create-an-action"},{"title":"List available services","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /actions/services","href":"/api-reference/actions/list-available-services"},{"title":"List allowed methods for a service","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /actions/services/{service}/methods","href":"/api-reference/actions/list-allowed-methods-for-a-service"},{"title":"Get an action","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /actions/{actionId}","href":"/api-reference/actions/get-an-action"},{"title":"Delete an action","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml delete /actions/{actionId}","href":"/api-reference/actions/delete-an-action"},{"title":"Update an action","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml patch /actions/{actionId}","href":"/api-reference/actions/update-an-action"}]},{"group":"Action Catalog","pages":[{"title":"List action catalog entries","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /action-catalog","href":"/api-reference/action-catalog/list-action-catalog-entries"},{"title":"Get a catalog entry","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /action-catalog/{catalogEntryId}","href":"/api-reference/action-catalog/get-a-catalog-entry"}]},{"group":"Flows","pages":[{"title":"List flows","description":"Return a paginated list of flows. Supports filtering by `agentId` (UUID or `unassigned`; omit for all buckets), `triggerId`, `enabled`, one or more health `status` values (healthy, failing, blocked), `mine` (flows created by the calling actor), `createdBy` (flows created by a given actor id — mutually exclusive with `mine`), plus free-text `search` and ordering.","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /flows","href":"/api-reference/flows/list-flows"},{"title":"Create a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows","href":"/api-reference/flows/create-a-flow"},{"title":"Get routine capacity","description":"Returns the environment routine limit and remaining capacity for this owner and agent bucket, counting enabled and disabled non-deleted flows. Omit agentId (or use unassigned) for the unassigned bucket. This is advisory; create and clone enforce admission under a bucket lock.","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /flows/capacity","href":"/api-reference/flows/get-routine-capacity"},{"title":"Get flow template context","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /flows/template-context","href":"/api-reference/flows/get-flow-template-context"},{"title":"Validate a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows/validate","href":"/api-reference/flows/validate-a-flow"},{"title":"Get a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /flows/{flowId}","href":"/api-reference/flows/get-a-flow"},{"title":"Archive a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml delete /flows/{flowId}","href":"/api-reference/flows/archive-a-flow"},{"title":"Update a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml patch /flows/{flowId}","href":"/api-reference/flows/update-a-flow"},{"title":"List actions for a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /flows/{flowId}/actions","href":"/api-reference/flows/list-actions-for-a-flow"},{"title":"Replace all actions for a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml put /flows/{flowId}/actions","href":"/api-reference/flows/replace-all-actions-for-a-flow"},{"title":"Add an action to a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows/{flowId}/actions","href":"/api-reference/flows/add-an-action-to-a-flow"},{"title":"Remove an action from a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml delete /flows/{flowId}/actions/{flowActionId}","href":"/api-reference/flows/remove-an-action-from-a-flow"},{"title":"Activate a verified flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows/{flowId}/activate","href":"/api-reference/flows/activate-a-verified-flow"},{"title":"Clone a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows/{flowId}/clone","href":"/api-reference/flows/clone-a-flow"},{"title":"Get flow delivery options","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /flows/{flowId}/delivery-options","href":"/api-reference/flows/get-flow-delivery-options"},{"title":"Dry-run a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows/{flowId}/dry-run","href":"/api-reference/flows/dry-run-a-flow"},{"title":"List self-healing repair episodes","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /flows/{flowId}/repairs","href":"/api-reference/flows/list-self-healing-repair-episodes"},{"title":"Run a flow now","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows/{flowId}/run","href":"/api-reference/flows/run-a-flow-now"},{"title":"Unblock a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows/{flowId}/unblock","href":"/api-reference/flows/unblock-a-flow"},{"title":"Verify a flow","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows/{flowId}/verify","href":"/api-reference/flows/verify-a-flow"}]},{"group":"Events","pages":[{"title":"Simulate event matching (dry run)","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /events/dry-run","href":"/api-reference/events/simulate-event-matching-dry-run"},{"title":"Ingest an event","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /events/ingest","href":"/api-reference/events/ingest-an-event"}]},{"group":"Executions","pages":[{"title":"List flow executions","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /executions","href":"/api-reference/executions/list-flow-executions"},{"title":"Get execution metrics","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /executions/metrics","href":"/api-reference/executions/get-execution-metrics"},{"title":"Get execution details","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /executions/{executionId}","href":"/api-reference/executions/get-execution-details"},{"title":"Abort a running or pending execution","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /executions/{executionId}/abort","href":"/api-reference/executions/abort-a-running-or-pending-execution"},{"title":"Redirect to a freshly signed screenshot URL","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml get /executions/{executionId}/screenshots/{screenshotId}","href":"/api-reference/executions/redirect-to-a-freshly-signed-screenshot-url"}]}]},{"group":"Webhooks","pages":[{"group":"Webhooks","pages":[{"title":"List your webhook subscriptions","deprecated":null,"version":null,"openapi":"/api-reference/webhooks.yaml get /webhooks","href":"/api-reference/webhooks/list-your-webhook-subscriptions"},{"title":"Register a webhook subscription","deprecated":null,"version":null,"openapi":"/api-reference/webhooks.yaml post /webhooks","href":"/api-reference/webhooks/register-a-webhook-subscription"},{"title":"Get a webhook subscription","deprecated":null,"version":null,"openapi":"/api-reference/webhooks.yaml get /webhooks/{id}","href":"/api-reference/webhooks/get-a-webhook-subscription"},{"title":"Delete a webhook subscription","deprecated":null,"version":null,"openapi":"/api-reference/webhooks.yaml delete /webhooks/{id}","href":"/api-reference/webhooks/delete-a-webhook-subscription"},{"title":"Update a webhook subscription","deprecated":null,"version":null,"openapi":"/api-reference/webhooks.yaml patch /webhooks/{id}","href":"/api-reference/webhooks/update-a-webhook-subscription"},{"title":"Rotate signing secret","deprecated":null,"version":null,"openapi":"/api-reference/webhooks.yaml post /webhooks/{id}/rotate-secret","href":"/api-reference/webhooks/rotate-signing-secret"},{"title":"Send a one-shot test delivery","deprecated":null,"version":null,"openapi":"/api-reference/webhooks.yaml post /webhooks/{id}/test","href":"/api-reference/webhooks/send-a-one-shot-test-delivery"}]},{"group":"Webhook Deliveries","pages":[{"title":"List deliveries across all your webhooks","deprecated":null,"version":null,"openapi":"/api-reference/webhooks.yaml get /webhooks/deliveries","href":"/api-reference/webhook-deliveries/list-deliveries-across-all-your-webhooks"},{"title":"Get delivery statistics","deprecated":null,"version":null,"openapi":"/api-reference/webhooks.yaml get /webhooks/deliveries/stats","href":"/api-reference/webhook-deliveries/get-delivery-statistics"},{"title":"List deliveries for a webhook","deprecated":null,"version":null,"openapi":"/api-reference/webhooks.yaml get /webhooks/{id}/deliveries","href":"/api-reference/webhook-deliveries/list-deliveries-for-a-webhook"},{"title":"Get a delivery with its attempts","deprecated":null,"version":null,"openapi":"/api-reference/webhooks.yaml get /webhooks/{id}/deliveries/{deliveryId}","href":"/api-reference/webhook-deliveries/get-a-delivery-with-its-attempts"}]}]}]}]},{"dropdown":"Framework","icon":"code","color":{"light":"#D97757","dark":"#D97757"},"tabs":[{"tab":"Guides","icon":"book","groups":[{"group":"Get started","icon":"rocket","pages":[{"sidebarTitle":"Framework overview","title":"Overview","href":"/framework/overview"},{"title":"Quickstart","href":"/framework/quickstart"},{"sidebarTitle":"Setup guides","title":"Overview","href":"/framework/guides/overview"},{"title":"Device Setup","href":"/framework/guides/device-setup"},{"title":"Quickstart with Docker","href":"/framework/guides/docker"}]},{"group":"Build an agent","icon":"bot","pages":[{"title":"CLI Usage","href":"/framework/guides/cli"},{"title":"Configuration","href":"/framework/sdk/configuration"},{"title":"Vision Mode","href":"/framework/features/vision"},{"title":"Structured Output","href":"/framework/features/structured-output"},{"title":"Credential Management","href":"/framework/features/credentials"}]},{"group":"Customize behavior","icon":"wrench","pages":[{"title":"App Instruction Cards","href":"/framework/features/app-cards"},{"title":"Custom Tools","href":"/framework/features/custom-tools"},{"title":"Custom Variables","href":"/framework/features/custom-variables"},{"title":"Prompt Templates","href":"/framework/concepts/prompts"}]},{"group":"Observe \u0026 debug","icon":"activity","pages":[{"title":"Tracing","href":"/framework/features/tracing"},{"title":"Event Streaming","href":"/framework/concepts/events-and-workflows"},{"title":"Telemetry","href":"/framework/features/telemetry"}]},{"group":"Architecture","icon":"layers","pages":[{"title":"Architecture","href":"/framework/concepts/architecture"},{"title":"Shared State","href":"/framework/concepts/shared-state"}]},{"group":"Python reference","icon":"book-open","pages":[{"sidebarTitle":"Reference overview","title":"Reference","href":"/framework/sdk/reference"},{"title":"MobileAgent","href":"/framework/sdk/droid-agent"},{"title":"AndroidDriver","href":"/framework/sdk/adb-tools"},{"title":"iOS Driver","href":"/framework/sdk/ios-tools"},{"title":"DeviceDriver Base Class","href":"/framework/sdk/base-tools"}]}]}]}]},"title":"Create a flow - Mobilerun","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}