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 response = await client.workflows.flows.verify('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', { invocationId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',});console.log(response.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
)
response = client.workflows.flows.verify(
flow_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
invocation_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
)
print(response.data)
Run a bound, deduplicated verification of this flow on exactly one device as a real run.
Unlike a normal trigger firing, verification:
runs a flow that is enabled OR disabled (an archived flow returns 404);
targets one device (deviceId, or the single bound device);
is idempotent per invocationId: a repeat returns the existing run (deduplicated: true, HTTP 200) instead of enqueuing another (HTTP 202);
never mutates flow health, lastTriggeredAt, or the repair loop.
Per-activation payload gate:
custom: validates the payload against the custom payload schema (422 on failure).
event: validates the payload against the event catalog schema and evaluates the trigger conditions; a failing gate returns 409 conditions_not_met with the dry-run report.
schedule: the payload is ignored.
POST
/
flows
/
{flowId}
/
verify
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 response = await client.workflows.flows.verify('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', { invocationId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',});console.log(response.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
)
response = client.workflows.flows.verify(
flow_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
invocation_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
)
print(response.data)
Client-supplied idempotency key. A repeat request for the same (flow, invocationId) returns the existing verification run (deduplicated: true, HTTP 200) instead of enqueuing another.
Device to run the verification on. Must be one the flow is bound to. Optional only when the flow is bound to exactly one device (that device is used); otherwise required.
{"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.4043","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":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"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/verify-a-flow","slug":"/api-reference/flows/verify-a-flow","pageMetadata":{"title":"Verify a flow","description":"Run a bound, deduplicated **verification** of this flow on exactly one device as a real run.\n\nUnlike a normal trigger firing, verification:\n- runs a flow that is `enabled` OR `disabled` (an archived flow returns 404);\n- targets one device (`deviceId`, or the single bound device);\n- is idempotent per `invocationId`: a repeat returns the existing run (`deduplicated: true`, HTTP 200) instead of enqueuing another (HTTP 202);\n- never mutates flow health, `lastTriggeredAt`, or the repair loop.\n\nPer-activation payload gate:\n- `custom`: validates the payload against the custom payload schema (422 on failure).\n- `event`: validates the payload against the event catalog schema and evaluates the trigger conditions; a failing gate returns 409 `conditions_not_met` with the dry-run report.\n- `schedule`: the payload is ignored.","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows/{flowId}/verify","href":"/api-reference/flows/verify-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 li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Run a bound, deduplicated \", _jsx(_components.strong, {\n children: \"verification\"\n }), \" of this flow on exactly one device as a real run.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Unlike a normal trigger firing, verification:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"runs a flow that is \", _jsx(_components.code, {\n children: \"enabled\"\n }), \" OR \", _jsx(_components.code, {\n children: \"disabled\"\n }), \" (an archived flow returns 404);\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"targets one device (\", _jsx(_components.code, {\n children: \"deviceId\"\n }), \", or the single bound device);\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"is idempotent per \", _jsx(_components.code, {\n children: \"invocationId\"\n }), \": a repeat returns the existing run (\", _jsx(_components.code, {\n children: \"deduplicated: true\"\n }), \", HTTP 200) instead of enqueuing another (HTTP 202);\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"never mutates flow health, \", _jsx(_components.code, {\n children: \"lastTriggeredAt\"\n }), \", or the repair loop.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Per-activation payload gate:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"custom\"\n }), \": validates the payload against the custom payload schema (422 on failure).\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"event\"\n }), \": validates the payload against the event catalog schema and evaluates the trigger conditions; a failing gate returns 409 \", _jsx(_components.code, {\n children: \"conditions_not_met\"\n }), \" with the dry-run report.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"schedule\"\n }), \": the payload is ignored.\"]\n }), \"\\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":"Verify a flow","description":"Run a bound, deduplicated **verification** of this flow on exactly one device as a real run.\n\nUnlike a normal trigger firing, verification:\n- runs a flow that is `enabled` OR `disabled` (an archived flow returns 404);\n- targets one device (`deviceId`, or the single bound device);\n- is idempotent per `invocationId`: a repeat returns the existing run (`deduplicated: true`, HTTP 200) instead of enqueuing another (HTTP 202);\n- never mutates flow health, `lastTriggeredAt`, or the repair loop.\n\nPer-activation payload gate:\n- `custom`: validates the payload against the custom payload schema (422 on failure).\n- `event`: validates the payload against the event catalog schema and evaluates the trigger conditions; a failing gate returns 409 `conditions_not_met` with the dry-run report.\n- `schedule`: the payload is ignored.","deprecated":null,"version":null,"openapi":"/api-reference/workflows.yaml post /flows/{flowId}/verify","href":"/api-reference/flows/verify-a-flow","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Run a bound, deduplicated **verification** of this flow on exactly one device as a real run.\n\nUnlike a normal trigger firing, verification:\n- runs a flow that is `enabled` OR `disabled` (an archived flow returns 404);\n- targets one device (`deviceId`, or the single bound device);\n- is idempotent per `invocationId`: a repeat returns the existing run (`deduplicated: true`, HTTP 200) instead of enqueuing another (HTTP 202);\n- never mutates flow health, `lastTriggeredAt`, or the repair loop.\n\nPer-activation payload gate:\n- `custom`: validates the payload against the custom payload schema (422 on failure).\n- `event`: validates the payload against the event catalog schema and evaluates the trigger conditions; a failing gate returns 409 `conditions_not_met` with the dry-run report.\n- `schedule`: the payload is ignored.","operationId":"verifyFlow","parameters":["adb02e9b-a003-4763-a9b4-f9eb30a2fad7"],"requestBody":"062875c0-b642-431a-84e3-ddf3d6d9cc78","responses":{"200":"93ecb14b-f62b-43f6-95fd-57687b69d24d","202":"4870e287-69f9-48a2-a06f-b7287c8d690b","404":"84704cff-9858-4c88-974a-0d3c2dc38ebd","409":"23d038fc-6458-407b-bac6-1a7470eb9921","422":"14409974-1b47-449d-adf8-565c949d3502","429":"b6eea80f-c91d-4cc3-9a90-5be936c89e23"},"summary":"Verify 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 response = await client.workflows.flows.verify('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n invocationId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n});\n\nconsole.log(response.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)\nresponse = client.workflows.flows.verify(\n flow_id=\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n invocation_id=\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\nprint(response.data)"}],"method":"post","type":"path","servers":["27c3817e-26b1-4d01-9f37-c148948b3db3"],"security":["89bb6dba-eb42-463d-b719-9dad8a841292"],"path":"/flows/{flowId}/verify","baseUrlOptions":["https://api.mobilerun.ai/v1"],"title":"Verify 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 response = await client.workflows.flows.verify('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n invocationId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n});\n\nconsole.log(response.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)\nresponse = client.workflows.flows.verify(\n flow_id=\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n invocation_id=\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\nprint(response.data)"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"adb02e9b-a003-4763-a9b4-f9eb30a2fad7":{"in":"path","name":"flowId","required":true,"schema":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"invocationId":{"description":"Client-supplied idempotency key. A repeat request for the same (flow, invocationId) returns the existing verification run (`deduplicated: true`, HTTP 200) instead of enqueuing another.","format":"uuid","type":"string","isRequired":true,"uniqueKey":"invocationId","typeLabel":"string\u003cuuid>"},"deviceId":{"description":"Device to run the verification on. Must be one the flow is bound to. Optional only when the flow is bound to exactly one device (that device is used); otherwise required.","format":"uuid","type":"string","uniqueKey":"deviceId","typeLabel":"string\u003cuuid>"},"payload":{"additionalProperties":{"oneOf":[{}],"uniqueKey":"payload.additionalProperties","typeLabel":"any"},"default":{},"type":"object","uniqueKey":"payload","typeLabel":"object"}},"required":["invocationId"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"invocationId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","deviceId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","payload":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"93ecb14b-f62b-43f6-95fd-57687b69d24d":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"deduplicated":{"description":"True when this run already existed for the (flow, invocationId) key (HTTP 200); false for a newly enqueued run (HTTP 202).","type":"boolean","isRequired":true,"uniqueKey":"data.deduplicated","typeLabel":"boolean"},"deviceId":{"oneOf":[{"description":"Device the verification runs on; null for a device-free verification (a 0-device flow whose actions are all device-free allowlisted).","format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.deviceId.oneOf.0","typeLabel":"string\u003cuuid>"},{"description":"Device the verification runs on; null for a device-free verification (a 0-device flow whose actions are all device-free allowlisted).","format":"uuid","type":"null","isRequired":true,"uniqueKey":"data.deviceId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.deviceId","typeLabel":"string\u003cuuid> | null"},"executionId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.executionId","typeLabel":"string\u003cuuid>"},"flowId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.flowId","typeLabel":"string\u003cuuid>"},"invocationId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.invocationId","typeLabel":"string\u003cuuid>"},"kind":{"enum":["verification"],"type":"string","isRequired":true,"uniqueKey":"data.kind","typeLabel":"enum\u003cstring>"},"status":{"enum":["pending","running","success","failed","cancelled","skipped","invalid"],"type":"string","isRequired":true,"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"triggerId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.triggerId","typeLabel":"string\u003cuuid>"}},"required":["executionId","invocationId","flowId","triggerId","deviceId","kind","status","deduplicated"],"type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["data"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"deduplicated":true,"deviceId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","executionId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","flowId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","invocationId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","kind":"verification","status":"pending","triggerId":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Verification run already existed (deduplicated)","exampleType":"generated"},"4870e287-69f9-48a2-a06f-b7287c8d690b":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"deduplicated":{"description":"True when this run already existed for the (flow, invocationId) key (HTTP 200); false for a newly enqueued run (HTTP 202).","type":"boolean","isRequired":true,"uniqueKey":"data.deduplicated","typeLabel":"boolean"},"deviceId":{"oneOf":[{"description":"Device the verification runs on; null for a device-free verification (a 0-device flow whose actions are all device-free allowlisted).","format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.deviceId.oneOf.0","typeLabel":"string\u003cuuid>"},{"description":"Device the verification runs on; null for a device-free verification (a 0-device flow whose actions are all device-free allowlisted).","format":"uuid","type":"null","isRequired":true,"uniqueKey":"data.deviceId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.deviceId","typeLabel":"string\u003cuuid> | null"},"executionId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.executionId","typeLabel":"string\u003cuuid>"},"flowId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.flowId","typeLabel":"string\u003cuuid>"},"invocationId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.invocationId","typeLabel":"string\u003cuuid>"},"kind":{"enum":["verification"],"type":"string","isRequired":true,"uniqueKey":"data.kind","typeLabel":"enum\u003cstring>"},"status":{"enum":["pending","running","success","failed","cancelled","skipped","invalid"],"type":"string","isRequired":true,"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"triggerId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.triggerId","typeLabel":"string\u003cuuid>"}},"required":["executionId","invocationId","flowId","triggerId","deviceId","kind","status","deduplicated"],"type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["data"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"deduplicated":true,"deviceId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","executionId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","flowId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","invocationId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","kind":"verification","status":"pending","triggerId":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}}}},"exampleType":"generated"}},"description":"Verification run enqueued","exampleType":"generated"},"84704cff-9858-4c88-974a-0d3c2dc38ebd":{"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"},"23d038fc-6458-407b-bac6-1a7470eb9921":{"content":{"application/json":{"schema":{"properties":{"code":{"enum":["conditions_not_met"],"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"details":{"properties":{"actions":{"items":{"properties":{"continueOnError":{"type":"boolean","isRequired":true,"uniqueKey":"details.actions.items.[INDEX].continueOnError","typeLabel":"boolean"},"flowActionId":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"details.actions.items.[INDEX].flowActionId","typeLabel":"string\u003cuuid>"},"key":{"type":"string","isRequired":true,"uniqueKey":"details.actions.items.[INDEX].key","typeLabel":"string"},"method":{"type":"string","isRequired":true,"uniqueKey":"details.actions.items.[INDEX].method","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"details.actions.items.[INDEX].name","typeLabel":"string"},"recordingEnabled":{"type":"boolean","isRequired":true,"uniqueKey":"details.actions.items.[INDEX].recordingEnabled","typeLabel":"boolean"},"service":{"enum":["tasks_api","devices_api","agents_api","webhooks","integrations_api"],"type":"string","isRequired":true,"uniqueKey":"details.actions.items.[INDEX].service","typeLabel":"enum\u003cstring>"},"children":{"description":"Nested child actions (loop/branch bodies), each the same shape as a ResolvedAction.","items":{"oneOf":[{}],"uniqueKey":"details.actions.items.[INDEX].children.items.[INDEX]","typeLabel":"any"},"type":"array","uniqueKey":"details.actions.items.[INDEX].children","typeLabel":"any[]"},"params":{"additionalProperties":{"oneOf":[{}],"uniqueKey":"details.actions.items.[INDEX].params.additionalProperties","typeLabel":"any"},"type":"object","uniqueKey":"details.actions.items.[INDEX].params","typeLabel":"object"}},"required":["key","name","service","method","continueOnError","flowActionId","recordingEnabled"],"type":"object","uniqueKey":"details.actions.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"details.actions","typeLabel":"object[]"},"activation":{"enum":["event","schedule","custom"],"type":"string","isRequired":true,"uniqueKey":"details.activation","typeLabel":"enum\u003cstring>"},"conditionsPassed":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"details.conditionsPassed.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"details.conditionsPassed.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"details.conditionsPassed","typeLabel":"boolean | null"},"gates":{"properties":{"blocked":{"type":"boolean","isRequired":true,"uniqueKey":"details.gates.blocked","typeLabel":"boolean"},"cooldownActive":{"oneOf":[{"type":"boolean","isRequired":true,"uniqueKey":"details.gates.cooldownActive.oneOf.0","typeLabel":"boolean"},{"type":"null","isRequired":true,"uniqueKey":"details.gates.cooldownActive.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"details.gates.cooldownActive","typeLabel":"boolean | null"},"deviceAttached":{"type":"boolean","isRequired":true,"uniqueKey":"details.gates.deviceAttached","typeLabel":"boolean"},"deviceIds":{"items":{"format":"uuid","type":"string","uniqueKey":"details.gates.deviceIds.items.[INDEX]","typeLabel":"string\u003cuuid>"},"type":"array","isRequired":true,"uniqueKey":"details.gates.deviceIds","typeLabel":"string\u003cuuid>[]"},"enabled":{"type":"boolean","isRequired":true,"uniqueKey":"details.gates.enabled","typeLabel":"boolean"}},"required":["enabled","deviceAttached","deviceIds","blocked","cooldownActive"],"type":"object","isRequired":true,"uniqueKey":"details.gates","typeLabel":"object"},"nextFireTime":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"details.nextFireTime.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"details.nextFireTime.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"details.nextFireTime","typeLabel":"string | null"},"rateLimited":{"type":"boolean","isRequired":true,"uniqueKey":"details.rateLimited","typeLabel":"boolean"},"validation":{"properties":{"valid":{"type":"boolean","isRequired":true,"uniqueKey":"details.validation.valid","typeLabel":"boolean"},"errors":{"items":{"properties":{"field":{"type":"string","isRequired":true,"uniqueKey":"details.validation.errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"details.validation.errors.items.[INDEX].message","typeLabel":"string"}},"required":["field","message"],"type":"object","uniqueKey":"details.validation.errors.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"details.validation.errors","typeLabel":"object[]"}},"required":["valid"],"type":"object","isRequired":true,"uniqueKey":"details.validation","typeLabel":"object"},"wouldFire":{"type":"boolean","isRequired":true,"uniqueKey":"details.wouldFire","typeLabel":"boolean"}},"required":["activation","validation","conditionsPassed","nextFireTime","rateLimited","gates","wouldFire","actions"],"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":"conditions_not_met","details":{"actions":[{"continueOnError":true,"flowActionId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","key":"\u003cstring>","method":"\u003cstring>","name":"\u003cstring>","recordingEnabled":true,"service":"tasks_api","children":["\u003cunknown>"],"params":{}}],"activation":"event","conditionsPassed":true,"gates":{"blocked":true,"cooldownActive":true,"deviceAttached":true,"deviceIds":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"enabled":true},"nextFireTime":"\u003cstring>","rateLimited":true,"validation":{"valid":true,"errors":[{"field":"\u003cstring>","message":"\u003cstring>"}]},"wouldFire":true},"message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Event trigger conditions (or payload) not met — the run was not enqueued","exampleType":"generated"},"14409974-1b47-449d-adf8-565c949d3502":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["code","message"],"properties":{"code":{"enum":["device_required","device_not_bound"],"type":"string","isRequired":true,"uniqueKey":"oneOf.0.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.message","typeLabel":"string"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.message","typeLabel":"string"},"details":{"items":{"properties":{"field":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.details.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.details.items.[INDEX].message","typeLabel":"string"}},"required":["field","message"],"type":"object","uniqueKey":"oneOf.1.details.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"oneOf.1.details","typeLabel":"object[]"}},"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"device_required","message":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Device not selectable (`device_required` / `device_not_bound`) or payload validation failed","exampleType":"generated"},"b6eea80f-c91d-4cc3-9a90-5be936c89e23":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"details":{"oneOf":[{}],"uniqueKey":"details","typeLabel":"any"},"retryAfterSeconds":{"type":"number","uniqueKey":"retryAfterSeconds","typeLabel":"number"},"traceId":{"type":"string","uniqueKey":"traceId","typeLabel":"string"}},"required":["code","message"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","message":"\u003cstring>","details":"\u003cunknown>","retryAfterSeconds":123,"traceId":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Too Many Requests","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":"Verify a flow - Mobilerun","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T14:38:21.820Z","originalFileLocation":"api-reference/flows/verify-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=\"Run a bound, deduplicated verification of this flow on exactly one device as a real run. Unlike a normal trigger firing, verification: - runs a flow that is enabled OR disabled (an archived flow returns 404); - targets one device (deviceId, or the single bound device); - is idempotent per invocationId: a repeat returns the existing run (deduplicated: true, HTTP 200) instead of enqueuing another (HTTP 202); - never mutates flow health, lastTriggeredAt, or the repair loop. Per-activation payload gate: - custom: validates the payload against the custom payload schema (422 on failure). - event: validates the payload against the event catalog schema and evaluates the trigger conditions; a failing gate returns 409 conditions_not_met with the dry-run report. - schedule: the payload is ignored.\">\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=\"Verify a flow - Mobilerun\">\u003cmeta data-mint-head property=\"og:description\" content=\"Run a bound, deduplicated verification of this flow on exactly one device as a real run. Unlike a normal trigger firing, verification: - runs a flow that is enabled OR disabled (an archived flow returns 404); - targets one device (deviceId, or the single bound device); - is idempotent per invocationId: a repeat returns the existing run (deduplicated: true, HTTP 200) instead of enqueuing another (HTTP 202); - never mutates flow health, lastTriggeredAt, or the repair loop. Per-activation payload gate: - custom: validates the payload against the custom payload schema (422 on failure). - event: validates the payload against the event catalog schema and evaluates the trigger conditions; a failing gate returns 409 conditions_not_met with the dry-run report. - schedule: the payload is ignored.\">\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/verify-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=Verify+a+flow\u0026amp;description=Run+a+bound%2C+deduplicated+**verification**+of+this+flow+on+exactly+one+device+as+a+real+run.%0A%0AUnlike+a+normal+trigger+firing%2C+verification%3A%0A-+runs+a+flow+that+i\u0026amp;theme=5028ffe8122f3fae85f0c05b\u0026amp;signature=7e3e7d69a08b63f5fc490afee14a96dfa580f6cea2e5fbaec6683e363c9c6b70\">\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=\"Verify a flow - Mobilerun\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Run a bound, deduplicated verification of this flow on exactly one device as a real run. Unlike a normal trigger firing, verification: - runs a flow that is enabled OR disabled (an archived flow returns 404); - targets one device (deviceId, or the single bound device); - is idempotent per invocationId: a repeat returns the existing run (deduplicated: true, HTTP 200) instead of enqueuing another (HTTP 202); - never mutates flow health, lastTriggeredAt, or the repair loop. Per-activation payload gate: - custom: validates the payload against the custom payload schema (422 on failure). - event: validates the payload against the event catalog schema and evaluates the trigger conditions; a failing gate returns 409 conditions_not_met with the dry-run report. - schedule: the payload is ignored.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mobilerun.mintlify.app/_mintlify/api/og/v2?division=Flows\u0026amp;title=Verify+a+flow\u0026amp;description=Run+a+bound%2C+deduplicated+**verification**+of+this+flow+on+exactly+one+device+as+a+real+run.%0A%0AUnlike+a+normal+trigger+firing%2C+verification%3A%0A-+runs+a+flow+that+i\u0026amp;theme=5028ffe8122f3fae85f0c05b\u0026amp;signature=7e3e7d69a08b63f5fc490afee14a96dfa580f6cea2e5fbaec6683e363c9c6b70\">\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/verify-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/verify-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/verify-a-flow#webpage\",\"url\":\"https://docs.mobilerun.ai/api-reference/flows/verify-a-flow\",\"name\":\"Verify a flow\",\"description\":\"Run a bound, deduplicated verification of this flow on exactly one device as a real run. Unlike a normal trigger firing, verification: - runs a flow that is enabled OR disabled (an archived flow returns 404); - targets one device (deviceId, or the single bound device); - is idempotent per invocationId: a repeat returns the existing run (deduplicated: true, HTTP 200) instead of enqueuing another (HTTP 202); - never mutates flow health, lastTriggeredAt, or the repair loop. Per-activation payload gate: - custom: validates the payload against the custom payload schema (422 on failure). - event: validates the payload against the event catalog schema and evaluates the trigger conditions; a failing gate returns 409 conditions_not_met with the dry-run report. - schedule: the payload is ignored.\",\"dateModified\":\"2026-10-23T14:38:21.820Z\",\"isPartOf\":{\"@id\":\"https://docs.mobilerun.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mobilerun.ai/api-reference/flows/verify-a-flow#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mobilerun.ai/api-reference/flows/verify-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\":\"Verify a flow\",\"item\":\"https://docs.mobilerun.ai/api-reference/flows/verify-a-flow\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.mobilerun.ai/api-reference/flows/verify-a-flow#apireference\",\"headline\":\"Verify a flow\",\"name\":\"Verify a flow\",\"description\":\"Run a bound, deduplicated verification of this flow on exactly one device as a real run. Unlike a normal trigger firing, verification: - runs a flow that is enabled OR disabled (an archived flow returns 404); - targets one device (deviceId, or the single bound device); - is idempotent per invocationId: a repeat returns the existing run (deduplicated: true, HTTP 200) instead of enqueuing another (HTTP 202); - never mutates flow health, lastTriggeredAt, or the repair loop. Per-activation payload gate: - custom: validates the payload against the custom payload schema (422 on failure). - event: validates the payload against the event catalog schema and evaluates the trigger conditions; a failing gate returns 409 conditions_not_met with the dry-run report. - schedule: the payload is ignored.\",\"url\":\"https://docs.mobilerun.ai/api-reference/flows/verify-a-flow\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mobilerun.ai/api-reference/flows/verify-a-flow#webpage\"},\"dateModified\":\"2026-10-23T14:38:21.820Z\",\"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","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","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","description":"Clear a flow's blocked status after fixing the underlying issue. Idempotent — safe to call on already-healthy flows.","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)","description":"Simulate an event against all configured flows. Returns which flows would match and what actions would run, without storing the event or enqueuing jobs.","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"}]}]}]}]},"basePath":"","title":"Verify a flow - Mobilerun","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js","Markdown-D7QRHV3m.js","clsx-D1Z-ELXV.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-lvhuD9Du.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CKfC4ywL.js"]}