Update a workflow
Change a workflow’s name, description, inputs, steps, or connections.
steps replaces the whole list. Everything is checked like Create a workflow.
The state before the change is saved as a version you can restore in the app.
The owner, or a workspace owner, admin, or member (a viewer gets 403). Needs workflows:write. MCP tool: update_workflow.Authorizations
API key with the vd_sk_ prefix, as Authorization: Bearer vd_sk_.... Create keys in Settings → API Keys.
Headers
Any unique string (such as your order id). Resending the same request with the same key within 24 hours returns the first answer (with Idempotent-Replayed: true) and does nothing twice; the same key with a different request is a 422 idempotency_key_reused.
1 - 255Path Parameters
Body
Only what is sent changes. Each save keeps the previous state as a version.
1 - 50010000The inputs a run takes (the API trigger): [{name, type, required, default, description, example}]; type is string, number, integer, boolean, array or object.
The steps, in the same JSON the app saves: [{id, name, type, config, on_error, retries}]. type is one of the executor's step types (skill, workflow, http, code, transform, agent, ...). A skill step names the skill in config.skill; a workflow step in config.target_workflow_id. Steps read inputs as {{inputs.}}.
Edges between steps: [{from_step, to_step}]. Leave empty for a straight line (steps run in order).
Response
The workflow after the change.
A workflow as an API: what it takes and returns, its track record and endpoints.
The graph's steps (on create, change and GET with include_graph=true).
How many saved versions came before this one.

