List WhatsApp templates
GET
https://api.norreach.app/v1/whatsapp-templatesThe workspace's WhatsApp templates as last synced: name, language, category, WhatsApp's review state (status — only APPROVED templates can be sent, POST /messages template), why one was rejected, its quality and its body. Filter by status. POST /whatsapp-templates/sync reads the review states again.
templates:readOperation id: list_whatsapp_templates
GET/whatsapp-templates
curl -X GET "https://api.norreach.app/v1/whatsapp-templates" \
-H "Authorization: Bearer $NORREACH_API_KEY"List WhatsApp templates
{
"object": "list",
"data": [
{
"id": "6f7a8b9c-0d1e-4f2a-9b3c-4d5e6f7a8b9c",
"object": "whatsapp_template",
"name": "follow_up",
"language": "sv",
"category": "MARKETING",
"status": "APPROVED",
"rejection_reason": null,
"quality_score": "GREEN",
"body": "Hej {{1}}, har du tid för ett samtal?",
"variable_count": 1,
"synced_at": "2026-11-05T08:00:00.000Z"
}
],
"has_more": false,
"next_cursor": null
}Authorizations
Authorizationstringheaderrequired
Bearer authentication: send Authorization: Bearer <key>, with an API key or an OAuth access token. The key needs the scope templates:read. API keys and scopes
Query parameters
statusstringquery
Response
200application/json— List WhatsApp templates
object"list"required
dataobject[]required
Show child attributesHide child attributes
data[].idstring (uuid)required
An id (UUID).
data[].object"whatsapp_template"required
data[].namestringrequired
data[].languagestringrequired
data[].categorystring | nullrequired
data[].statusstring | nullrequired
WhatsApp's review state: PENDING, APPROVED, REJECTED, PAUSED, DISABLED … — only APPROVED templates can be sent.
data[].rejection_reasonstring | nullrequired
data[].quality_scorestring | nullrequired
data[].bodystring | nullrequired
data[].variable_countinteger | nullrequired
data[].synced_atstring | nullrequired
has_morebooleanrequired
next_cursorstring | nullrequired
Errors
Errors are application/problem+json with a stable code.
| Status | Code | Meaning |
|---|---|---|
| 400 | bad_request | The request couldn't be read. |
| 400 | unknown_field | The request has a field this operation doesn't know. |
| 401 | unauthorized | A valid API key is required. |
| 403 | insufficient_scope | This API key doesn't have the scope this operation needs. |
| 403 | feature_not_enabled | The API isn't switched on for this workspace. |
| 429 | rate_limited | Too many requests. Slow down and try again. |
| 500 | server_error | Something went wrong on our side. |
| 503 | unavailable | The API isn't available right now. Try again shortly. |