Apply targeted edits to a flow config
Change part of a flow without resending the whole graph. Replacing the entire config to fix one word puts every other node in the request too, so a small fix carries the risk of a large one.
The batch is atomic — one bad op writes nothing — and the result is validated by the same rules a full replace runs. 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.
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.Headers
API Key for authentication
Path Parameters
Flow identifier, e.g. fl_ab12cd34
Body
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.
Operations, applied in order. Each is {"op": "<name>", ...}.
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.
Apply and validate without saving; the response carries the config the batch would produce.
Response
The saved flow and the resulting config
Why the resulting config would be rejected. Only ever non-empty under validate_only.
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.