Templates
Templates are pre‑approved message formats required to start conversations with customers. This API creates a template locally and submits it to Meta for approval in one call, then lets you track its status.
Required scopes: templates.read for reads/sync, templates.write for create/delete.
List approved templates
GET /api/v1/templates
Required scope: templates.read
Returns approved templates ready to send, with their variables.
{
"success": true,
"templates": [
{ "name": "order_update", "language": "en_US", "category": "utility", "variables": ["1", "2"] }
],
"totalTemplates": 1
}
Create & submit a template
Creates the template and submits it to Meta for approval.
POST /api/v1/templates
Required scope: templates.write
Request Body:
{
"name": "order_update",
"category": "UTILITY",
"language": "en_US",
"body": "Hi {{1}}, your order {{2}} has shipped."
}
| Field | Type | Description |
|---|---|---|
name |
string | Lowercase letters, digits, and underscores only |
category |
string | MARKETING, UTILITY, or AUTHENTICATION (default UTILITY) |
language |
string | Language code (default en_US) |
body |
string | Template body; use {{1}}, {{2}} for variables |
Response:
{
"success": true,
"template": { "id": 12, "name": "order_update", "status": "pending", "whatsappStatus": "PENDING" },
"meta": { "id": "1963056624506103", "status": "PENDING" }
}
cURL Example:
curl -X POST "https://waflow.edesy.in/api/v1/templates" \
-H "X-API-Key: wc_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "order_update",
"category": "UTILITY",
"language": "en_US",
"body": "Hi {{1}}, your order {{2}} has shipped."
}'
Note: Requires a connected WhatsApp account (otherwise
400 WHATSAPP_NOT_CONFIGURED). Newly submitted templates start asPENDING; Meta typically reviews within minutes to a few hours. If Meta rejects the submission the endpoint returns400 META_SUBMISSION_FAILEDwith the reason, and keeps the local draft so you can fix and resubmit.
Get a template
GET /api/v1/templates/{id}
Required scope: templates.read
Returns the full template including its approval status (whatsappStatus: PENDING, APPROVED, or REJECTED).
Sync a template's status from Meta
Refreshes the local approval status from Meta (e.g. after submission, to check if it's been approved).
POST /api/v1/templates/{id}/sync
Required scope: templates.read
cURL Example:
curl -X POST "https://waflow.edesy.in/api/v1/templates/12/sync" \
-H "X-API-Key: wc_your_api_key"
Delete a template
DELETE /api/v1/templates/{id}
Required scope: templates.write
Response:
{ "success": true }