WhatsApp Templates NooviChat custom
Gerencie templates do WhatsApp Business (Marketing, Utility, Authentication) diretamente pela API do NooviChat — sem entrar no Facebook Business Manager.
Visao Geral
Pre-requisitos
- Inbox do tipo
Channel::Whatsappcomprovider = "whatsapp_cloud" - Credenciais Meta na inbox (
provider_config.api_key+business_account_id) - Agent API token valido (header
api_access_token) - Operacoes de escrita (create/update/delete/sync) exigem role administrator
Endpoint Base
https://<sua-instancia>/api/v1/accounts/:account_id/whatsapp_templatesAutenticacao
api_access_token: <seu-agent-token>
Content-Type: application/jsonListar Templates
/api/v1/accounts/:account_id/whatsapp_templatesLista todos os templates do inbox (permitido para qualquer membro autenticado da conta)
Query params
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
inbox_id(query) | integer | Sim | ID do inbox WhatsApp Cloud |
status(query) | string | Nao | APPROVED | PENDING | REJECTED | IN_APPEAL |
category(query) | string | Nao | MARKETING | UTILITY | AUTHENTICATION |
search(query) | string | Nao | Busca fulltext |
limit(query) | integer | Nao | Max 100 (default) |
Exemplo
curl -s "https://<instancia>/api/v1/accounts/4/whatsapp_templates?inbox_id=3&status=APPROVED" \
-H "api_access_token: $NOOVICHAT_AGENT_TOKEN"{
"data": [
{
"id": "1234567890",
"name": "welcome_marketing",
"language": "pt_BR",
"status": "APPROVED",
"category": "MARKETING",
"components": [
{ "type": "HEADER", "format": "TEXT", "text": "Ola, {{1}}!" },
{ "type": "BODY", "text": "Bem-vindo a nossa loja." },
{ "type": "FOOTER", "text": "Noovi" }
]
}
],
"paging": { "cursors": { "before": "...", "after": "..." } }
}Obter Template
/api/v1/accounts/:account_id/whatsapp_templates/:idRetorna um template pelo ID Meta (nao pelo nome). Requer inbox_id na query.
Criar Template
/api/v1/accounts/:account_id/whatsapp_templatesSubmete novo template para aprovacao Meta. Admin-only.
Validacao server-side (antes de bater na Meta): name lowercase alfanumerico + underscores (max 512), language BCP-47 (pt_BR, en_US), category MARKETING|UTILITY|AUTHENTICATION, components max 10 (BODY text max 1024, HEADER/FOOTER max 60).
curl -s -X POST "https://<instancia>/api/v1/accounts/4/whatsapp_templates" \
-H "api_access_token: $NOOVICHAT_AGENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"inbox_id": 3,
"template": {
"name": "order_shipped",
"language": "pt_BR",
"category": "UTILITY",
"components": [
{ "type": "BODY", "text": "Seu pedido {{1}} foi enviado!" }
]
}
}'{
"id": "999888777",
"status": "PENDING",
"category": "UTILITY"
}Atualizar Template
/api/v1/accounts/:account_id/whatsapp_templates/:idMeta permite alterar apenas category e components de templates aprovados. Admin-only.
Deletar Template
/api/v1/accounts/:account_id/whatsapp_templates/:idRemocao por nome (limitacao Meta). Passe template_name na query. :id pode ser 0. Admin-only.
Sincronizar com Meta
/api/v1/accounts/:account_id/whatsapp_templates/syncForca refresh imediato do cache local com estado atual na Meta. Admin-only.
curl -s -X POST "https://<instancia>/api/v1/accounts/4/whatsapp_templates/sync" \
-H "api_access_token: $NOOVICHAT_AGENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"inbox_id": 3}'Rate Limits
Throttled por account_id para evitar abuse que comprometa a quota Meta da sua conta WhatsApp Business:
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
create (POST) | 10 / hora | Nao | Criacao de templates novos |
update (PUT) | 30 / hora | Nao | Edicao de category/components |
delete (DELETE) | 30 / hora | Nao | Remocao |
sync (POST /sync) | 5 / 5 min | Nao | Refresh de cache |
list + get (GET) | ilimitado | Nao | Leitura (cache Meta) |
Erros comuns
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
401 | Unauthorized | Nao | Token invalido ou ausente |
403 | Forbidden | Nao | Nao e admin OU inbox nao e WhatsApp Cloud |
404 | Not Found | Nao | Inbox fora da conta (multi-tenant) OU id invalido na Meta |
422 | Unprocessable | Nao | Validacao de payload falhou (category/language/name/components) |
429 | Too Many Requests | Nao | Rate limit atingido |
502 | Bad Gateway | Nao | Falha de comunicacao com Meta Graph API |
whatsappTemplate com as 6 operacoes (list, get, create, update, delete, sync) para uso direto em workflows.