Templates
/api/v1/channels/{id}/templatesLista os templates do canal
Repassa a lista direto da Meta (message_templates), sem cache local — o status refletido é o mais atual possível. Exige que o canal tenha WABA conectada; senão responde 409 CHANNEL_NOT_CONNECTED. O token hub_ch_... do canal também autentica esta chamada, mas nunca autoriza ler templates de outro canal.
- Autenticação
- Sessão do painel, Chave de API, Token do canal
- Escopo
- templates:read
- Limite
- 120 requisições por minuto por organização e credencial
Parâmetros de caminho
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | UUID | Sim | Identificador do canal. |
curl https://crprohub.com/api/v1/channels/CHANNEL_UUID/templates \ -H "Authorization: Bearer hub_pk_EXEMPLO_NAO_REAL"
{
"data": {
"templates": [
{
"id": "9876543210987654",
"name": "boas_vindas",
"language": "pt_BR",
"category": "UTILITY",
"status": "APPROVED"
}
],
"paging": null
}
}/api/v1/channels/{id}/templatesCria um template na Meta
Cria o template direto na Meta e espelha uma cópia local (por nome + idioma); o status inicial normalmente é PENDING — o template não pode ser usado em mensagens até a Meta aprovar. O corpo inteiro não pode passar de 64 KB, senão responde 400 INVALID_TEMPLATE. O token hub_ch_... do canal também autentica esta chamada, mas nunca autoriza criar template em outro canal.
- Autenticação
- Sessão do painel, Chave de API, Token do canal
- Escopo
- templates:write
- Limite
- 120 requisições por minuto por organização e credencial
Parâmetros de caminho
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | UUID | Sim | Identificador do canal. |
Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Sim | Só letras minúsculas, dígitos e underscore, até 512 caracteres (regex ^[a-z0-9_]+$). |
| language | string | Sim | Código de idioma da Meta, ex.: pt_BR ou en. |
| category | enum | Sim | MARKETING, UTILITY ou AUTHENTICATION. |
| components | lista de objetos | Sim | De 1 a 20 componentes. Cada um: { type: HEADER|BODY|FOOTER|BUTTONS, format?: TEXT|IMAGE|VIDEO|DOCUMENT|LOCATION, text?: string, example?: objeto, buttons?: lista de até 10 { type: QUICK_REPLY|URL|PHONE_NUMBER|COPY_CODE|OTP, text?, url?, phone_number?, example?, otp_type? } }. |
| allow_category_change | booleano | Não | Permite que a Meta reclassifique a categoria automaticamente durante a revisão. |
curl -X POST https://crprohub.com/api/v1/channels/CHANNEL_UUID/templates \
-H "Authorization: Bearer hub_pk_EXEMPLO_NAO_REAL" \
-H "Content-Type: application/json" \
-d '{
"name": "boas_vindas",
"language": "pt_BR",
"category": "UTILITY",
"components": [
{ "type": "BODY", "text": "Olá {{1}}, bem-vindo!" }
]
}'{
"data": {
"template": {
"id": "9876543210987654",
"status": "PENDING",
"category": "UTILITY"
}
}
}/api/v1/channels/{id}/templates/{templateId}Remove um template
Só remove templates que foram criados por esta API (o POST /templates é o único que grava a cópia local): se não houver uma cópia local com esse templateId para este canal, responde 404 mesmo que o template exista na Meta. A remoção é direto na Meta e não é reversível. O token hub_ch_... do canal também autentica esta chamada, mas nunca autoriza remover template de outro canal.
- Autenticação
- Sessão do painel, Chave de API, Token do canal
- Escopo
- templates:write
- Limite
- 120 requisições por minuto por organização e credencial
Parâmetros de caminho
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | UUID | Sim | Identificador do canal. |
| templateId | string | Sim | ID numérico do template na Meta (5 a 30 dígitos), não o "name" do template. |
curl -X DELETE https://crprohub.com/api/v1/channels/CHANNEL_UUID/templates/9876543210987654 \ -H "Authorization: Bearer hub_pk_EXEMPLO_NAO_REAL"
{
"data": {
"deleted": true
}
}