curl --request GET \
--url https://api.pingmee.co.il/templates \
--header 'Cookie: <api-key>' \
--header 'x-api-key: <api-key>'import requests
url = "https://api.pingmee.co.il/templates"
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://api.pingmee.co.il/templates', 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://api.pingmee.co.il/templates",
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://api.pingmee.co.il/templates"
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://api.pingmee.co.il/templates")
.header("Cookie", "<api-key>")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pingmee.co.il/templates")
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>",
"language": "<string>",
"status": "<string>",
"category": "<string>",
"components": [
{}
]
}
]{
"error": "<string>",
"message": "<string>"
}Get WhatsApp Templates
List WhatsApp message templates for a connected phone number (type=whatsapp and phoneNumberId required). phoneNumberId is the workflow associatedToBusinessId (GET /phone-numbers row id). Call this for starter/outbound bots (workflowTrigger, POST /workflows/{id}/trigger, campaign-style send, or any send outside the 24-hour window), or when the user named a catalog template. Do not call this for inbound reply bots (pingmeeTrigger Messages Created / New Conversation Started) — those use messageType: custom. When you do fetch: pick an APPROVED template, copy it into the WhatsApp node’s templateInformation, set messageType: template and templateType: whatsapp, and bind bodyVariables / headerVariables. Skip IMAGE / VIDEO / DOCUMENT header templates unless attachmentS3Id is already on the component — there is no public upload API. Infer intent: /build-workflows/overview. Field mapping: /build-workflows/nodes-and-edges.
curl --request GET \
--url https://api.pingmee.co.il/templates \
--header 'Cookie: <api-key>' \
--header 'x-api-key: <api-key>'import requests
url = "https://api.pingmee.co.il/templates"
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://api.pingmee.co.il/templates', 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://api.pingmee.co.il/templates",
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://api.pingmee.co.il/templates"
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://api.pingmee.co.il/templates")
.header("Cookie", "<api-key>")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pingmee.co.il/templates")
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>",
"language": "<string>",
"status": "<string>",
"category": "<string>",
"components": [
{}
]
}
]{
"error": "<string>",
"message": "<string>"
}type=whatsapp and phoneNumberId (the workflow’s associatedToBusinessId).
When to call this
- Starter / outbound — the bot opens the conversation (
workflowTrigger, POST /trigger, campaign-style send, or any send outside the 24-hour window). - The user asked for a named catalog template (even on a reply bot).
pingmeeTrigger Messages Created / New Conversation Started, keyword router). Those use messageType: "custom" — infer intent on Build a workflow.
When you do fetch:
- Bind the phone first (GET phone numbers).
- GET this list and keep
status === "APPROVED". - Copy the template object into the WhatsApp node’s
templateInformation. - Set
messageType: "template"andtemplateType: "whatsapp". - Bind BODY / text HEADER placeholders with
bodyVariables/headerVariables.
format is IMAGE, VIDEO, or DOCUMENT unless attachmentS3Id is already on that component — there is no public upload API.
Field mapping: WhatsApp templates.Authorizations
Personal access token from Pingmee Settings → Developer Tools
Business API key from Pingmee Settings → Developer Tools
Query Parameters
Template platform type. Use whatsapp for Meta catalog templates.
whatsapp Phone-number id from GET /phone-numbers (workflow associatedToBusinessId). Do not use the WABA id.
Response
WhatsApp templates (Meta catalog shape)
Template id. Copy into templateInformation.id.
Template name. Copy into templateInformation.name. Do not invent this.
Template language code (for example en, he).
Use only APPROVED templates when the bot opens a conversation (starter/outbound). Reply bots do not need this list.
Meta category such as UTILITY, MARKETING, or AUTHENTICATION.
HEADER / BODY / FOOTER / BUTTONS. Copy the array into templateInformation.components. Bind BODY {{n}} with bodyVariables and text HEADER {{n}} with headerVariables.
Was this page helpful?