curl --request GET \
--url https://workflows.pingmee.co.il/workflows/{workflowId} \
--header 'Cookie: <api-key>' \
--header 'x-api-key: <api-key>'import requests
url = "https://workflows.pingmee.co.il/workflows/{workflowId}"
headers = {
"Cookie": "<api-key>",
"x-api-key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Cookie: '<api-key>', 'x-api-key': '<api-key>'}};
fetch('https://workflows.pingmee.co.il/workflows/{workflowId}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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}"
req, _ := http.NewRequest("GET", 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.get("https://workflows.pingmee.co.il/workflows/{workflowId}")
.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}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.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>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Get Workflow
Returns the full workflow document, including canvas data, execution parsedData, trigger, variables, settings, and (on the Expert AI plan) analytics. If analytics is omitted, the plan may not include canvas analytics — do not invent counts. There is no separate analytics GET. Path workflowId must be URL-encoded. See /build-workflows/analytics.
curl --request GET \
--url https://workflows.pingmee.co.il/workflows/{workflowId} \
--header 'Cookie: <api-key>' \
--header 'x-api-key: <api-key>'import requests
url = "https://workflows.pingmee.co.il/workflows/{workflowId}"
headers = {
"Cookie": "<api-key>",
"x-api-key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Cookie: '<api-key>', 'x-api-key': '<api-key>'}};
fetch('https://workflows.pingmee.co.il/workflows/{workflowId}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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}"
req, _ := http.NewRequest("GET", 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.get("https://workflows.pingmee.co.il/workflows/{workflowId}")
.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}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.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>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{ id, name, folderId } rows from List workflows.
The response includes canvas data, execution parsedData, trigger, variables, settings, lastModified, and (on the Expert AI plan) analytics. URL-encode workflowId in the path.
If analytics is missing, the plan may not include canvas analytics — do not invent counts. How to interpret the object and PUT graph changes: Workflow analytics.
To build or edit data / parsedData, read Build workflows first.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
Full workflow document
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?