Manage templates through the API
List, create, update and re-sync WhatsApp templates from your own code.
List, create, switch on and off, and re-sync your WhatsApp templates from your own code.
Before you start
An API key and your Organisation API URL — see Authentication.
What a template is made of — see Templates, placeholders and components.
List your templates
GET /org/<ORG_ID>/templates/list
curl "https://channel360.co.za/v1.1/org/<ORG_ID>/templates/list?enabled=true" \
-H "Authorization: Bearer <API_KEY>"const response = await fetch(
"https://channel360.co.za/v1.1/org/<ORG_ID>/templates/list?enabled=true",
{ headers: { Authorization: "Bearer <API_KEY>" } }
);
console.log(await response.json());import requests
response = requests.get(
"https://channel360.co.za/v1.1/org/<ORG_ID>/templates/list",
params={"enabled": "true"},
headers={"Authorization": "Bearer <API_KEY>"},
)
print(response.json())The response is a JSON array of templates, not wrapped in an object.
enabled
true returns only enabled templates. Any other value returns the disabled ones.
filter
Only configured is accepted. Any other value returns 400.
To send a template you need its name, language, a status of APPROVED, and the placeholders in its components. To update it you need its id. From template to request shows how a listed template becomes a send request.
Get one template by name
GET /org/<ORG_ID>/templates/<TEMPLATE_NAME>
The path takes the template's name, not its ID. If you have the same name in two languages, the first match is returned. If there is no match, the response is 404.
Create a template
POST /org/<ORG_ID>/whatsapp/templates
name
Yes
Lowercase letters, digits and underscores only. Must be unique for its language.
description
Yes
What the template is for.
namespace
Yes
Use "default".
language
Yes
The language code, such as en_US. It must match the template's text, or Meta rejects it.
enabled
Yes
true or false.
category
Yes
MARKETING, UTILITY or AUTHENTICATION.
components
Yes
The message structure: header, body, footer and buttons. Rules are in the table below.
HEADER
No
Format TEXT, IMAGE, VIDEO or DOCUMENT. Up to 60 characters. At most one placeholder.
BODY
Yes
Up to 1,024 characters. Can have several placeholders. Needs an example when it has placeholders.
FOOTER
No
Up to 60 characters.
BUTTONS
No
Button text up to 25 characters. At most one placeholder. Needs an example when it has one.
Media headers need an example file link. Host the file on your own storage at a public https:// link — WhatsApp downloads it from there, so it must open without a login. Media limits: video video/mp4 (H.264 video, AAC audio), image image/jpeg or image/png, document application/pdf or text/csv; 15 MB each.
Authentication templates have their own rules:
add_security_recommendation
Optional. true adds the fixed text "For your security, do not share this code."
code_expiration_minutes
Optional. Adds a footer saying when the code expires. Whole minutes, from 1 to 90.
Button type
Required. Must be OTP.
A successful request returns 201:
The template is PENDING until WhatsApp approves or rejects it. Subscribe to the template:status webhook event to be told when it changes (see Receive delivery updates), or list your templates again.
Meta's supported languages · Meta's template guidelines
Switch templates on or off, or edit their description
One template: PUT /org/<ORG_ID>/templates/<TEMPLATE_ID>. <TEMPLATE_ID> is the id from the list response.
description
string
namespace
string
enabled
boolean
tags
object
Send only the fields you want to change. Other fields are ignored.
You cannot change a template's components or structure after it is created. Create a new template instead.
Updates only affect new campaigns. A campaign that was already created keeps using the original template version.
Several templates: PUT /org/<ORG_ID>/templates
Returns 201 with { "message": "Successfully updated templates" }. IDs that are not in your organisation are skipped.
Re-sync templates from WhatsApp
POST /org/<ORG_ID>/whatsapp/templates/refresh — no body.
Use it after creating or editing a template directly in Meta's tools, so Channel360 sees the change.
data lists the IDs of templates that were updated and added.
What can go wrong
400 on create, naming a field
A required field is missing, or name has invalid characters.
Fix the named field.
400 Organization is not connected to Whatsapp
WhatsApp is not connected for this organisation.
Contact Channel360 support. Create the template in the web app meanwhile.
The template stays PENDING
WhatsApp has not reviewed it yet.
Wait for the template:status event.
The template is REJECTED
It breaks Meta's rules.
Read Meta's template guidelines, then create a corrected copy with a new name.
Next
Send a template notificationTemplates, placeholders and componentsLast updated
Was this helpful?