Skip to main content
Templates são o único formato que o WhatsApp entrega fora da janela de 24 horas. Todo template precisa ser aprovado pela Meta antes de ser enviado. Pela API você cobre o ciclo inteiro: criar, acompanhar a aprovação, editar e excluir.
1

Crie o template

POST /v1/whatsapp/templates com nome, idioma, categoria e componentes. Normalmente o template nasce com status: "PENDING" — a resposta traz o status lido na Meta.
2

Aguarde a aprovação

A análise da Meta leva de minutos a 24 horas. Assine o webhook whatsapp.template.updated ou consulte GET /v1/whatsapp/templates/{id}.
3

Envie

Com status: "APPROVED", use o name e o language do template em POST /v1/whatsapp/messages — veja Envio de mensagens.

Criar um template

O corpo segue o formato da Meta: o mesmo components que GET /v1/whatsapp/templates devolve.
A resposta é o template, com o id que você usa nas demais rotas:
A Meta decide a categoria. Se ela entender que um template pedido como UTILITY é promocional, ele é aprovado como MARKETING — o que muda o preço de cada envio. Confira sempre o category da resposta e do evento de aprovação.
Nome e idioma são únicos na conta: repetir a criação retorna 409 template_already_exists. Por isso a criação não usa Idempotency-Key.

Cabeçalho de imagem, vídeo ou documento

Para aprovar um cabeçalho de mídia, a Meta exige um arquivo de exemplo. Envie uma URL pública do arquivo em example.header_handle — a Superlead baixa e entrega à Meta:
A URL precisa ser https, pública e direta (sem login, sem página intermediária, sem porta nem usuário e senha no endereço), num host com endereço IPv4 e servindo o arquivo sem compressão. São seguidos até 3 redirecionamentos, e o download precisa terminar em 15 segundos. Se o arquivo não puder ser baixado ou não for aceito, a criação retorna 422 media_unsupported com o motivo na mensagem. Já uma URL http:// em header_handle nem chega a ser baixada: retorna 400 invalid_request, com o caminho do campo em details (por exemplo components.0.example.header_handle.0), e não media_unsupported.
Esse arquivo é só o exemplo usado na aprovação. A mídia de cada envio é informada na hora, em POST /v1/whatsapp/messages.

Acompanhar a aprovação

Consulte o estado atual a qualquer momento:
A Meta pode devolver outros valores (IN_APPEAL, PENDING_DELETION…). Trate os que não conhecer como “não enviável”. Para ser avisado em vez de consultar, assine o evento whatsapp.template.updated — veja Webhooks.

Editar

PATCH /v1/whatsapp/templates/{id} aceita category e/ou components:
  • components substitui a lista inteira. Mande o template completo como deve ficar, não só o que mudou. Num template com cabeçalho de mídia, reenvie o cabeçalho com uma URL do arquivo de exemplo — pode ser a própria URL que GET /v1/whatsapp/templates/{id} devolve em example.header_handle.
  • Nome e idioma não mudam. São a identidade do template; para outro nome, crie outro template.
  • Só APPROVED, REJECTED e PAUSED aceitam edição. Em análise, a edição retorna 409 template_status_conflict.
  • Limites da Meta para template aprovado: 1 edição a cada 24 horas e 10 em 30 dias; a categoria de um aprovado não pode mudar. Recusados e pausados não têm limite.
A resposta traz o status que a Meta atribuiu depois da edição — acompanhe o resultado final pelo webhook.

Excluir

  • Exclui só o idioma daquele id. Versões do mesmo nome em outros idiomas continuam.
  • É bloqueada enquanto houver campanha agendada, em andamento ou pausada usando o template: 409 template_in_use, com até 10 campanhas em details.
  • Template desabilitado pela Meta não pode ser excluído: 409 template_status_conflict.
A exclusão não pode ser desfeita, e a Meta impede recriar por 30 dias o nome de um template aprovado que foi excluído.

Erros desta área

Quando a Meta recusa a definição e envia uma explicação, ela vem em details, com path: "meta":
O catálogo completo está em Tratamento de erros.