Updates a workflow. Passing steps replaces the array wholesale. Edits apply to future runs only; runs already in flight continue against the definition they started with.
Optional key that makes the request idempotent. Retrying with the same key returns the original response instead of repeating the operation; keys expire after 24 hours. Any string up to 256 characters. See Idempotency.
Unique identifier for the API request. Include this when contacting support.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Deck Docs","description":"Deck is the infrastructure layer for accessing user-permissioned data across industries.","colors":{"primary":"#60917e","light":"#60917e","dark":"#60917e"},"logo":{"light":"https://mintcdn.com/decksoftwareinc/qU-Ph3TxWRaVaZ4z/logo/light.svg?fit=max\u0026auto=format\u0026n=qU-Ph3TxWRaVaZ4z\u0026q=85\u0026s=7219c0996a361a0efa1315710acaece8","dark":"https://mintcdn.com/decksoftwareinc/jwJI_GBuvjfYMken/logo/dark.svg?fit=max\u0026auto=format\u0026n=jwJI_GBuvjfYMken\u0026q=85\u0026s=e9bd389078aeea4f50927a177953c988"},"favicon":"https://mintcdn.com/decksoftwareinc/jwJI_GBuvjfYMken/favicon.png?fit=max\u0026auto=format\u0026n=jwJI_GBuvjfYMken\u0026q=85\u0026s=2346acf6ab834aa5c9464f3061102418","appearance":{"default":"dark","strict":true},"background":{},"navbar":{"primary":{"type":"button","label":"Console","href":"https://console.deck.co"}},"footer":{"socials":{"website":"https://deck.co","github":"https://github.com/buildwithdeck","linkedin":"https://www.linkedin.com/company/deck-platform"}},"fonts":{"heading":{"family":"Plain","weight":500},"body":{"family":"Plain","weight":400}},"integrations":{"ga4":{"measurementId":"G-7797442138"}},"contextual":{"options":["copy","view","chatgpt","claude","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"decksoftwareinc","hasAudioNarration":false,"actualSubdomain":"decksoftwareinc","customDomains":["docs.deck.co"],"gitSource":{"type":"github","owner":"buildwithdeck","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adbd354158f708b7a443742","collectionId":"7d2b213e-1a29-4f61-bb67-19765164898b","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adbd354158f708b7a443742"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae37cd920e64767276c8f15","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":65},{"language":"default","tag":"Guides","count":58},{"language":"default","tag":"Development","count":16},{"language":"default","tag":"Get Started","count":16},{"language":"default","tag":"Concepts","count":10},{"language":"default","tag":"Workflows","count":10},{"language":"default","tag":"API","count":9},{"language":"default","tag":"Platform","count":7},{"language":"default","tag":"Event Destinations","count":7},{"language":"default","tag":"Task Runs","count":7}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@font-face{font-family:'Plain';src:url(/fonts/PlainRegular.otf) format('opentype');font-weight:400;font-style:normal}@font-face{font-family:'Plain';src:url(/fonts/PlainMedium.otf) format('opentype');font-weight:500;font-style:normal}*,.accordion-group details.accordion,.mdx-content .frame img,.mdx-content [data-name=frame] img{border-radius:0!important}:root{--docs-sidebar-width:18rem;--docs-toc-width:16.5rem;--docs-api-code-width:34rem;--docs-content-max:48rem;--docs-frame-pad:1.5rem;--docs-sidebar-pad-x:1rem;--docs-sidebar-item-pad-x:0.75rem;--docs-nav-pad-x:calc(var(--docs-sidebar-pad-x) + var(--docs-sidebar-item-pad-x));--docs-border:rgba(246, 246, 246, 0.08);--docs-surface:rgba(246, 246, 246, 0.06);--docs-code-bg:rgba(246, 246, 246, 0.03);--docs-code-radius:8px;--docs-note-accent:#547DC5;--docs-note-text:#A2B9E2;--docs-warning-accent:#FDFAC3;--docs-tip-accent:#286650;--docs-tip-text:#7AAB98;--docs-check-accent:#60917E;--docs-info-text:#F6F6F6;--docs-page-end-gap:2.5rem}:root.dark{--tw-text-opacity:1;--text-primary:#F6F6F6;--text-secondary:#F6F6F6B3}.dark body{color:#f6f6f6}.dark .dark\\:text-gray-200,.dark .text-gray-200{color:#f6f6f6!important}.dark .dark\\:text-gray-400,.dark .dark\\:text-gray-500,.dark .text-gray-400,.dark .text-gray-500{color:rgba(246,246,246,.7)!important}.dark .dark\\:text-white,.dark .text-white{color:#f6f6f6!important}#navbar .max-w-8xl{max-width:none!important;width:100%;padding-left:var(--docs-nav-pad-x)!important;padding-right:var(--docs-nav-pad-x)!important;box-sizing:border-box}#navbar .h-12,#navbar .h-16{padding-left:0!important;padding-right:0!important;margin-left:0!important;margin-right:0!important}#navbar .ml-auto.justify-end.space-x-4{column-gap:0!important;row-gap:0!important;gap:0!important}#navbar .ml-auto.justify-end.space-x-4>*{margin-left:0!important;margin-right:0!important;margin-inline:0!important}#navbar .ml-auto.justify-end>:not(nav){display:none!important}#navbar{border-bottom:1px solid var(--docs-border)!important}#navbar .h-12,#navbar .h-12 *,#navbar .h-16,#navbar .h-16 *,#navbar-transition{border-bottom:none!important;border-bottom-width:0!important;box-shadow:none!important}.nav-logo{height:18px!important;width:auto!important}#search-bar-entry,#topbar-cta-button a,[data-component-part=products-selector-trigger],[data-component-part=version-select-trigger],html.dark nav[aria-label=\"Mobile menu\"] a,html.dark nav[aria-label=\"Mobile menu\"] button{border-radius:6px!important}#search-bar-entry{width:20rem!important;max-width:20rem!important;height:2.25rem!important;padding-right:.3rem!important;border:0!important;box-shadow:none!important;outline:0!important;--tw-ring-shadow:0 0 #0000;--tw-ring-offset-shadow:0 0 #0000;background:rgba(246,246,246,.06)!important;filter:none!important}#search-bar-entry:hover{background:rgba(246,246,246,.09)!important;box-shadow:none!important}#search-bar-entry>span.flex-none{border-radius:4px!important;background:rgba(246,246,246,.08);padding:.15rem .35rem;font-weight:500;letter-spacing:.02em;color:rgba(246,246,246,.55)}#topbar-cta-button a{padding:.4rem .7rem .4rem .85rem!important}#topbar-cta-button a>span.absolute{background:#60917e!important;border-radius:6px!important}#topbar-cta-button a:hover>span.absolute{opacity:.88!important}#topbar-cta-button .text-white,#topbar-cta-button svg{color:#f6f6f6!important}#topbar-cta-button a .z-10{gap:.35rem!important}#topbar-cta-button svg{display:block!important;width:.7rem!important;height:.7rem!important;stroke:currentColor!important}#table-of-contents h2 svg,#topbar-cta-button a .z-10::after{display:none!important}div:has(>#sidebar){max-width:none!important;width:100%!important;margin-inline:0!important;padding-inline:0!important}#sidebar{position:sticky!important;left:0;flex-shrink:0!important;width:var(--docs-sidebar-width)!important;margin:0!important;padding:0!important;box-sizing:border-box;border-right-color:var(--docs-border)!important}#mobile-nav,#sidebar{border-right:1px solid var(--docs-border)!important}#footer,footer#footer{margin-top:var(--docs-page-end-gap)!important;padding-top:var(--docs-page-end-gap)!important;padding-bottom:var(--docs-page-end-gap)!important;border-top:1px solid var(--docs-border)!important;border-top-color:var(--docs-border)!important}#content-area>.invisible.sticky,#content-area>[aria-hidden=true].sticky{display:none!important;height:0!important;margin:0!important;padding:0!important;overflow:hidden!important}#sidebar-content{padding:.25rem var(--docs-sidebar-pad-x) 1.5rem;box-sizing:border-box}#sidebar-content .base-ui-disable-scrollbar{padding-right:.25rem!important}#mobile-nav .sidebar-group a,#mobile-nav .sidebar-group button,#sidebar a,#sidebar button{border-radius:4px!important;padding-right:var(--docs-sidebar-item-pad-x)!important;min-width:0;overflow:visible;white-space:nowrap}#mobile-nav .sidebar-group a span.break-words,#mobile-nav .sidebar-group button span.break-words,#sidebar a span.break-words,#sidebar button span.break-words{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-group-header{padding-left:var(--docs-sidebar-item-pad-x)!important}@media (max-width:1023px){#navbar .max-w-8xl{padding-left:1rem!important;padding-right:1rem!important}#navbar button.h-14.lg\\:hidden{padding-left:0!important;padding-right:0!important}#navbar .ml-auto.justify-end.space-x-4,#topbar-cta-button{display:none!important}#navbar .flex.lg\\:hidden.items-center,#navbar button[aria-label=\"More actions\"]{display:flex!important}}#navbar button[aria-label=\"More actions\"] svg,#search-bar-entry-mobile svg{background:#f6f6f6!important}#navbar button[aria-label=\"More actions\"]:hover svg,#search-bar-entry-mobile:hover svg{background:rgba(246,246,246,.7)!important}#mobile-nav [data-component-part=products-selector-trigger],#mobile-nav [data-component-part=version-select-trigger],#mobile-nav button.group\\/trigger{border-radius:6px!important;background:var(--docs-surface)!important;border-color:var(--docs-border)!important}#mobile-nav .sidebar-group{padding-left:.75rem}#mobile-nav [aria-label=\"Close navigation\"]{border-radius:50%!important}html.dark :has(>nav[aria-label=\"Mobile menu\"]){border-radius:8px!important;border:1px solid var(--docs-border)!important;background:#0d100f!important}#content-container,div:has(>#sidebar)>#content-container{flex:1 1 auto!important;min-width:0!important;width:auto!important;max-width:none!important}#content-container>div.flex.flex-row-reverse{display:flex!important;justify-content:flex-start!important;align-items:flex-start!important;width:100%!important;max-width:none!important;gap:0!important;padding-inline:0;box-sizing:border-box}#content-container:has(#table-of-contents) #content-side-layout{position:sticky!important;flex:0 0 var(--docs-toc-width)!important;width:var(--docs-toc-width)!important;max-width:var(--docs-toc-width)!important;margin:0!important;height:calc(100vh - 9.5rem)!important}#table-of-contents-layout{width:var(--docs-toc-width)!important;max-width:var(--docs-toc-width)!important;padding-left:1rem!important;padding-right:var(--docs-nav-pad-x)!important;box-sizing:border-box}#content-area{flex:1 1 auto!important;width:auto!important;min-width:0!important;max-width:none!important;margin:0!important;padding-left:var(--docs-frame-pad)!important;padding-right:var(--docs-frame-pad)!important;display:flex!important;flex-direction:column!important;align-items:center!important;box-sizing:border-box}#content-area>#content,#content-area>#footer,#content-area>#header,#content-area>#pagination,#content-area>.feedback-toolbar,#content-area>.mdx-content,#content-area>footer,html[data-page-mode=wide] #content-area>#content,html[data-page-mode=wide] #content-area>#footer,html[data-page-mode=wide] #content-area>#header,html[data-page-mode=wide] #content-area>#pagination,html[data-page-mode=wide] #content-area>.feedback-toolbar,html[data-page-mode=wide] #content-area>.mdx-content,html[data-page-mode=wide] #content-area>footer{width:100%;max-width:var(--docs-content-max)}#content-container:has(#api-playground-2-operation-page)>div.flex.flex-row-reverse{gap:0!important;padding-right:var(--docs-nav-pad-x);box-sizing:border-box}#content-container:has(#api-playground-2-operation-page) #content-side-layout{flex:0 0 var(--docs-api-code-width)!important;width:var(--docs-api-code-width)!important;max-width:var(--docs-api-code-width)!important;margin:0!important;height:calc(100vh - 9.5rem)!important;padding:0!important}#content-container:has(#api-playground-2-operation-page) #content-side-layout>div{width:100%!important;max-width:none!important}#content-container:has(#api-playground-2-operation-page) #content-area{flex:1 1 auto!important;width:auto!important;max-width:none!important;margin:0!important;padding-left:2.5rem!important;padding-right:2.5rem!important;display:flex!important;flex-direction:column!important;align-items:stretch!important}#content-container:has(#api-playground-2-operation-page) #content-area>#api-playground-2-operation-page,#content-container:has(#api-playground-2-operation-page) #content-area>#footer,#content-container:has(#api-playground-2-operation-page) #content-area>#header,#content-container:has(#api-playground-2-operation-page) #content-area>#pagination,#content-container:has(#api-playground-2-operation-page) #content-area>footer{width:100%;max-width:none!important}#header .eyebrow{color:rgba(246,246,246,.4)!important;font-weight:400!important;font-size:.8125rem!important;letter-spacing:0}#page-context-menu{gap:.35rem}@media (max-width:1023px){#page-context-menu.ml-auto{display:none!important}#page-context-menu.mt-3{display:flex!important;margin-left:0!important;justify-content:flex-start!important}}#page-context-menu button{background:rgba(246,246,246,.06)!important}#page-context-menu button:hover{background:rgba(246,246,246,.1)!important}#pagination,.feedback-toolbar{margin-bottom:0!important;padding-bottom:0!important}.feedback-toolbar{margin-top:var(--docs-page-end-gap);padding-top:var(--docs-page-end-gap)!important;border-top:1px solid var(--docs-border)!important;border-top-color:var(--docs-border)!important;gap:1rem!important}.feedback-toolbar>div{gap:.75rem!important}#pagination{margin-top:var(--docs-page-end-gap)!important;padding-top:0!important}#table-of-contents h2 button,.feedback-toolbar p{color:rgba(246,246,246,.4)!important;font-size:.8125rem!important;font-weight:400!important;letter-spacing:0}#feedback-thumbs-down,#feedback-thumbs-up,#page-context-menu button{border:0!important;box-shadow:none!important;outline:0!important;--tw-ring-shadow:0 0 #0000;border-radius:6px!important;color:rgba(246,246,246,.65)!important}#feedback-thumbs-down,#feedback-thumbs-up{background:var(--docs-surface)!important;padding:.4rem .75rem!important;gap:.45rem!important}#feedback-thumbs-down:hover,#feedback-thumbs-up:hover{background:rgba(246,246,246,.1)!important;color:#f6f6f6!important}#feedback-thumbs-down.border,#feedback-thumbs-up.border{background:rgba(96,145,126,.16)!important;color:#7aab98!important}#feedback-form,#feedback-form-cancel,#feedback-form-input,#feedback-form-submit{border-radius:6px!important}#feedback-form-input{background:var(--docs-surface)!important;border:1px solid var(--docs-border)!important;color:#f6f6f6!important}#feedback-form-submit{background:#60917e!important;color:#f6f6f6!important;border:0!important}#table-of-contents h2{margin:0 0 .75rem!important}#table-of-contents h2 button{cursor:default}#table-of-contents-content.toc{position:relative;margin:0!important;padding:0 0 0 .875rem!important;border-left:1px solid var(--docs-border)!important;list-style:none;min-width:0;overflow:hidden}#table-of-contents-content.toc::before{content:'';position:absolute;top:0;left:-1px;width:2px;height:var(--toc-indicator-h, 0px);background:#f6f6f6;border-radius:1px;pointer-events:none;opacity:var(--toc-indicator-opacity, 0);transform:translateY(var(--toc-indicator-y, 0px));will-change:transform,height}#table-of-contents-content.toc.is-ready::before{transition:transform 220ms cubic-bezier(.645,.045,.355,1),height 220ms cubic-bezier(.645,.045,.355,1),opacity 150ms ease}#table-of-contents .toc-item,#table-of-contents-content.toc>li{margin-top:0!important;min-width:0}#table-of-contents .toc-item ul{margin:0!important;padding:0!important;list-style:none!important;border:0!important}#table-of-contents .toc-item>a{color:rgba(246,246,246,.38)!important;text-shadow:none!important;font-weight:400!important;font-size:.875rem;line-height:1.35;padding-top:.3rem!important;padding-bottom:.3rem!important;padding-left:.2rem!important;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap!important;max-width:100%;word-break:normal!important;overflow-wrap:normal!important;hyphens:none!important;transition:color 150ms ease}#table-of-contents .toc-item[data-depth=\"1\"]>a{padding-left:1.15rem!important}#table-of-contents .toc-item[data-depth=\"2\"]>a{padding-left:2.1rem!important}#table-of-contents .toc-item[data-depth=\"3\"]>a{padding-left:3.05rem!important}#table-of-contents .toc-item[data-depth=\"4\"]>a{padding-left:4rem!important}#table-of-contents .toc-item>a:hover{color:rgba(246,246,246,.72)!important}#table-of-contents .toc-item.is-current>a{color:#f6f6f6!important}@media (prefers-reduced-motion:reduce){#table-of-contents .toc-item a,#table-of-contents-content.toc.is-ready::before{transition:none}}html.dark .code-block.code-block,html.dark .code-group{border-radius:var(--docs-code-radius)!important;border-color:var(--docs-border)!important;overflow:hidden}html.dark .code-block.code-block{--shiki-dark-bg:var(--docs-code-bg);border:1px solid var(--docs-border)!important;background:0 0!important;background-image:none!important;box-shadow:none!important;outline:0!important}html.dark .code-block .code-block-background,html.dark .code-block [data-component-part=code-block-root]{--shiki-dark-bg:var(--docs-code-bg)!important;background:var(--docs-code-bg)!important;background-color:var(--docs-code-bg)!important;background-image:none!important;box-shadow:none!important;border:0!important}html.dark .code-block .shiki,html.dark .code-block pre.shiki{--shiki-dark-bg:transparent!important;background:0 0!important;background-color:transparent!important}.code-block [data-component-part=code-block-header]{border-radius:0!important;background:0 0!important;border:0!important}html.dark .code-block [data-fade-overlay]{display:none!important;background:0 0!important;opacity:0!important;width:0!important}html.dark .code-block button,html.dark button[data-testid=copy-code-button]{border:0!important;box-shadow:none!important;outline:0!important;--tw-ring-shadow:0 0 #0000!important;--tw-ring-offset-shadow:0 0 #0000!important;--tw-ring-color:transparent!important;border-radius:6px!important;background:rgba(246,246,246,.08)!important;background-color:rgba(246,246,246,.08)!important}html.dark .code-block button:hover,html.dark button[data-testid=copy-code-button]:hover{background:rgba(246,246,246,.14)!important;background-color:rgba(246,246,246,.14)!important}html.dark .code-group{--rounded-xl:4px;--radius-xl:4px}html.dark .code-group .code-block-background,html.dark .code-group .rounded-xt,html.dark .code-group [class*=rounded-xt],html.dark .code-group [data-component-part=code-block-root]{--rounded-xl:4px!important;--radius-xl:4px!important;border-radius:4px!important}html.dark .code-group [class*=\"before:rounded\"]::before,html.dark .code-group [class*=rounded-xt]::before,html.dark .code-group [data-component-part=code-block-root]::before{border-radius:4px!important}html.dark .code-group [data-component-part=scroll-area-viewport]{border-radius:inherit!important}html.dark .callout{border-radius:8px!important}html.dark .callout[data-callout-type=note]{border:1px solid rgba(84,125,197,.4)!important;border-color:rgba(84,125,197,.4)!important;background:rgba(84,125,197,.14)!important;background-color:rgba(84,125,197,.14)!important;border-radius:8px!important}html.dark .callout[data-callout-type=note] [data-component-part=callout-content],html.dark .callout[data-callout-type=note] [data-component-part=callout-content] *,html.dark .callout[data-callout-type=note] [data-component-part=callout-icon],html.dark .callout[data-callout-type=note] [data-component-part=callout-icon] svg{color:#a2b9e2!important}html.dark .callout[data-callout-type=warning]{border:1px solid rgba(253,250,195,.4)!important;border-color:rgba(253,250,195,.4)!important;background:rgba(253,250,195,.14)!important;background-color:rgba(253,250,195,.14)!important;border-radius:8px!important}html.dark .callout[data-callout-type=warning] [data-component-part=callout-content],html.dark .callout[data-callout-type=warning] [data-component-part=callout-content] *,html.dark .callout[data-callout-type=warning] [data-component-part=callout-icon],html.dark .callout[data-callout-type=warning] [data-component-part=callout-icon] svg{color:#fdfac3!important}html.dark .callout[data-callout-type=check],html.dark .callout[data-callout-type=tip]{border:1px solid rgba(96,145,126,.45)!important;border-color:rgba(96,145,126,.45)!important}html.dark .callout[data-callout-type=tip]{background:rgba(40,102,80,.18)!important;background-color:rgba(40,102,80,.18)!important;border-radius:8px!important}html.dark .callout[data-callout-type=check] [data-component-part=callout-content],html.dark .callout[data-callout-type=check] [data-component-part=callout-content] *,html.dark .callout[data-callout-type=check] [data-component-part=callout-icon],html.dark .callout[data-callout-type=check] [data-component-part=callout-icon] svg,html.dark .callout[data-callout-type=tip] [data-component-part=callout-content],html.dark .callout[data-callout-type=tip] [data-component-part=callout-content] *,html.dark .callout[data-callout-type=tip] [data-component-part=callout-icon],html.dark .callout[data-callout-type=tip] [data-component-part=callout-icon] svg{color:#7aab98!important}html.dark .callout[data-callout-type=check]{background:rgba(96,145,126,.16)!important;background-color:rgba(96,145,126,.16)!important}html.dark .callout[data-callout-type=info]{border:1px solid rgba(246,246,246,.16)!important;border-color:rgba(246,246,246,.16)!important;background:rgba(246,246,246,.06)!important;background-color:rgba(246,246,246,.06)!important}html.dark .callout[data-callout-type=info] [data-component-part=callout-content],html.dark .callout[data-callout-type=info] [data-component-part=callout-content] *,html.dark .callout[data-callout-type=info] [data-component-part=callout-icon],html.dark .callout[data-callout-type=info] [data-component-part=callout-icon] svg{color:#f6f6f6!important}html.dark [data-component-part=tabs-list] [data-component-part=tab-button]{color:rgba(246,246,246,.6)!important;border-bottom-color:transparent!important}html.dark [data-component-part=tabs-list] [data-component-part=tab-button][data-active=true]{color:#f6f6f6!important;border-bottom-color:#60917e!important}html.dark [data-component-part=code-group-tab-bar] [role=tab]{color:rgba(246,246,246,.6)!important}html.dark [data-component-part=code-group-tab-bar] [role=tab][aria-selected=true],html.dark [data-component-part=code-group-tab-bar] [role=tab][data-active]{color:#f6f6f6!important}html.dark [data-component-part=code-group-tab-bar] [role=tab]>div:first-child{border-radius:6px!important;color:inherit!important}html.dark [data-component-part=code-group-tab-bar] [role=tab][aria-selected=true]>div:last-child{background:#60917e!important;background-color:#60917e!important;border-radius:999px!important}.accordion-group,details.accordion{border-radius:8px!important;overflow:hidden!important}.accordion [data-component-part=accordion-button]{gap:.5rem}.accordion [data-component-part=accordion-button]>div{margin-left:0!important;margin-right:0!important}.accordion [data-component-part=accordion-title-container]{order:1;flex:1 1 auto;width:auto!important}.accordion [data-component-part=accordion-caret-right]{order:2;flex:0 0 auto;margin-left:auto!important}.accordion [data-component-part=accordion-caret-right] svg{width:.75rem!important;height:.75rem!important;background-color:rgba(246,246,246,.7)!important;-webkit-mask-image:url(https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/chevron-down.svg)!important;mask-image:url(https://d3gk2c5xim1je2.cloudfront.net/fontawesome/v7.2.0/regular/chevron-down.svg)!important;-webkit-mask-repeat:no-repeat!important;mask-repeat:no-repeat!important;-webkit-mask-position:center!important;mask-position:center!important;-webkit-mask-size:contain!important;mask-size:contain!important;transition:rotate 75ms ease-out!important;rotate:0deg;transform:none!important}.accordion [data-component-part=accordion-button][aria-expanded=true] [data-component-part=accordion-caret-right] svg,.accordion[open] [data-component-part=accordion-caret-right] svg{rotate:180deg!important}html.dark #text-selection-tooltip,html.dark [role=tooltip],html.dark tooltip{background:#0d100f!important;background-color:#0d100f!important;border:1px solid rgba(246,246,246,.12)!important;border-color:rgba(246,246,246,.12)!important;border-radius:4px!important;color:#f6f6f6!important}html.dark #localization-select-content,html.dark [data-component-part=products-selector-content],html.dark [data-component-part=search-filter-content],html.dark [data-component-part=theme-preference-menu-content],html.dark [data-component-part=version-select-content],html.dark [role=listbox],html.dark [role=menu],html.dark multi-view-dropdown-content,html.dark nav-dropdown-content,html.dark nav-dropdown-products-selector-content,html.dark option-dropdown{border-radius:8px!important}html.dark [data-component-part=search-modal]{border-radius:8px!important;border:1px solid var(--docs-border)!important;background:#0d100f!important;box-shadow:none!important}html.dark [data-component-part=search-cli-state],html.dark [data-component-part=search-input-container]{border-radius:6px!important;background:rgba(246,246,246,.06)!important;border-color:var(--docs-border)!important}html.dark [data-component-part=search-ask-ai-item],html.dark [data-component-part=search-item],html.dark [role=menuitem],html.dark [role=option]{border-radius:6px!important}html.dark [role=menuitem]>div:first-child{border-radius:6px!important}.mdx-content .frame,.mdx-content [data-name=frame],.mdx-content img,.mdx-content video{display:block;width:100%;max-width:100%;height:auto}.prose :where(img):not(:where([class~=\"not-prose\"], [class~=\"not-prose\"] *)){margin-top:0!important}.mdx-content .frame,.mdx-content [data-name=frame],.mdx-content iframe,.mdx-content img,.mdx-content video{border-radius:8px!important}.mdx-content .frame,.mdx-content [data-name=frame],.mdx-content img,.mdx-content video{overflow:hidden!important}html.dark .card,html.dark [data-component-name=mermaid-container],html.dark card,html.dark mermaid,html.dark tile{border-radius:8px!important;background:rgba(246,246,246,.04)!important;background-color:rgba(246,246,246,.04)!important;overflow:hidden!important}html.dark .card,html.dark card,html.dark tile{border-color:var(--docs-border)!important}html.dark .card [data-component-part=card-content],html.dark card [data-component-part=card-content],html.dark tile [data-component-part=card-content]{font-size:.875rem!important;line-height:1.5!important;text-wrap:pretty}html.dark [data-component-name=mermaid-container],html.dark mermaid{display:block;border:1px solid var(--docs-border)!important;padding:1.5rem 1.25rem!important}html.dark [data-component-name=mermaid-container] mermaid{border:0!important;background:0 0!important;padding:0!important;border-radius:0!important;overflow:visible!important}html.dark [data-component-name=mermaid-container] svg,html.dark mermaid svg{background:0 0!important}html.dark [data-component-name=mermaid-container] rect.actor,html.dark mermaid rect.actor{rx:8px!important;ry:8px!important}html.dark [data-component-name=mermaid-container] .messageLine0,html.dark mermaid .messageLine0{stroke:#60917e!important}html.dark [data-component-name=mermaid-container] .messageLine1,html.dark mermaid .messageLine1{stroke:rgba(205,205,205,.55)!important}html.dark [data-component-name=mermaid-container] .messageText,html.dark [data-component-name=mermaid-container] .messageText tspan,html.dark [data-component-name=mermaid-container] text.actor,html.dark [data-component-name=mermaid-container] text.actor tspan,html.dark mermaid .messageText,html.dark mermaid .messageText tspan,html.dark mermaid text.actor,html.dark mermaid text.actor tspan{fill:#f6f6f6!important;font-family:Plain,sans-serif!important}html.dark [data-component-name=mermaid-container] marker path,html.dark mermaid marker path{fill:#60917e!important;stroke:#60917e!important}#content table td,#content table th{padding-top:.875rem!important;padding-bottom:.875rem!important}[data-component-part=step-number]>div{border-radius:50%!important}#content a.link,#content a.link:hover{color:#f6f6f6!important;border-bottom-color:#60917e!important;text-decoration-color:#60917e!important}#content .callout a.link,#content .callout a.link:hover{color:inherit!important;border-bottom-color:currentColor!important;text-decoration-color:currentColor!important}html.dark .code-block,html.dark .code-block code,html.dark .code-block pre,html.dark .code-group .code-block-background,html.dark .code-group [data-component-part=code-block-root],html.dark .code-group [data-component-part=code-group-tab-content],html.dark .code-group code,html.dark .code-group pre{font-size:13px!important}html.dark code:not(pre *){border-radius:4px!important;border:1px solid var(--docs-border)!important;font-size:13px!important}#content-container:has(#api-playground-2-operation-page) [data-component-part=field-name]{color:#f6f6f6!important;font-size:15px!important;font-weight:500!important}#content-container:has(#api-playground-2-operation-page) .method-pill,#content-container:has(#api-playground-2-operation-page) [data-component-part=field-info-pill],#content-container:has(#api-playground-2-operation-page) [data-component-part=field-required-pill],#mobile-nav .method-nav-pill>span,#mobile-nav .method-pill,#sidebar .method-nav-pill>span,#sidebar .method-pill{border-radius:4px!important}#content-container:has(#api-playground-2-operation-page) [data-component-part=field-info-pill],#content-container:has(#api-playground-2-operation-page) [data-component-part=field-info-pill] *,#content-container:has(#api-playground-2-operation-page) [data-component-part=field-meta] .option-dropdown{color:rgba(246,246,246,.55)!important}#mobile-nav .method-nav-pill,#sidebar .method-nav-pill{overflow:visible!important;flex-shrink:0!important}#mobile-nav .method-nav-pill>span,#sidebar .method-nav-pill>span{width:max-content!important;max-width:none!important;overflow:visible!important;text-overflow:clip!important;white-space:nowrap!important}#content-container:has(#api-playground-2-operation-page) .border-standard.rounded-xl,#content-container:has(#api-playground-2-operation-page) .code-group button,#content-container:has(#api-playground-2-operation-page) .tryit-button,#content-container:has(#api-playground-2-operation-page) [data-component-part=version-select-trigger],#content-container:has(#api-playground-2-operation-page) button[aria-label=\"Select language\"],#content-container:has(#api-playground-2-operation-page) button[aria-label=Copy]{border-radius:6px!important}#content-container:has(#api-playground-2-operation-page) .border-standard,#content-container:has(#api-playground-2-operation-page) [data-component-part=expandable-button],#content-container:has(#api-playground-2-operation-page) [data-component-part=expandable]{border-radius:8px!important}"}],"page":{"pagePath":"api-reference/workflows/update-a-workflow","slug":"/api-reference/workflows/update-a-workflow","pageMetadata":{"title":"Update a workflow","description":"Updates a workflow. Passing `steps` replaces the array wholesale. Edits apply to future runs only; runs already in flight continue against the definition they started with.","deprecated":null,"version":null,"openapi":"/api-reference/v2.json patch /workflows/{workflow_id}","href":"/api-reference/workflows/update-a-workflow","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Updates a workflow. Passing \", _jsx(_components.code, {\n children: \"steps\"\n }), \" replaces the array wholesale. Edits apply to future runs only; runs already in flight continue against the definition they started with.\"]\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":"Update a workflow","description":"Updates a workflow. Passing `steps` replaces the array wholesale. Edits apply to future runs only; runs already in flight continue against the definition they started with.","deprecated":null,"version":null,"openapi":"/api-reference/v2.json patch /workflows/{workflow_id}","href":"/api-reference/workflows/update-a-workflow","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/decksoftwareinc/60feb3fe1b2400a1/mermaid.js","/_mintlify/custom/decksoftwareinc/53c63d97f88b046e/toc.js"],"openApiReferenceData":{"operation":{"tags":["Workflows"],"summary":"Update a workflow","operationId":"updateWorkflow","description":"Updates a workflow. Passing `steps` replaces the array wholesale. Edits apply to future runs only; runs already in flight continue against the definition they started with.","parameters":["1ba0bbff-09e4-4eb3-bbfd-8f841d9e4b1a","db25bec0-b60b-4c9e-9954-23c872098e01"],"responses":{"200":"06c3bcda-574c-4e9d-b48c-7cca7b1b56ab","400":"9c1ce7a2-aa6e-4097-a813-aa8861c68683","401":"9d38e0ce-bed4-47bd-bbc6-9a98f3f45224","403":"48aa1801-ea99-4c0c-a61b-cd8adbf04d22","404":"7f008baa-b9ee-4a00-bee0-cacb2e1588ab","409":"4d628805-9f51-42a4-b5e5-1105587bddd4","422":"82438cf5-23fb-4c05-a69e-9a85d27df0ba","429":"3ab81cf8-73e7-4221-a006-7408ba49b7c6","500":"163a554d-fa1b-44a9-9908-18a147572dfd"},"requestBody":"cd68c483-ad76-4d05-a5f1-39974057e253","method":"patch","type":"path","servers":["e7891587-14e5-4adb-832b-247637593716"],"security":["dc8ae21e-0d3e-40ae-bf25-638c0c900a99"],"path":"/workflows/{workflow_id}","baseUrlOptions":["https://api.deck.co/v2"],"title":"Update a workflow","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"1ba0bbff-09e4-4eb3-bbfd-8f841d9e4b1a":{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string","pattern":"^wflo_","example":"wflo_AbC123xYz456","isRequired":true,"description":"Unique identifier for the workflow (prefixed with `wflo_`).","uniqueKey":"","typeLabel":"string"},"description":"Unique identifier for the workflow (prefixed with `wflo_`)."},"db25bec0-b60b-4c9e-9954-23c872098e01":{"name":"Idempotency-Key","in":"header","required":false,"description":"Optional key that makes the request idempotent. Retrying with the same key returns the original response instead of repeating the operation; keys expire after 24 hours. Any string up to 256 characters. See [Idempotency](/api/idempotency).","schema":{"type":"string","maxLength":256,"example":"550e8400-e29b-41d4-a716-446655440000","isRequired":false,"description":"Optional key that makes the request idempotent. Retrying with the same key returns the original response instead of repeating the operation; keys expire after 24 hours. Any string up to 256 characters. See [Idempotency](/api/idempotency).","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"oneOf":[{"type":"null","maxLength":255,"description":"New display name.","uniqueKey":"name.oneOf.0","typeLabel":"null"},{"type":"string","maxLength":255,"description":"New display name.","uniqueKey":"name.oneOf.1","typeLabel":"string"}],"uniqueKey":"name","typeLabel":"null | string"},"steps":{"oneOf":[{"type":"null","minItems":1,"items":{"oneOf":[{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","task_id"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"check_price","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores."},"type":{"type":"string","enum":["task"],"description":"Always `task`."},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task."},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`."},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`."}]},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."}]},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."}]},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"}]}}},{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","items","step"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"process_refunds","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores."},"type":{"type":"string","enum":["for_each"],"description":"Always `for_each`."},"items":{"type":"string","example":"steps.find.output.reservations","description":"Path to the array to iterate, on an earlier step's output."},"step":{"type":"object","required":["task_id"],"properties":{"type":{"type":"string","enum":["task"],"description":"`task`. May be omitted; a loop's inner step is always a task."},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task."},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`."},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`."}]},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."}]},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."}]},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"}]}},"description":"The task step a `for_each` runs once per item. It has no `name`; reference the loop by its outer name."},"failure_behavior":{"oneOf":[{"type":"null","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output."},{"type":"string","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output."}]},"if":{"oneOf":[{"type":"null","description":"Condition expression gating the whole loop. May not read `item`."},{"type":"string","description":"Condition expression gating the whole loop. May not read `item`."}]}}}]},"description":"Replacement step definitions. The array is replaced wholesale, not merged.","uniqueKey":"steps.oneOf.0","typeLabel":"null"},{"type":"array","minItems":1,"items":{"oneOf":[{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","task_id"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"check_price","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.name","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"Always `task`.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.task_id","typeLabel":"string"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.if","typeLabel":"null | string"}},"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","items","step"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"process_refunds","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.name","typeLabel":"string"},"type":{"type":"string","enum":["for_each"],"description":"Always `for_each`.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"items":{"type":"string","example":"steps.find.output.reservations","description":"Path to the array to iterate, on an earlier step's output.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.\\items","typeLabel":"string"},"step":{"type":"object","required":["task_id"],"properties":{"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.task_id","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"`task`. May be omitted; a loop's inner step is always a task.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.type","typeLabel":"enum\u003cstring>"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.if","typeLabel":"null | string"}},"description":"The task step a `for_each` runs once per item. It has no `name`; reference the loop by its outer name.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step","typeLabel":"object"},"failure_behavior":{"oneOf":[{"type":"null","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.failure_behavior.oneOf.0","typeLabel":"null"},{"type":"string","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.failure_behavior.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.failure_behavior","typeLabel":"null | enum\u003cstring>"},"if":{"oneOf":[{"type":"null","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.if","typeLabel":"null | string"}},"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.oneOf.1.items.[INDEX]","typeLabel":"object"},"description":"Replacement step definitions. The array is replaced wholesale, not merged.","uniqueKey":"steps.oneOf.1","typeLabel":"object[]"}],"uniqueKey":"steps","typeLabel":"null | object[]"}},"description":"Request body for updating a workflow. Omit a field to leave it unchanged. Edits apply to future runs only.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","steps":[{"name":"check_price","type":"task","task_id":"task_AbC123xYz456","credential_id":"\u003cstring>","source_id":"\u003cstring>","input":{},"if":"steps.check_price.output.price_dropped == true"}]}}},"exampleType":"generated"},"text/json":{"schema":{"type":"object","properties":{"name":{"oneOf":[{"type":"null","maxLength":255,"description":"New display name.","uniqueKey":"name.oneOf.0","typeLabel":"null"},{"type":"string","maxLength":255,"description":"New display name.","uniqueKey":"name.oneOf.1","typeLabel":"string"}],"uniqueKey":"name","typeLabel":"null | string"},"steps":{"oneOf":[{"type":"null","minItems":1,"items":{"oneOf":[{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","task_id"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"check_price","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores."},"type":{"type":"string","enum":["task"],"description":"Always `task`."},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task."},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`."},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`."}]},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."}]},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."}]},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"}]}}},{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","items","step"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"process_refunds","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores."},"type":{"type":"string","enum":["for_each"],"description":"Always `for_each`."},"items":{"type":"string","example":"steps.find.output.reservations","description":"Path to the array to iterate, on an earlier step's output."},"step":{"type":"object","required":["task_id"],"properties":{"type":{"type":"string","enum":["task"],"description":"`task`. May be omitted; a loop's inner step is always a task."},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task."},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`."},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`."}]},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."}]},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."}]},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"}]}},"description":"The task step a `for_each` runs once per item. It has no `name`; reference the loop by its outer name."},"failure_behavior":{"oneOf":[{"type":"null","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output."},{"type":"string","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output."}]},"if":{"oneOf":[{"type":"null","description":"Condition expression gating the whole loop. May not read `item`."},{"type":"string","description":"Condition expression gating the whole loop. May not read `item`."}]}}}]},"description":"Replacement step definitions. The array is replaced wholesale, not merged.","uniqueKey":"steps.oneOf.0","typeLabel":"null"},{"type":"array","minItems":1,"items":{"oneOf":[{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","task_id"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"check_price","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.name","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"Always `task`.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.task_id","typeLabel":"string"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.if","typeLabel":"null | string"}},"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","items","step"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"process_refunds","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.name","typeLabel":"string"},"type":{"type":"string","enum":["for_each"],"description":"Always `for_each`.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"items":{"type":"string","example":"steps.find.output.reservations","description":"Path to the array to iterate, on an earlier step's output.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.\\items","typeLabel":"string"},"step":{"type":"object","required":["task_id"],"properties":{"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.task_id","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"`task`. May be omitted; a loop's inner step is always a task.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.type","typeLabel":"enum\u003cstring>"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.if","typeLabel":"null | string"}},"description":"The task step a `for_each` runs once per item. It has no `name`; reference the loop by its outer name.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step","typeLabel":"object"},"failure_behavior":{"oneOf":[{"type":"null","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.failure_behavior.oneOf.0","typeLabel":"null"},{"type":"string","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.failure_behavior.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.failure_behavior","typeLabel":"null | enum\u003cstring>"},"if":{"oneOf":[{"type":"null","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.if","typeLabel":"null | string"}},"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.oneOf.1.items.[INDEX]","typeLabel":"object"},"description":"Replacement step definitions. The array is replaced wholesale, not merged.","uniqueKey":"steps.oneOf.1","typeLabel":"object[]"}],"uniqueKey":"steps","typeLabel":"null | object[]"}},"description":"Request body for updating a workflow. Omit a field to leave it unchanged. Edits apply to future runs only.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","steps":[{"name":"check_price","type":"task","task_id":"task_AbC123xYz456","credential_id":"\u003cstring>","source_id":"\u003cstring>","input":{},"if":"steps.check_price.output.price_dropped == true"}]}}},"exampleType":"generated"},"application/*+json":{"schema":{"type":"object","properties":{"name":{"oneOf":[{"type":"null","maxLength":255,"description":"New display name.","uniqueKey":"name.oneOf.0","typeLabel":"null"},{"type":"string","maxLength":255,"description":"New display name.","uniqueKey":"name.oneOf.1","typeLabel":"string"}],"uniqueKey":"name","typeLabel":"null | string"},"steps":{"oneOf":[{"type":"null","minItems":1,"items":{"oneOf":[{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","task_id"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"check_price","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores."},"type":{"type":"string","enum":["task"],"description":"Always `task`."},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task."},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`."},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`."}]},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."}]},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."}]},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"}]}}},{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","items","step"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"process_refunds","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores."},"type":{"type":"string","enum":["for_each"],"description":"Always `for_each`."},"items":{"type":"string","example":"steps.find.output.reservations","description":"Path to the array to iterate, on an earlier step's output."},"step":{"type":"object","required":["task_id"],"properties":{"type":{"type":"string","enum":["task"],"description":"`task`. May be omitted; a loop's inner step is always a task."},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task."},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`."},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`."}]},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`."}]},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts."}]},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true"}]}},"description":"The task step a `for_each` runs once per item. It has no `name`; reference the loop by its outer name."},"failure_behavior":{"oneOf":[{"type":"null","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output."},{"type":"string","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output."}]},"if":{"oneOf":[{"type":"null","description":"Condition expression gating the whole loop. May not read `item`."},{"type":"string","description":"Condition expression gating the whole loop. May not read `item`."}]}}}]},"description":"Replacement step definitions. The array is replaced wholesale, not merged.","uniqueKey":"steps.oneOf.0","typeLabel":"null"},{"type":"array","minItems":1,"items":{"oneOf":[{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","task_id"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"check_price","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.name","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"Always `task`.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.task_id","typeLabel":"string"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0.if","typeLabel":"null | string"}},"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","items","step"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"process_refunds","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.name","typeLabel":"string"},"type":{"type":"string","enum":["for_each"],"description":"Always `for_each`.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"items":{"type":"string","example":"steps.find.output.reservations","description":"Path to the array to iterate, on an earlier step's output.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.\\items","typeLabel":"string"},"step":{"type":"object","required":["task_id"],"properties":{"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.task_id","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"`task`. May be omitted; a loop's inner step is always a task.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.type","typeLabel":"enum\u003cstring>"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step.if","typeLabel":"null | string"}},"description":"The task step a `for_each` runs once per item. It has no `name`; reference the loop by its outer name.","isRequired":true,"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.step","typeLabel":"object"},"failure_behavior":{"oneOf":[{"type":"null","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.failure_behavior.oneOf.0","typeLabel":"null"},{"type":"string","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.failure_behavior.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.failure_behavior","typeLabel":"null | enum\u003cstring>"},"if":{"oneOf":[{"type":"null","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1.if","typeLabel":"null | string"}},"uniqueKey":"steps.oneOf.1.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.oneOf.1.items.[INDEX]","typeLabel":"object"},"description":"Replacement step definitions. The array is replaced wholesale, not merged.","uniqueKey":"steps.oneOf.1","typeLabel":"object[]"}],"uniqueKey":"steps","typeLabel":"null | object[]"}},"description":"Request body for updating a workflow. Omit a field to leave it unchanged. Edits apply to future runs only.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","steps":[{"name":"check_price","type":"task","task_id":"task_AbC123xYz456","credential_id":"\u003cstring>","source_id":"\u003cstring>","input":{},"if":"steps.check_price.output.price_dropped == true"}]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"06c3bcda-574c-4e9d-b48c-7cca7b1b56ab":{"description":"OK","content":{"text/plain":{"schema":{"type":"object","required":["id","object","name","steps","created_at","updated_at"],"properties":{"id":{"type":"string","pattern":"^wflo_","example":"wflo_AbC123xYz456","description":"Unique identifier for the workflow, prefixed with `wflo_`.","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"object":{"type":"string","description":"Always `workflow`.","isRequired":true,"uniqueKey":"object","typeLabel":"string"},"name":{"type":"string","description":"Display name.","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"steps":{"type":"array","items":{"oneOf":[{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","task_id"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"check_price","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.name","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"Always `task`.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.task_id","typeLabel":"string"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.0.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.0.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.0.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.0.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.if","typeLabel":"null | string"}},"uniqueKey":"steps.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","items","step"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"process_refunds","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.name","typeLabel":"string"},"type":{"type":"string","enum":["for_each"],"description":"Always `for_each`.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"items":{"type":"string","example":"steps.find.output.reservations","description":"Path to the array to iterate, on an earlier step's output.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.\\items","typeLabel":"string"},"step":{"type":"object","required":["task_id"],"properties":{"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.step.task_id","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"`task`. May be omitted; a loop's inner step is always a task.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.type","typeLabel":"enum\u003cstring>"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.1.step.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.1.step.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.if","typeLabel":"null | string"}},"description":"The task step a `for_each` runs once per item. It has no `name`; reference the loop by its outer name.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.step","typeLabel":"object"},"failure_behavior":{"oneOf":[{"type":"null","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.items.[INDEX].oneOf.1.failure_behavior.oneOf.0","typeLabel":"null"},{"type":"string","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.items.[INDEX].oneOf.1.failure_behavior.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.failure_behavior","typeLabel":"null | enum\u003cstring>"},"if":{"oneOf":[{"type":"null","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.items.[INDEX].oneOf.1.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.items.[INDEX].oneOf.1.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.if","typeLabel":"null | string"}},"uniqueKey":"steps.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX]","typeLabel":"object"},"description":"Ordered array of step definitions.","isRequired":true,"uniqueKey":"steps","typeLabel":"object[]"},"created_at":{"type":"string","format":"date-time","example":"2026-06-18T00:00:00Z","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","example":"2026-06-18T00:00:00Z","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"request_id":{"type":"string","description":"Unique identifier for the API request. Include this when contacting support.","uniqueKey":"request_id","typeLabel":"string"}},"description":"Workflow definition object.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"wflo_AbC123xYz456","object":"\u003cstring>","name":"\u003cstring>","steps":[{"name":"check_price","type":"task","task_id":"task_AbC123xYz456","credential_id":"\u003cstring>","source_id":"\u003cstring>","input":{},"if":"steps.check_price.output.price_dropped == true"}],"created_at":"2026-06-18T00:00:00Z","updated_at":"2026-06-18T00:00:00Z","request_id":"\u003cstring>"}}},"exampleType":"generated"},"application/json":{"schema":{"type":"object","required":["id","object","name","steps","created_at","updated_at"],"properties":{"id":{"type":"string","pattern":"^wflo_","example":"wflo_AbC123xYz456","description":"Unique identifier for the workflow, prefixed with `wflo_`.","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"object":{"type":"string","description":"Always `workflow`.","isRequired":true,"uniqueKey":"object","typeLabel":"string"},"name":{"type":"string","description":"Display name.","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"steps":{"type":"array","items":{"oneOf":[{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","task_id"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"check_price","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.name","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"Always `task`.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.task_id","typeLabel":"string"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.0.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.0.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.0.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.0.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.if","typeLabel":"null | string"}},"uniqueKey":"steps.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","items","step"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"process_refunds","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.name","typeLabel":"string"},"type":{"type":"string","enum":["for_each"],"description":"Always `for_each`.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"items":{"type":"string","example":"steps.find.output.reservations","description":"Path to the array to iterate, on an earlier step's output.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.\\items","typeLabel":"string"},"step":{"type":"object","required":["task_id"],"properties":{"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.step.task_id","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"`task`. May be omitted; a loop's inner step is always a task.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.type","typeLabel":"enum\u003cstring>"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.1.step.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.1.step.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.if","typeLabel":"null | string"}},"description":"The task step a `for_each` runs once per item. It has no `name`; reference the loop by its outer name.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.step","typeLabel":"object"},"failure_behavior":{"oneOf":[{"type":"null","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.items.[INDEX].oneOf.1.failure_behavior.oneOf.0","typeLabel":"null"},{"type":"string","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.items.[INDEX].oneOf.1.failure_behavior.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.failure_behavior","typeLabel":"null | enum\u003cstring>"},"if":{"oneOf":[{"type":"null","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.items.[INDEX].oneOf.1.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.items.[INDEX].oneOf.1.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.if","typeLabel":"null | string"}},"uniqueKey":"steps.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX]","typeLabel":"object"},"description":"Ordered array of step definitions.","isRequired":true,"uniqueKey":"steps","typeLabel":"object[]"},"created_at":{"type":"string","format":"date-time","example":"2026-06-18T00:00:00Z","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","example":"2026-06-18T00:00:00Z","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"request_id":{"type":"string","description":"Unique identifier for the API request. Include this when contacting support.","uniqueKey":"request_id","typeLabel":"string"}},"description":"Workflow definition object.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"wflo_AbC123xYz456","object":"\u003cstring>","name":"\u003cstring>","steps":[{"name":"check_price","type":"task","task_id":"task_AbC123xYz456","credential_id":"\u003cstring>","source_id":"\u003cstring>","input":{},"if":"steps.check_price.output.price_dropped == true"}],"created_at":"2026-06-18T00:00:00Z","updated_at":"2026-06-18T00:00:00Z","request_id":"\u003cstring>"}}},"exampleType":"generated"},"text/json":{"schema":{"type":"object","required":["id","object","name","steps","created_at","updated_at"],"properties":{"id":{"type":"string","pattern":"^wflo_","example":"wflo_AbC123xYz456","description":"Unique identifier for the workflow, prefixed with `wflo_`.","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"object":{"type":"string","description":"Always `workflow`.","isRequired":true,"uniqueKey":"object","typeLabel":"string"},"name":{"type":"string","description":"Display name.","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"steps":{"type":"array","items":{"oneOf":[{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","task_id"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"check_price","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.name","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"Always `task`.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.0.task_id","typeLabel":"string"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.0.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.0.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.0.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.0.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.0.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.0.if","typeLabel":"null | string"}},"uniqueKey":"steps.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"One step of a workflow definition, discriminated by `type`.","required":["name","type","items","step"],"properties":{"name":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"process_refunds","description":"Step identifier, unique within the workflow. Lowercase letters, digits, and underscores.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.name","typeLabel":"string"},"type":{"type":"string","enum":["for_each"],"description":"Always `for_each`.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"items":{"type":"string","example":"steps.find.output.reservations","description":"Path to the array to iterate, on an earlier step's output.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.\\items","typeLabel":"string"},"step":{"type":"object","required":["task_id"],"properties":{"task_id":{"type":"string","pattern":"^task_","example":"task_AbC123xYz456","description":"The task to run. The agent is derived from the task.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.step.task_id","typeLabel":"string"},"type":{"type":"string","enum":["task"],"description":"`task`. May be omitted; a loop's inner step is always a task.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.type","typeLabel":"enum\u003cstring>"},"credential_id":{"oneOf":[{"type":"null","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.credential_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Credential for the task run. Mutually exclusive with `source_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.credential_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.credential_id","typeLabel":"null | string"},"source_id":{"oneOf":[{"type":"null","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.source_id.oneOf.0","typeLabel":"null"},{"type":"string","description":"Source for the task run, for public sources that don't require authentication. Mutually exclusive with `credential_id`.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.source_id.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.source_id","typeLabel":"null | string"},"input":{"oneOf":[{"type":"null","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.input.oneOf.0","typeLabel":"null"},{"type":"object","additionalProperties":true,"description":"Input for the task run. String values may reference an earlier step's output, or the current item inside a `for_each`, using the template syntax in [Build a workflow](/guides/workflows#wiring-outputs-into-inputs). A value that is a single reference keeps its JSON type. Not checked against the task's `input_schema` before the run starts.","uniqueKey":"steps.items.[INDEX].oneOf.1.step.input.oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.input","typeLabel":"null | object"},"if":{"oneOf":[{"type":"null","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.1.step.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression. When it evaluates false the step is `skipped`. Inside a `for_each`, the inner step's `if` may read `item`.","example":"steps.check_price.output.price_dropped == true","uniqueKey":"steps.items.[INDEX].oneOf.1.step.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.step.if","typeLabel":"null | string"}},"description":"The task step a `for_each` runs once per item. It has no `name`; reference the loop by its outer name.","isRequired":true,"uniqueKey":"steps.items.[INDEX].oneOf.1.step","typeLabel":"object"},"failure_behavior":{"oneOf":[{"type":"null","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.items.[INDEX].oneOf.1.failure_behavior.oneOf.0","typeLabel":"null"},{"type":"string","enum":[null,"stop","continue"],"default":"stop","description":"`stop` (default) fails the step on the first failed item, which stops the workflow. `continue` runs the remaining items and the workflow carries on; failed items have `null` output.","uniqueKey":"steps.items.[INDEX].oneOf.1.failure_behavior.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.failure_behavior","typeLabel":"null | enum\u003cstring>"},"if":{"oneOf":[{"type":"null","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.items.[INDEX].oneOf.1.if.oneOf.0","typeLabel":"null"},{"type":"string","description":"Condition expression gating the whole loop. May not read `item`.","uniqueKey":"steps.items.[INDEX].oneOf.1.if.oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].oneOf.1.if","typeLabel":"null | string"}},"uniqueKey":"steps.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"steps.items.[INDEX]","typeLabel":"object"},"description":"Ordered array of step definitions.","isRequired":true,"uniqueKey":"steps","typeLabel":"object[]"},"created_at":{"type":"string","format":"date-time","example":"2026-06-18T00:00:00Z","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","example":"2026-06-18T00:00:00Z","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"request_id":{"type":"string","description":"Unique identifier for the API request. Include this when contacting support.","uniqueKey":"request_id","typeLabel":"string"}},"description":"Workflow definition object.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"wflo_AbC123xYz456","object":"\u003cstring>","name":"\u003cstring>","steps":[{"name":"check_price","type":"task","task_id":"task_AbC123xYz456","credential_id":"\u003cstring>","source_id":"\u003cstring>","input":{},"if":"steps.check_price.output.price_dropped == true"}],"created_at":"2026-06-18T00:00:00Z","updated_at":"2026-06-18T00:00:00Z","request_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"9c1ce7a2-aa6e-4097-a813-aa8861c68683":{"description":"Bad request — validation error or malformed input.","content":{"application/json":{"schema":{"required":["errors"],"type":"object","properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"errors.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"errors.additionalProperties","typeLabel":"string[]"},"description":"Validation errors grouped by field name.","isRequired":true,"uniqueKey":"errors","typeLabel":"object"},"type":{"oneOf":[{"type":"null","description":"RFC 9110 problem type URI.","uniqueKey":"type.oneOf.0","typeLabel":"null"},{"type":"string","description":"RFC 9110 problem type URI.","uniqueKey":"type.oneOf.1","typeLabel":"string"}],"uniqueKey":"type","typeLabel":"null | string"},"title":{"oneOf":[{"type":"null","description":"Short summary of the validation failure.","uniqueKey":"title.oneOf.0","typeLabel":"null"},{"type":"string","description":"Short summary of the validation failure.","uniqueKey":"title.oneOf.1","typeLabel":"string"}],"uniqueKey":"title","typeLabel":"null | string"},"status":{"oneOf":[{"type":"null","description":"HTTP status code.","format":"int32","uniqueKey":"status.oneOf.0","typeLabel":"null"},{"type":"integer","description":"HTTP status code.","format":"int32","uniqueKey":"status.oneOf.1","typeLabel":"integer\u003cint32>"}],"uniqueKey":"status","typeLabel":"null | integer\u003cint32>"},"traceId":{"oneOf":[{"type":"null","description":"Request trace identifier.","uniqueKey":"traceId.oneOf.0","typeLabel":"null"},{"type":"string","description":"Request trace identifier.","uniqueKey":"traceId.oneOf.1","typeLabel":"string"}],"uniqueKey":"traceId","typeLabel":"null | string"}},"description":"Validation error returned for malformed requests (HTTP 400).","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":{},"type":"\u003cstring>","title":"\u003cstring>","status":123,"traceId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"9d38e0ce-bed4-47bd-bbc6-9a98f3f45224":{"description":"Unauthorized.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"48aa1801-ea99-4c0c-a61b-cd8adbf04d22":{"description":"Forbidden.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"7f008baa-b9ee-4a00-bee0-cacb2e1588ab":{"description":"Not found — the requested resource does not exist.","content":{"application/json":{"schema":{"required":["errors","request_id"],"type":"object","properties":{"errors":{"type":"array","items":{"required":["type","code","message"],"type":"object","properties":{"type":{"type":"string","description":"Error category (e.g. `source`, `auth`, `task`, `rate_limit`). Determines the class of failure.","isRequired":true,"uniqueKey":"errors.items.[INDEX].type","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code. Use this for programmatic handling.","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable explanation. Do not rely on this for logic — it may change.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"null","description":"The input field that caused the error, when applicable.","uniqueKey":"errors.items.[INDEX].field.oneOf.0","typeLabel":"null"},{"type":"string","description":"The input field that caused the error, when applicable.","uniqueKey":"errors.items.[INDEX].field.oneOf.1","typeLabel":"string"}],"uniqueKey":"errors.items.[INDEX].field","typeLabel":"null | string"}},"description":"Error details for a failed task run. Same structure as API-level errors.","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"One or more errors that describe what went wrong.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"request_id":{"type":"string","description":"Unique identifier for this request, useful for tracing.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"}},"description":"Standard error response.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","field":"\u003cstring>"}],"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"4d628805-9f51-42a4-b5e5-1105587bddd4":{"description":"Conflict — the request is valid but cannot be completed in the current state. Also returned when an `Idempotency-Key` is reused with different request parameters (`idempotency_error`).","content":{"application/json":{"schema":{"required":["errors","request_id"],"type":"object","properties":{"errors":{"type":"array","items":{"required":["type","code","message"],"type":"object","properties":{"type":{"type":"string","description":"Error category (e.g. `source`, `auth`, `task`, `rate_limit`). Determines the class of failure.","isRequired":true,"uniqueKey":"errors.items.[INDEX].type","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code. Use this for programmatic handling.","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable explanation. Do not rely on this for logic — it may change.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"null","description":"The input field that caused the error, when applicable.","uniqueKey":"errors.items.[INDEX].field.oneOf.0","typeLabel":"null"},{"type":"string","description":"The input field that caused the error, when applicable.","uniqueKey":"errors.items.[INDEX].field.oneOf.1","typeLabel":"string"}],"uniqueKey":"errors.items.[INDEX].field","typeLabel":"null | string"}},"description":"Error details for a failed task run. Same structure as API-level errors.","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"One or more errors that describe what went wrong.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"request_id":{"type":"string","description":"Unique identifier for this request, useful for tracing.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"}},"description":"Standard error response.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","field":"\u003cstring>"}],"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"82438cf5-23fb-4c05-a69e-9a85d27df0ba":{"description":"Unprocessable content — the request body is understood but contains invalid values.","content":{"application/json":{"schema":{"required":["errors","request_id"],"type":"object","properties":{"errors":{"type":"array","items":{"required":["type","code","message"],"type":"object","properties":{"type":{"type":"string","description":"Error category (e.g. `source`, `auth`, `task`, `rate_limit`). Determines the class of failure.","isRequired":true,"uniqueKey":"errors.items.[INDEX].type","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code. Use this for programmatic handling.","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable explanation. Do not rely on this for logic — it may change.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"null","description":"The input field that caused the error, when applicable.","uniqueKey":"errors.items.[INDEX].field.oneOf.0","typeLabel":"null"},{"type":"string","description":"The input field that caused the error, when applicable.","uniqueKey":"errors.items.[INDEX].field.oneOf.1","typeLabel":"string"}],"uniqueKey":"errors.items.[INDEX].field","typeLabel":"null | string"}},"description":"Error details for a failed task run. Same structure as API-level errors.","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"One or more errors that describe what went wrong.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"request_id":{"type":"string","description":"Unique identifier for this request, useful for tracing.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"}},"description":"Standard error response.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","field":"\u003cstring>"}],"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"3ab81cf8-73e7-4221-a006-7408ba49b7c6":{"description":"Too many requests — the organization-wide API rate limit was exceeded (`rate_limit_exceeded`). Retry with exponential backoff.","content":{"application/json":{"schema":{"required":["errors","request_id"],"type":"object","properties":{"errors":{"type":"array","items":{"required":["type","code","message"],"type":"object","properties":{"type":{"type":"string","description":"Error category (e.g. `source`, `auth`, `task`, `rate_limit`). Determines the class of failure.","isRequired":true,"uniqueKey":"errors.items.[INDEX].type","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code. Use this for programmatic handling.","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable explanation. Do not rely on this for logic — it may change.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"null","description":"The input field that caused the error, when applicable.","uniqueKey":"errors.items.[INDEX].field.oneOf.0","typeLabel":"null"},{"type":"string","description":"The input field that caused the error, when applicable.","uniqueKey":"errors.items.[INDEX].field.oneOf.1","typeLabel":"string"}],"uniqueKey":"errors.items.[INDEX].field","typeLabel":"null | string"}},"description":"Error details for a failed task run. Same structure as API-level errors.","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"One or more errors that describe what went wrong.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"request_id":{"type":"string","description":"Unique identifier for this request, useful for tracing.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"}},"description":"Standard error response.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","field":"\u003cstring>"}],"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"163a554d-fa1b-44a9-9908-18a147572dfd":{"description":"Internal server error.","content":{"application/json":{"schema":{"required":["errors","request_id"],"type":"object","properties":{"errors":{"type":"array","items":{"required":["type","code","message"],"type":"object","properties":{"type":{"type":"string","description":"Error category (e.g. `source`, `auth`, `task`, `rate_limit`). Determines the class of failure.","isRequired":true,"uniqueKey":"errors.items.[INDEX].type","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code. Use this for programmatic handling.","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable explanation. Do not rely on this for logic — it may change.","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"field":{"oneOf":[{"type":"null","description":"The input field that caused the error, when applicable.","uniqueKey":"errors.items.[INDEX].field.oneOf.0","typeLabel":"null"},{"type":"string","description":"The input field that caused the error, when applicable.","uniqueKey":"errors.items.[INDEX].field.oneOf.1","typeLabel":"string"}],"uniqueKey":"errors.items.[INDEX].field","typeLabel":"null | string"}},"description":"Error details for a failed task run. Same structure as API-level errors.","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"One or more errors that describe what went wrong.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"request_id":{"type":"string","description":"Unique identifier for this request, useful for tracing.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"}},"description":"Standard error response.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"type":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","field":"\u003cstring>"}],"request_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"dc8ae21e-0d3e-40ae-bf25-638c0c900a99":{"BearerAuth":{"type":"http","description":"Secret key (sk_live_...)","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"e7891587-14e5-4adb-832b-247637593716":{"url":"https://api.deck.co/v2","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","description":"Secret key (sk_live_...)","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Secret key (sk_live_...)","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/v2.json"},"subdomain":"decksoftwareinc","siteName":"Deck Docs","title":"Update a workflow - Deck Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T21:36:30.803Z","originalFileLocation":"api-reference/workflows/update-a-workflow.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Updates a workflow. Passing steps replaces the array wholesale. Edits apply to future runs only; runs already in flight continue against the definition they started with.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Deck Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/decksoftwareinc/DmQKfMV4zw6ETaNX/_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/decksoftwareinc/DmQKfMV4zw6ETaNX/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/decksoftwareinc/DmQKfMV4zw6ETaNX/_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/decksoftwareinc/DmQKfMV4zw6ETaNX/_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/decksoftwareinc/DmQKfMV4zw6ETaNX/_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/decksoftwareinc/DmQKfMV4zw6ETaNX/_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/decksoftwareinc/DmQKfMV4zw6ETaNX/_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/decksoftwareinc/DmQKfMV4zw6ETaNX/_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/decksoftwareinc/DmQKfMV4zw6ETaNX/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update a workflow - Deck Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Updates a workflow. Passing steps replaces the array wholesale. Edits apply to future runs only; runs already in flight continue against the definition they started with.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Deck Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.deck.co/api-reference/workflows/update-a-workflow\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://decksoftwareinc.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Update+a+workflow\u0026amp;description=Updates+a+workflow.+Passing+%60steps%60+replaces+the+array+wholesale.+Edits+apply+to+future+runs+only%3B+runs+already+in+flight+continue+against+the+definition+they+s\u0026amp;theme=34e13586d13a0a394dea5bd4\u0026amp;signature=390a9e42765448b80204bc9d28774c4aa5aaabcd1daf85b97b02868b337910b9\">\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=\"Update a workflow - Deck Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Updates a workflow. Passing steps replaces the array wholesale. Edits apply to future runs only; runs already in flight continue against the definition they started with.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://decksoftwareinc.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Update+a+workflow\u0026amp;description=Updates+a+workflow.+Passing+%60steps%60+replaces+the+array+wholesale.+Edits+apply+to+future+runs+only%3B+runs+already+in+flight+continue+against+the+definition+they+s\u0026amp;theme=34e13586d13a0a394dea5bd4\u0026amp;signature=390a9e42765448b80204bc9d28774c4aa5aaabcd1daf85b97b02868b337910b9\">\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/decksoftwareinc/DmQKfMV4zw6ETaNX/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Deck Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#60917e\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.deck.co/api-reference/workflows/update-a-workflow\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/workflows/update-a-workflow.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.deck.co/#organization\",\"name\":\"Deck Docs\",\"url\":\"https://docs.deck.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/decksoftwareinc/qU-Ph3TxWRaVaZ4z/logo/light.svg?fit=max\u0026auto=format\u0026n=qU-Ph3TxWRaVaZ4z\u0026q=85\u0026s=7219c0996a361a0efa1315710acaece8\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.deck.co#website\",\"name\":\"Deck Docs\",\"url\":\"https://docs.deck.co\",\"publisher\":{\"@id\":\"https://docs.deck.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.deck.co/api-reference/workflows/update-a-workflow#webpage\",\"url\":\"https://docs.deck.co/api-reference/workflows/update-a-workflow\",\"name\":\"Update a workflow\",\"description\":\"Updates a workflow. Passing steps replaces the array wholesale. Edits apply to future runs only; runs already in flight continue against the definition they started with.\",\"dateModified\":\"2026-10-23T21:36:30.803Z\",\"isPartOf\":{\"@id\":\"https://docs.deck.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.deck.co/api-reference/workflows/update-a-workflow#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.deck.co/api-reference/workflows/update-a-workflow#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Workflows\",\"item\":\"https://docs.deck.co/api-reference/workflows/create-a-workflow\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update a workflow\",\"item\":\"https://docs.deck.co/api-reference/workflows/update-a-workflow\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.deck.co/api-reference/workflows/update-a-workflow#apireference\",\"headline\":\"Update a workflow\",\"name\":\"Update a workflow\",\"description\":\"Updates a workflow. Passing steps replaces the array wholesale. Edits apply to future runs only; runs already in flight continue against the definition they started with.\",\"url\":\"https://docs.deck.co/api-reference/workflows/update-a-workflow\",\"mainEntityOfPage\":{\"@id\":\"https://docs.deck.co/api-reference/workflows/update-a-workflow#webpage\"},\"dateModified\":\"2026-10-23T21:36:30.803Z\",\"publisher\":{\"@id\":\"https://docs.deck.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.deck.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Deck Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Deck Docs","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","groups":[{"group":"Agents","pages":[{"title":"Create an agent","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /agents","href":"/api-reference/agents/create-an-agent"},{"title":"List agents","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /agents","href":"/api-reference/agents/list-agents"},{"title":"Retrieve an agent","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /agents/{agent_id}","href":"/api-reference/agents/retrieve-an-agent"},{"title":"Update an agent","deprecated":null,"version":null,"openapi":"/api-reference/v2.json patch /agents/{agent_id}","href":"/api-reference/agents/update-an-agent"},{"title":"Delete an agent","deprecated":null,"version":null,"openapi":"/api-reference/v2.json delete /agents/{agent_id}","href":"/api-reference/agents/delete-an-agent"}]},{"group":"Sources","pages":[{"title":"Create a source","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /sources","href":"/api-reference/sources/create-a-source"},{"title":"List sources","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /sources","href":"/api-reference/sources/list-sources"},{"title":"Retrieve a source","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /sources/{source_id}","href":"/api-reference/sources/retrieve-a-source"},{"title":"Update a source","deprecated":null,"version":null,"openapi":"/api-reference/v2.json patch /sources/{source_id}","href":"/api-reference/sources/update-a-source"},{"title":"Reset a source","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /sources/{source_id}/reset","href":"/api-reference/sources/reset-a-source"},{"title":"Delete a source","deprecated":null,"version":null,"openapi":"/api-reference/v2.json delete /sources/{source_id}","href":"/api-reference/sources/delete-a-source"}]},{"group":"Tasks","pages":[{"title":"Create a task","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /tasks","href":"/api-reference/tasks/create-a-task"},{"title":"List tasks","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /tasks","href":"/api-reference/tasks/list-tasks"},{"title":"Retrieve a task","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /tasks/{task_id}","href":"/api-reference/tasks/retrieve-a-task"},{"title":"Update a task","deprecated":null,"version":null,"openapi":"/api-reference/v2.json patch /tasks/{task_id}","href":"/api-reference/tasks/update-a-task"},{"title":"Delete a task","deprecated":null,"version":null,"openapi":"/api-reference/v2.json delete /tasks/{task_id}","href":"/api-reference/tasks/delete-a-task"},{"title":"Run a task","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /tasks/{task_id}/run","href":"/api-reference/tasks/run-a-task"},{"title":"Reset a task","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /tasks/{task_id}/reset","href":"/api-reference/tasks/reset-a-task"}]},{"group":"Task Runs","pages":[{"title":"Retrieve a task run","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /task-runs/{run_id}","href":"/api-reference/task-runs/retrieve-a-task-run"},{"title":"List task runs","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /task-runs","href":"/api-reference/task-runs/list-task-runs"},{"title":"List task run storage items","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /task-runs/{run_id}/storage","href":"/api-reference/task-runs/list-task-run-storage-items"},{"title":"List task run screenshots","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /task-runs/{run_id}/screenshots","href":"/api-reference/task-runs/list-task-run-screenshots"},{"title":"Cancel a task run","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /task-runs/{run_id}/cancel","href":"/api-reference/task-runs/cancel-a-task-run"},{"title":"Rerun a task run","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /task-runs/{run_id}/rerun","href":"/api-reference/task-runs/rerun-a-task-run"},{"title":"Submit interaction input","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /task-runs/{run_id}/interaction","href":"/api-reference/task-runs/submit-interaction-input"}]},{"group":"Credentials","pages":[{"title":"Create a credential","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /credentials","href":"/api-reference/credentials/create-a-credential"},{"title":"List credentials","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /credentials","href":"/api-reference/credentials/list-credentials"},{"title":"Retrieve a credential","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /credentials/{credential_id}","href":"/api-reference/credentials/retrieve-a-credential"},{"title":"Update a credential","deprecated":null,"version":null,"openapi":"/api-reference/v2.json patch /credentials/{credential_id}","href":"/api-reference/credentials/update-a-credential"},{"title":"Delete a credential","deprecated":null,"version":null,"openapi":"/api-reference/v2.json delete /credentials/{credential_id}","href":"/api-reference/credentials/delete-a-credential"}]},{"group":"Sessions","pages":[{"title":"Start a session","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /sessions","href":"/api-reference/sessions/start-a-session"},{"title":"List sessions","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /sessions","href":"/api-reference/sessions/list-sessions"},{"title":"Retrieve a session","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /sessions/{session_id}","href":"/api-reference/sessions/retrieve-a-session"},{"title":"End a session","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /sessions/{session_id}/end","href":"/api-reference/sessions/end-a-session"}]},{"group":"Storage","pages":[{"title":"Retrieve a storage item","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /storage/{storage_id}","href":"/api-reference/storage/retrieve-a-storage-item"},{"title":"Delete a storage item","deprecated":null,"version":null,"openapi":"/api-reference/v2.json delete /storage/{storage_id}","href":"/api-reference/storage/delete-a-storage-item"}]},{"group":"Triggers","pages":[{"title":"Create a trigger","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /triggers","href":"/api-reference/triggers/create-a-trigger"},{"title":"List triggers","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /triggers","href":"/api-reference/triggers/list-triggers"},{"title":"Retrieve a trigger","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /triggers/{trigger_id}","href":"/api-reference/triggers/retrieve-a-trigger"},{"title":"Update a trigger","deprecated":null,"version":null,"openapi":"/api-reference/v2.json patch /triggers/{trigger_id}","href":"/api-reference/triggers/update-a-trigger"},{"title":"Delete a trigger","deprecated":null,"version":null,"openapi":"/api-reference/v2.json delete /triggers/{trigger_id}","href":"/api-reference/triggers/delete-a-trigger"},{"title":"List trigger credentials","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /triggers/{trigger_id}/credentials","href":"/api-reference/triggers/list-trigger-credentials"}]},{"group":"Workflows","pages":[{"title":"Create a workflow","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /workflows","href":"/api-reference/workflows/create-a-workflow"},{"title":"List workflows","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /workflows","href":"/api-reference/workflows/list-workflows"},{"title":"Retrieve a workflow","description":"Returns a single workflow by ID.","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /workflows/{workflow_id}","href":"/api-reference/workflows/retrieve-a-workflow"},{"title":"Update a workflow","deprecated":null,"version":null,"openapi":"/api-reference/v2.json patch /workflows/{workflow_id}","href":"/api-reference/workflows/update-a-workflow"},{"title":"Delete a workflow","description":"Deletes a workflow. Runs already in flight are unaffected.","deprecated":null,"version":null,"openapi":"/api-reference/v2.json delete /workflows/{workflow_id}","href":"/api-reference/workflows/delete-a-workflow"},{"title":"Run a workflow","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /workflows/{workflow_id}/run","href":"/api-reference/workflows/run-a-workflow"},{"title":"List workflow runs","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /workflow-runs","href":"/api-reference/workflow-runs/list-workflow-runs"},{"title":"Retrieve a workflow run","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /workflow-runs/{workflow_run_id}","href":"/api-reference/workflow-runs/retrieve-a-workflow-run"},{"title":"Cancel a workflow run","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /workflow-runs/{workflow_run_id}/cancel","href":"/api-reference/workflow-runs/cancel-a-workflow-run"},{"title":"Rerun a workflow run","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /workflow-runs/{workflow_run_id}/rerun","href":"/api-reference/workflow-runs/rerun-a-workflow-run"}]},{"group":"Event Destinations","pages":[{"title":"Create an event destination","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /event-destinations","href":"/api-reference/event-destinations/create-an-event-destination"},{"title":"List event destinations","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /event-destinations","href":"/api-reference/event-destinations/list-event-destinations"},{"title":"Retrieve an event destination","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /event-destinations/{destination_id}","href":"/api-reference/event-destinations/retrieve-an-event-destination"},{"title":"Update an event destination","deprecated":null,"version":null,"openapi":"/api-reference/v2.json patch /event-destinations/{destination_id}","href":"/api-reference/event-destinations/update-an-event-destination"},{"title":"Delete an event destination","deprecated":null,"version":null,"openapi":"/api-reference/v2.json delete /event-destinations/{destination_id}","href":"/api-reference/event-destinations/delete-an-event-destination"},{"title":"Send a test event to a destination","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /event-destinations/{destination_id}/test","href":"/api-reference/event-destinations/send-a-test-event-to-a-destination"},{"title":"List event deliveries","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /event-destinations/{destination_id}/event-deliveries","href":"/api-reference/event-destinations/list-event-deliveries"}]},{"group":"Events","pages":[{"title":"List events","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /events","href":"/api-reference/events/list-events"},{"title":"Retrieve an event","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /events/{event_id}","href":"/api-reference/events/retrieve-an-event"},{"title":"List event types","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /event-types","href":"/api-reference/events/list-event-types"}]},{"group":"Components","pages":[{"title":"Create a session token","deprecated":null,"version":null,"openapi":"/api-reference/v2.json post /token","href":"/api-reference/components/create-a-session-token"}]},{"group":"Platform","pages":[{"title":"Retrieve the static IP range","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /static-ips","href":"/api-reference/platform/retrieve-the-static-ip-range"}]},{"group":"Test","pages":[{"title":"Test your API key","deprecated":null,"version":null,"openapi":"/api-reference/v2.json get /test","href":"/api-reference/test/test-your-api-key"}]}]},{"tab":"Changelog","href":"https://deck.co/changelog"}]},"title":"Update a workflow - Deck Docs","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}