API Criar Mensagens Template Meta
🧩 Cria um template da API Oficial e já o envia para análise da Meta.
API: Oficial
Endpoint
https://{BACKEND_URL}/api/waba-templates
Método
POST
Autenticação
Bearer {seutokenaqui}
Payload
{
"name": "confirmacao_pedido",
"category": "UTILITY",
"language": "pt_BR",
"header": "Seu pedido",
"body": "Olá {{1}}, seu pedido {{2}} foi confirmado.",
"footer": "Equipe de Atendimento",
"bodyExamples": ["Maria", "12345"],
"buttons": [
{ "type": "URL", "text": "Acompanhar", "url": "https://exemplo.com/pedido" }
]
}
➡️ “name”: nome do template — letras minúsculas, números e _. Obrigatório.
◽ Se a conexão já tiver um template com esse nome, a plataforma acrescenta _1, _2… e devolve o nome final na resposta.
➡️ “category”: MARKETING, UTILITY ou AUTHENTICATION. Obrigatório.
➡️ “language”: código de idioma da Meta — pt_BR, en_US, es_ES… Obrigatório.
➡️ “body”: o texto da mensagem, com as variáveis escritas como {{1}}, {{2}}. Obrigatório.
➡️ “bodyExamples”: um exemplo para cada variável do body, na ordem. Obrigatório quando o body tem variável — a Meta recusa template com {{1}} sem exemplo.
➡️ “header”: cabeçalho opcional. Pode ser só o texto, como no exemplo, ou um objeto de mídia: { "type": "IMAGE", "media": "https://exemplo.com/banner.jpg" }.
◽ O type aceita TEXT, IMAGE, VIDEO, DOCUMENT ou LOCATION.
◽ Limites da Meta para a mídia de exemplo: imagem JPEG ou PNG até 5 MB, vídeo MP4 ou 3GPP até 16 MB, documento PDF até 100 MB.
➡️ “mediaSample”: opcional — o endereço público da mídia de exemplo do cabeçalho.
➡️ “footer”: rodapé opcional — texto curto, sem variáveis.
➡️ “buttons”: lista opcional de botões. Cada um tem type e text:
◽ QUICK_REPLY — só o texto.
◽ URL — com o campo url, que aceita variável: https://exemplo.com/{{1}}.
◽ PHONE_NUMBER — com o campo phone_number, no formato +5511999998888.
⚠️ A chamada já envia o template para análise da Meta — não existe criar sem enviar. A resposta volta com "status": "PENDING" e o id do template — guarde-o para acompanhar a aprovação. Quem aprova é a Meta, e isso leva de minutos a horas.
⚠️ O template nasce na conexão da chamada: a dona do token, quando se usa o token da Conexão, ou a informada quando se usa o Token da Empresa. Um wabaConnectionId enviado no corpo é ignorado. Essa conexão precisa ser oficial da Meta — com uma conexão por QR Code, a chamada volta com erro 400 dizendo isso.
Utilize o código em requisições HTTPS com ferramentas como cURL ou bibliotecas de integração.
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://{BACKEND_URL}/api/waba-templates',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"name": "confirmacao_pedido",
"category": "UTILITY",
"language": "pt_BR",
"header": "Seu pedido",
"body": "Olá {{1}}, seu pedido {{2}} foi confirmado.",
"footer": "Equipe de Atendimento",
"bodyExamples": ["Maria", "12345"],
"buttons": [
{ "type": "URL", "text": "Acompanhar", "url": "https://exemplo.com/pedido" }
]
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer {seutokenaqui}' //Token cadastrado na conexão
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;