Update settings or node contents
The normal way to change something that already exists. Change campaign settings, the contents of existing nodes, or both, without sending the graph. This is the endpoint for ordinary edits — reword an SMS, point a callback at a different calendar, switch AI notes on. Because the request carries no graph, it cannot damage one.
Everything merges: keys you omit keep their stored value, and a key set to null is removed (RFC 7386, one level deep). Arrays replace wholesale, so send the full tags list rather than the one you are adding.
Send campaignConfig, nodes, or both — both land as a single write, so a settings change and a node edit cannot half-apply. At least one is required.
Structure is not editable here. nodes addresses existing ids only: it cannot add a node (POST /outcomes/{outcome}/nodes), remove one (DELETE /nodes/{nodeId}, which also re-links the chain around it) or re-wire anything (the whole-graph PUT). {"nodes": {"n1": null}} is rejected rather than treated as a delete, because removing a node is four operations and dropping the key is only one of them. if, switch and trigger nodes are refused for the same reason — their config IS structure, and changing a case can orphan the edge pointing at it.
Always version-guarded. Send expectedVersion to protect against your own read being stale; without it the write is still guarded against anything landing between this request’s read and its write. Either way a lost race is a 409, never a silent overwrite.
Required API key scope: campaign_workflows:write.
Authorizations
Send your API key as Authorization: Bearer YOUR_API_KEY.
Path Parameters
Agent id.
1Query Parameters
Pair with campaignId; omit both for primary campaign.
1Pair with locationId; omit both for primary campaign.
1Body
Request payload. Detailed schema pending — see the route handler.
At least one of campaignConfig or nodes is required.
Campaign-level settings saved with the workflow. Documented fields cover supported campaign controls; additional keys (including canvas-only presentation state) are preserved for forward-compatible options.
Map of nodeId to the fields to merge into that node. Existing ids only — this cannot add, remove or re-wire a node.
x >= 03
Response
The updated workflow.
