Send template message
curl --request POST \
--url https://messenger-public-api.cogfy.com/messages/template \
--header 'Content-Type: application/json' \
--header 'api-key: <api-key>' \
--data '
{
"from": "5511999998888",
"to": "5599888887777",
"template": {
"name": "appointment_reminder",
"language": {
"code": "pt_BR"
},
"components": [
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "John"
}
]
}
]
}
}
'import requests
url = "https://messenger-public-api.cogfy.com/messages/template"
payload = {
"from": "5511999998888",
"to": "5599888887777",
"template": {
"name": "appointment_reminder",
"language": { "code": "pt_BR" },
"components": [
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "John"
}
]
}
]
}
}
headers = {
"api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
from: '5511999998888',
to: '5599888887777',
template: {
name: 'appointment_reminder',
language: {code: 'pt_BR'},
components: [{type: 'body', parameters: [{type: 'text', text: 'John'}]}]
}
})
};
fetch('https://messenger-public-api.cogfy.com/messages/template', 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://messenger-public-api.cogfy.com/messages/template",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'from' => '5511999998888',
'to' => '5599888887777',
'template' => [
'name' => 'appointment_reminder',
'language' => [
'code' => 'pt_BR'
],
'components' => [
[
'type' => 'body',
'parameters' => [
[
'type' => 'text',
'text' => 'John'
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://messenger-public-api.cogfy.com/messages/template"
payload := strings.NewReader("{\n \"from\": \"5511999998888\",\n \"to\": \"5599888887777\",\n \"template\": {\n \"name\": \"appointment_reminder\",\n \"language\": {\n \"code\": \"pt_BR\"\n },\n \"components\": [\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"John\"\n }\n ]\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://messenger-public-api.cogfy.com/messages/template")
.header("api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"from\": \"5511999998888\",\n \"to\": \"5599888887777\",\n \"template\": {\n \"name\": \"appointment_reminder\",\n \"language\": {\n \"code\": \"pt_BR\"\n },\n \"components\": [\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"John\"\n }\n ]\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://messenger-public-api.cogfy.com/messages/template")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"from\": \"5511999998888\",\n \"to\": \"5599888887777\",\n \"template\": {\n \"name\": \"appointment_reminder\",\n \"language\": {\n \"code\": \"pt_BR\"\n },\n \"components\": [\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"John\"\n }\n ]\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contact": {
"waId": "<string>",
"waUserId": "<string>"
}
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"code": 123
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"code": 123
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"code": 123
}Messages
Send template message
Sends an approved WhatsApp template message. This is the only message type that reaches recipients that never messaged the business or whose service window is closed.
When the template contains a FLOW button, the request must include the matching button component with sub_type: flow.
POST
/
messages
/
template
Send template message
curl --request POST \
--url https://messenger-public-api.cogfy.com/messages/template \
--header 'Content-Type: application/json' \
--header 'api-key: <api-key>' \
--data '
{
"from": "5511999998888",
"to": "5599888887777",
"template": {
"name": "appointment_reminder",
"language": {
"code": "pt_BR"
},
"components": [
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "John"
}
]
}
]
}
}
'import requests
url = "https://messenger-public-api.cogfy.com/messages/template"
payload = {
"from": "5511999998888",
"to": "5599888887777",
"template": {
"name": "appointment_reminder",
"language": { "code": "pt_BR" },
"components": [
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "John"
}
]
}
]
}
}
headers = {
"api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
from: '5511999998888',
to: '5599888887777',
template: {
name: 'appointment_reminder',
language: {code: 'pt_BR'},
components: [{type: 'body', parameters: [{type: 'text', text: 'John'}]}]
}
})
};
fetch('https://messenger-public-api.cogfy.com/messages/template', 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://messenger-public-api.cogfy.com/messages/template",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'from' => '5511999998888',
'to' => '5599888887777',
'template' => [
'name' => 'appointment_reminder',
'language' => [
'code' => 'pt_BR'
],
'components' => [
[
'type' => 'body',
'parameters' => [
[
'type' => 'text',
'text' => 'John'
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://messenger-public-api.cogfy.com/messages/template"
payload := strings.NewReader("{\n \"from\": \"5511999998888\",\n \"to\": \"5599888887777\",\n \"template\": {\n \"name\": \"appointment_reminder\",\n \"language\": {\n \"code\": \"pt_BR\"\n },\n \"components\": [\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"John\"\n }\n ]\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://messenger-public-api.cogfy.com/messages/template")
.header("api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"from\": \"5511999998888\",\n \"to\": \"5599888887777\",\n \"template\": {\n \"name\": \"appointment_reminder\",\n \"language\": {\n \"code\": \"pt_BR\"\n },\n \"components\": [\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"John\"\n }\n ]\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://messenger-public-api.cogfy.com/messages/template")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"from\": \"5511999998888\",\n \"to\": \"5599888887777\",\n \"template\": {\n \"name\": \"appointment_reminder\",\n \"language\": {\n \"code\": \"pt_BR\"\n },\n \"components\": [\n {\n \"type\": \"body\",\n \"parameters\": [\n {\n \"type\": \"text\",\n \"text\": \"John\"\n }\n ]\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contact": {
"waId": "<string>",
"waUserId": "<string>"
}
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"code": 123
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"code": 123
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"code": 123
}Authorizations
Body
application/json
WhatsApp id of the sender phone number
Minimum string length:
1Show child attributes
Show child attributes
Recipient phone number, digits only, including country code. Takes precedence over recipient when both are set
Minimum string length:
1Recipient BSUID or parent BSUID, used instead of to when the phone number is not known
Minimum string length:
1