Skip to main content
PATCH
Apply targeted edits to a flow config
Replacing the whole config to fix one word puts every other node in the request too, so a small fix carries the risk of a large one. This endpoint changes only what you name.
Operations — each item of ops is {"op": "<name>", ...}:update_node merges patch into the node, and merges patch.data one level deeper — so patching one field of data leaves the rest of the node alone. Lists are replaced wholesale; use the single-entry ops above to touch one binding or port.
The batch is atomic: if any op fails, nothing is written.
validate_only: true applies and validates the batch without saving, and returns the config it would produce with flow: null. Omit internal_version and the ops are applied to the row under a lock, so a fix to one node does not lose a race with a change to another.

Headers

x-apikey
string
required

API Key for authentication

Path Parameters

flow_id
string
required

Flow identifier, e.g. fl_ab12cd34

Body

application/json

A small, ordered batch of targeted edits, applied atomically: if any op fails, nothing is written. Op names: set_input, remove_input, add_node, replace_node, update_node, remove_node, set_node_input, remove_node_input, set_node_output, remove_node_output, set_output, set_output_field, remove_output_field.

ops
Ops · object[]
required

Operations, applied in order. Each is {"op": "<name>", ...}.

internal_version
string | null

Optional. When set, the edit is refused if the flow changed since you read it. Omit it and the ops are applied to whatever is current.

validate_only
boolean
default:false

Apply and validate without saving; the response carries the config the batch would produce.

Response

The saved flow and the resulting config

valid
boolean
required
config
Config · object
required
errors
string[]

Why the resulting config would be rejected. Only ever non-empty under validate_only.

flow
FlowDetail · object | null

A flow plus the pieces needed to edit it. config is the graph, ui is editor-only metadata the runtime ignores, and internal_version is the concurrency token you send back on a write.