curl --request POST \
--url https://{tenant_domain}/third-party/v1/whatsapp/templates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"language": "de",
"friendly_name": "<string>",
"group": "<string>",
"components": [
{}
],
"agent_id": 123
}
'import requests
url = "https://{tenant_domain}/third-party/v1/whatsapp/templates"
payload = {
"name": "<string>",
"language": "de",
"friendly_name": "<string>",
"group": "<string>",
"components": [{}],
"agent_id": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
language: 'de',
friendly_name: '<string>',
group: '<string>',
components: [{}],
agent_id: 123
})
};
fetch('https://{tenant_domain}/third-party/v1/whatsapp/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://{tenant_domain}/third-party/v1/whatsapp/templates",
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([
'name' => '<string>',
'language' => 'de',
'friendly_name' => '<string>',
'group' => '<string>',
'components' => [
[
]
],
'agent_id' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://{tenant_domain}/third-party/v1/whatsapp/templates"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"language\": \"de\",\n \"friendly_name\": \"<string>\",\n \"group\": \"<string>\",\n \"components\": [\n {}\n ],\n \"agent_id\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://{tenant_domain}/third-party/v1/whatsapp/templates")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"language\": \"de\",\n \"friendly_name\": \"<string>\",\n \"group\": \"<string>\",\n \"components\": [\n {}\n ],\n \"agent_id\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant_domain}/third-party/v1/whatsapp/templates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"language\": \"de\",\n \"friendly_name\": \"<string>\",\n \"group\": \"<string>\",\n \"components\": [\n {}\n ],\n \"agent_id\": 123\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 123,
"agent_ids": [
123
],
"group": "<string>",
"template_id": "<string>",
"namespace": "<string>",
"name": "<string>",
"friendly_name": "<string>",
"language": "<string>",
"category": "AUTHENTICATION",
"status": "created",
"components": [
{}
]
}
}Submit a WhatsApp template for approval. Note: it is not possible to update existing templates via API.
You can manually update templates by visiting the Meta WhatsApp manager.
curl --request POST \
--url https://{tenant_domain}/third-party/v1/whatsapp/templates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"language": "de",
"friendly_name": "<string>",
"group": "<string>",
"components": [
{}
],
"agent_id": 123
}
'import requests
url = "https://{tenant_domain}/third-party/v1/whatsapp/templates"
payload = {
"name": "<string>",
"language": "de",
"friendly_name": "<string>",
"group": "<string>",
"components": [{}],
"agent_id": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
language: 'de',
friendly_name: '<string>',
group: '<string>',
components: [{}],
agent_id: 123
})
};
fetch('https://{tenant_domain}/third-party/v1/whatsapp/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://{tenant_domain}/third-party/v1/whatsapp/templates",
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([
'name' => '<string>',
'language' => 'de',
'friendly_name' => '<string>',
'group' => '<string>',
'components' => [
[
]
],
'agent_id' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://{tenant_domain}/third-party/v1/whatsapp/templates"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"language\": \"de\",\n \"friendly_name\": \"<string>\",\n \"group\": \"<string>\",\n \"components\": [\n {}\n ],\n \"agent_id\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://{tenant_domain}/third-party/v1/whatsapp/templates")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"language\": \"de\",\n \"friendly_name\": \"<string>\",\n \"group\": \"<string>\",\n \"components\": [\n {}\n ],\n \"agent_id\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant_domain}/third-party/v1/whatsapp/templates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"language\": \"de\",\n \"friendly_name\": \"<string>\",\n \"group\": \"<string>\",\n \"components\": [\n {}\n ],\n \"agent_id\": 123\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 123,
"agent_ids": [
123
],
"group": "<string>",
"template_id": "<string>",
"namespace": "<string>",
"name": "<string>",
"friendly_name": "<string>",
"language": "<string>",
"category": "AUTHENTICATION",
"status": "created",
"components": [
{}
]
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Name of template. Must be lowercase, allowed characters are a-z, 0-9 and underscores.
Language of template.
"de"
Optional name for template without the technical naming rules of the regular name. Used for display.
Optional group for filtering later. Reserved group names are: system, restart
Category of template. Determines cost of sending message with this template.
AUTHENTICATION, MARKETING, UTILITY Parts of the template (header, body, footer, buttons) with their content. Variables like {{1}} can be used per part to make template dynamic. Format is defined by WhatsApp. See examples on https://developers.facebook.com/docs/whatsapp/cloud-api/guides/send-message-templates
Optional ID of WhatsApp agent to use for creating the template. Defaults to first available agent.
Response
Success
Template submitted to WhatsApp for approval. Necessary to create business initiated conversations.
Show child attributes
Show child attributes