https://docs.pingmee.co.il/mcp indexes these pages and the Workflows API.
Board UI field catalogs live on Workflow Docs and are optional for this path.
Goal
Create a folder, save a workflow that has both a canvas graph (data) and an execution graph (parsedData + trigger), activate it, then trigger it. Bind WhatsApp / HTTP / Fireberry fields with Fixed, Expression, or Custom parameter objects.
Before you save (agents)
Do these before POST/PUT. Skipping them produces a graph that opens on the board but does not send from the right number, fails Meta’s 24-hour rule on starter/outbound, or drops media.- Pick a phone / platform. GET phone numbers (
GET https://business.pingmee.co.il/phone-numbers). If more than one number exists, ask the user which one to bind. Copy that item’sidintoassociatedToBusinessIdand setplatformType(whatsappfor those rows). Optional: setassociatedToPlatformIdto the sameid. See Workflow document. - Infer intent — the first WhatsApp message is not always a template. Decide from what the user asked for (table below). Do not force a Meta template on a reply bot. See Nodes and edges.
- No media upload via this API. There is no public file-upload endpoint for agents. GUI save uploads blob URLs to S3 (
attachmentS3Id). Via REST, send text or template body/buttons only. Do not put blob/httpsupload URLs intemplateInformation. If a catalog template requires an IMAGE / VIDEO / DOCUMENT header, skip it unlesscomponents[].attachmentS3Idis already known. See Hard rules. - Wire both graphs. Copy every canvas edge into
connections.outwith matching node ids. Root output handle is"out"; sub-node output handle is"in". See How to wire a graph.
Infer starter vs reply
A
workflowTrigger child reached from a pointer during an inbound run is still in-session — custom is OK. Template is required when that trigger starts the thread (POST /trigger, campaign-style, outside the 24-hour window).
1
Optional — create a folder
POST https://workflows.pingmee.co.il/folders/{folderId} with { "name": "Inbound" }. You supply folderId. Or reuse a folderId from list workflows (minimal).2
Create the workflow
POST https://workflows.pingmee.co.il/workflows/{workflowId}?folderId={folderId} with at least name, associatedToBusinessId, and platformType. You may send the full graph in the same body. The server always stores isActive: false and sets associatedTo from the Cookie. Response includes created and lastModified.3
PUT the graph if you did not send it on create
Send both
data and parsedData plus trigger / triggerType. Echo lastModified from the last GET or create, or the API returns 409.4
Activate
PUT /workflows/{workflowId} with { "isActive": true } only. No lastModified needed when you are not sending data or parsedData.5
Trigger
POST /workflows//trigger. Optional body
triggerData lands on the trigger node — read it with return $<triggerNodeId>.triggerData.<key>; (Variables). The child of a workflow pointer must already be active and start with workflowTrigger.6
Optional — read analytics, then edit
After executions, GET the same document and read
analytics (Expert AI). Interpret drop-off / buttons, then PUT a new graph. See Workflow analytics.What to read next
Document fields
Top-level Workflow keys and what the server overwrites
Dual graph
React Flow
data vs execution parsedData + triggerNodes and edges
NodeType table, handles, required
data keysExamples
Sanitized dual-graph patterns, including triggerData + pointer
Analytics
GET
analytics, interpret drop-off, PUT graph changesVariables
Parameter slots: Fixed (tree pick), Expression (
return $nodeId…), Custom ({ custom })