Templates
Overview
WhatsApp message templates. These are approved by Meta, not by Orqestra — creating one here submits it for review, and it cannot be sent until Meta approves it. Sync pulls the current approval status back from Meta.
4 endpoints. Requires templates.view or templates.manage on the token.
| Method | Path | What it does |
|---|---|---|
GET | /templates | List templates |
POST | /templates | Create a template |
DELETE | /templates/{id} | Delete a template |
POST | /templates/sync | Sync templates from Meta |
Endpoints
GET /templates
List templates
List available WhatsApp templates synced from Meta. Use `channelId` to list templates for a specific channel. Requires `templates.view` permission.
Requires the templates.view permission.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | optional | Approximate number to return |
channelId | query | string | optional | OrgChannel ID to list templates for a specific channel |
Example
curl -X GET "https://orqestra.id/api/v2/templates" \
-H "Authorization: Bearer $ORQESTRA_TOKEN"
Responds with 200 · 401 · 403. Try it in the playground →
POST /templates
Create a template
Create a new WhatsApp message template on Meta. Use `channelId` to target a specific channel. Requires `templates.manage` permission.
Requires the templates.manage permission.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | required | Template name (lowercase, underscores) |
category | MARKETING · UTILITY · AUTHENTICATION | required | Template category |
language | string | optional | Template language code Defaults to "en_US". |
components | array of any | required | Template components (header, body, footer, buttons) |
allowCategoryChange | boolean | optional | Allow Meta to recategorize the template |
channelId | string | optional | OrgChannel ID. If omitted, uses org-level WABA credentials. |
Example
curl -X POST "https://orqestra.id/api/v2/templates" \
-H "Authorization: Bearer $ORQESTRA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Example",
"category": "MARKETING",
"components": [
"string"
]
}'
Responds with 200 · 400 · 401 · 403. Try it in the playground →
DELETE /templates/{id}
Delete a template
Delete a WhatsApp message template from Meta by ID and name. Use `channelId` to target a specific channel. Requires `templates.manage` permission.
Requires the templates.manage permission.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | required | Template ID (hsm_id) |
name | query | string | required | Template name (required by Meta API) |
channelId | query | string | optional | OrgChannel ID for channel-specific WABA credentials |
Example
curl -X DELETE "https://orqestra.id/api/v2/templates/$id?name=value" \
-H "Authorization: Bearer $ORQESTRA_TOKEN"
Responds with 200 · 400 · 401 · 403. Try it in the playground →
POST /templates/sync
Sync templates from Meta
Pull the latest template catalog from Meta and refresh the local cache. Pass `channelId` in the body to sync a specific channel. Requires `templates.manage` permission.
Requires the templates.manage permission.
Example
curl -X POST "https://orqestra.id/api/v2/templates/sync" \
-H "Authorization: Bearer $ORQESTRA_TOKEN"
Responds with 200 · 400 · 401 · 403. Try it in the playground →