curl --request POST \
--url https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset \
--header 'Cookie: <api-key>' \
--header 'x-api-key: <api-key>'import requests
url = "https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset"
headers = {
"Cookie": "<api-key>",
"x-api-key": "<api-key>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Cookie: '<api-key>', 'x-api-key': '<api-key>'}};
fetch('https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Cookie: <api-key>",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Cookie", "<api-key>")
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset")
.header("Cookie", "<api-key>")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Cookie"] = '<api-key>'
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"folderId": "<string>",
"associatedTo": "<string>",
"associatedToBusinessId": "<string>",
"associatedToPlatformId": "<string>",
"platformType": "<string>",
"isActive": true,
"created": 123,
"lastModified": 123,
"triggerType": "<string>",
"trigger": {
"id": "<string>",
"type": "<string>",
"category": "<string>",
"data": {},
"connections": {},
"parentId": "<string>",
"title": "<string>",
"subNodes": "<array>"
},
"variables": {},
"data": {
"nodes": [
{
"id": "<string>",
"type": "<string>",
"category": "<string>",
"position": {
"x": 123,
"y": 123
},
"parentId": "<string>",
"draggable": true,
"selected": true,
"data": {}
}
],
"edges": [
{
"id": "<string>",
"source": "<string>",
"target": "<string>",
"sourceHandle": "<string>",
"targetHandle": "<string>",
"type": "<string>"
}
]
},
"parsedData": [
{
"id": "<string>",
"type": "<string>",
"category": "<string>",
"data": {},
"connections": {},
"parentId": "<string>",
"title": "<string>",
"subNodes": "<array>"
}
],
"settings": {},
"notes": "<string>",
"executionCount": 123,
"lastExecution": 123,
"analytics": {
"totalStarted": 123,
"totalCompleted": 123,
"totalDropped": 123,
"lastUpdated": 123,
"nodeStats": {},
"edgeStats": {},
"buttonStats": {}
},
"selected": true
}{
"error": "<string>",
"message": "<string>"
}{
"message": "Workflow analytics requires the Expert AI plan."
}{
"error": "<string>",
"message": "<string>"
}Reset Workflow Analytics
Zeros every canvas analytics counter on this workflow (totalStarted, totalCompleted, totalDropped, nodeStats, edgeStats, buttonStats). No request body. Requires the Expert AI plan (403 otherwise). Destructive — call only when the user explicitly asks. Returns the updated workflow document. Use the new lastModified on the next graph PUT. Path workflowId must be URL-encoded. Same Cookie + x-api-key as other Workflows calls. See /build-workflows/analytics.
curl --request POST \
--url https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset \
--header 'Cookie: <api-key>' \
--header 'x-api-key: <api-key>'import requests
url = "https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset"
headers = {
"Cookie": "<api-key>",
"x-api-key": "<api-key>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Cookie: '<api-key>', 'x-api-key': '<api-key>'}};
fetch('https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Cookie: <api-key>",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Cookie", "<api-key>")
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset")
.header("Cookie", "<api-key>")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://workflows.pingmee.co.il/workflows/{workflowId}/analytics/reset")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Cookie"] = '<api-key>'
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"folderId": "<string>",
"associatedTo": "<string>",
"associatedToBusinessId": "<string>",
"associatedToPlatformId": "<string>",
"platformType": "<string>",
"isActive": true,
"created": 123,
"lastModified": 123,
"triggerType": "<string>",
"trigger": {
"id": "<string>",
"type": "<string>",
"category": "<string>",
"data": {},
"connections": {},
"parentId": "<string>",
"title": "<string>",
"subNodes": "<array>"
},
"variables": {},
"data": {
"nodes": [
{
"id": "<string>",
"type": "<string>",
"category": "<string>",
"position": {
"x": 123,
"y": 123
},
"parentId": "<string>",
"draggable": true,
"selected": true,
"data": {}
}
],
"edges": [
{
"id": "<string>",
"source": "<string>",
"target": "<string>",
"sourceHandle": "<string>",
"targetHandle": "<string>",
"type": "<string>"
}
]
},
"parsedData": [
{
"id": "<string>",
"type": "<string>",
"category": "<string>",
"data": {},
"connections": {},
"parentId": "<string>",
"title": "<string>",
"subNodes": "<array>"
}
],
"settings": {},
"notes": "<string>",
"executionCount": 123,
"lastExecution": 123,
"analytics": {
"totalStarted": 123,
"totalCompleted": 123,
"totalDropped": 123,
"lastUpdated": 123,
"nodeStats": {},
"edgeStats": {},
"buttonStats": {}
},
"selected": true
}{
"error": "<string>",
"message": "<string>"
}{
"message": "Workflow analytics requires the Expert AI plan."
}{
"error": "<string>",
"message": "<string>"
}totalStarted, totalCompleted, totalDropped, nodeStats, edgeStats, buttonStats). URL-encode workflowId in the path. No request body.
Requires the Expert AI plan (403 otherwise) and the same Cookie + x-api-key as other Workflows calls.
Destructive — only when the user explicitly asks. Returns the updated workflow document. Use the new lastModified on the next graph PUT.
How to read analytics (GET, not this endpoint) and change the graph: Workflow analytics.Authorizations
Personal access token from Pingmee Settings → Developer Tools
Business API key from Pingmee Settings → Developer Tools
Path Parameters
Workflow identifier. Must be URL-encoded when used in the path.
Response
Updated workflow with empty analytics
Workflow identifier.
Workflow name.
Folder this workflow belongs to.
Account id. Set by the server from the Cookie — do not invent this value.
WhatsApp phone-number id from GET /phone-numbers (row id, not the WABA associatedBusinessId) or Facebook page id. Required for WhatsApp send. See /build-workflows/document.
Optional alias of the same phone-number id or Facebook page id as associatedToBusinessId.
Platform this workflow is bound to (whatsapp, facebookMessenger, instagram, web). Set on create with associatedToBusinessId.
Whether the workflow runs. Create always stores false. Activate with PUT { isActive: true }.
Unix timestamp (seconds). Set by the server on create.
Unix timestamp (seconds). Echo this on graph PUTs or the API returns 409.
Usually trigger.data.eventType. The trigger node is workflow.trigger, not inside parsedData.
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.
Show child attributes
Show child attributes
Workflow-level variable map. Usually {} unless set. Nested variable objects are loose — see /build-workflows/variables.
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.
Show child attributes
Show child attributes
Execution graph: parent nodes only. Sub-nodes hang off parent.subNodes[]. Runtime starts at trigger.connections.out[0].
Show child attributes
Show child attributes
Optional shared timeout / fallback and other workflow settings.
Manual notes or description.
Number of times the workflow has executed. Server-managed.
Unix timestamp of the last execution. Server-managed.
Canvas analytics on GET /workflows/{workflowId} (Expert AI plan). Omitted when the plan does not include canvas analytics — do not invent counts. Server-managed; do not send on PUT. A graph PUT prunes nodeStats, edgeStats, and buttonStats for ids no longer on the graph. See /build-workflows/analytics.
Show child attributes
Show child attributes
Editor UI flag. Not required for API saves.
Was this page helpful?