Skip to main content
PUT
cURL
Partial update — send only the fields you want to change. URL-encode workflowId in the path. name, isActive, settings, and associatedToBusinessId can be sent alone. Create always stores a workflow inactive; activate without sending a graph:
Set associatedToBusinessId (and platformType on create) from GET phone numbers. PUT persists associatedToBusinessId without a graph; platformType is stored from the create body.

Graph updates and optimistic lock

If data or parsedData is present, this is a graph update. Also send trigger, triggerType, variables, and lastModified from the last GET or create. Always send both data and parsedData plus trigger / triggerType. When lastModified does not match the server, the API returns 409 with the current lastModified. Reload and retry. A graph PUT prunes stored analytics for node / edge / button ids that are no longer on the graph. GET fresh analytics before you rewrite, and do not send analytics in the body. See Workflow analytics.
Before building data or parsedData, read Build workflows and the related cookbook pages.

Authorizations

Personal access token from Pingmee Settings → Developer Tools

x-api-key
string
header
required

Business API key from Pingmee Settings → Developer Tools

Path Parameters

workflowId
string
required

Workflow identifier. Must be URL-encoded when used in the path.

Body

application/json

Partial update. Send only the fields you want to change. Graph updates (data or parsedData present) require lastModified from the last GET or create.

name
string
isActive
boolean

Set true to activate. Create always stores false; activate with a separate PUT { isActive: true } (no graph required).

lastModified
integer

Required when data or parsedData is present. Echo the value from the last GET or create, or the API returns 409.

associatedToBusinessId
string

WhatsApp phone-number id from GET /phone-numbers (row id). PUT can change this field without sending a graph.

triggerType
string
trigger
object

Execution node used in parsedData, trigger, and subNodes. Branching is which sub-node's connections.out — there are no handle ids here. Node data is a loose object; read /build-workflows/overview before building it.

variables
object
data
object

React Flow canvas (workflow.data from toObject()). Required for the editor. Always send together with parsedData + trigger when saving a graph. Node form payloads are not fully specified here — read /build-workflows/overview before building data.

parsedData
object[]
settings
object
notes
string

Response

Workflow updated

message
string
required
Example:

"Workflow 'wf_welcome' updated successfully."

lastModified
integer
required

New Unix timestamp (seconds). Echo this on the next graph PUT.

Last modified on September 4, 2026