POST /v1/wa/messages, com a mesma assinatura de requisição. A Zapster converte o seu payload para o formato da Cloud API da Meta automaticamente.
Antes de começar
- Você precisa de uma instância WABA conectada.
- Mensagens livres (texto, mídia, botões) só são entregues dentro da janela de conversa de 24 horas, que abre quando o cliente manda mensagem para o seu número. Fora da janela, use um template aprovado pela Meta.
- Instâncias WABA não enviam para grupos. Se precisar de grupos, use uma instância não oficial. Veja o comparativo em WABA vs não oficial.
YOUR_API_TOKEN pelo seu token de API e YOUR_INSTANCE_ID pelo ID da instância WABA.
As mensagens livres (texto, mídia e botões) enviadas por uma instância oficial são gratuitas até 30 de setembro de 2026. A partir de 1 de outubro de 2026, a Meta passa a cobrar por elas. Entenda o que muda em Cobrança de mensagens no WhatsApp oficial (WABA).
Texto simples
Mídia (imagem, vídeo ou documento)
Envie a mídia por URL pública ou base64 no campomedia. O tipo (imagem, vídeo, documento) é detectado automaticamente a partir do arquivo. Para documentos, você pode informar fileName para controlar o nome exibido no WhatsApp.
Botões interativos
Em WABA, botões viram mensagens interativas da Cloud API e seguem as regras da Meta: até 3 botõesreply, ou exatamente 1 botão url, sem misturar os dois tipos. Botões call e copyable não existem em mensagem de sessão (veja Erros comuns). A matriz completa está em Mensagem com botões.
Quando você envia media junto com botões, a mídia vira o cabeçalho da mensagem interativa (imagem, vídeo ou documento; áudio não é suportado). Se enviar media.caption e text juntos, o caption tem prioridade e vira o corpo da mensagem.
Botões de resposta rápida (reply) com imagem
Botão de link (url) com imagem
Lembre: em WABA só pode existir 1 botãourl na mensagem, e ele não pode ser combinado com botões reply.
Template (fora da janela de 24h)
Templates precisam ser criados e aprovados na Meta antes do envio. O campotemplate é mutuamente exclusivo com text e media.
O objeto
template é um espelho do formato da Meta. A Zapster embrulha apenas name e language (que vira { "code": ... }) e repassa o array components exatamente como você o envia para a Cloud API, sem reinterpretar. Por isso, use o mesmo formato da documentação de templates da Cloud API da Meta.components descreve as partes do template que recebem valores no envio:
header: cabeçalho com mídia (imagem, vídeo ou documento) ou com uma variável de texto.body: o corpo, onde entram as variáveis do texto aprovado.button: os botões que têm valor dinâmico, como opayloadde uma resposta rápida ou o sufixo de uma URL.
{{1}}, {{2}}, preenchidas pela ordem do array parameters) ou nomeadas ({{customer_name}}, preenchidas por parameter_name). Cada template usa um estilo ou o outro, nunca os dois juntos. Os valores enviados precisam corresponder ao que o template aprovado espera.
Exemplo simples (variável posicional)
Com header, variáveis posicionais e botões
Este template tem cabeçalho de imagem, duas variáveis posicionais no corpo ({{1}} e {{2}}) e dois botões: um de resposta rápida (com payload) e um de URL dinâmica (o texto vira o sufixo anexado à URL base do template). O index do botão segue a ordem em que ele aparece no template aprovado.
Variáveis nomeadas
Quando o template foi aprovado com variáveis nomeadas, cada parâmetro leva umparameter_name além de type e text. O restante da requisição (o recipient, os headers, o name e o language) é igual aos exemplos acima. Muda apenas o conteúdo de components:
components (variáveis nomeadas)
Não misture variáveis posicionais e nomeadas no mesmo template. Use
parameter_name apenas quando o template foi aprovado com variáveis nomeadas; caso contrário, use a forma posicional (só type e text, na ordem em que aparecem).Cobrança das mensagens
O canal oficial (WABA) é pago, e quem cobra pelas mensagens é a Meta, não a Zapster. As mensagens livres deste guia são gratuitas até 30 de setembro de 2026 e passam a ser cobradas a partir de 1 de outubro de 2026. Os templates seguem com a cobrança própria deles. Para entender o que muda em 2026, as datas e como o preço é definido, veja Cobrança de mensagens no WhatsApp oficial (WABA).Erros comuns
Quando o payload usa um recurso que a Cloud API não suporta, a Zapster rejeita a requisição na hora com um erro400 explicando o motivo. Nada é descartado ou adaptado silenciosamente.
Próximos passos
- Mensagem com botões para a matriz completa de suporte por tipo de conexão
- Enviar mensagens para BSUID para responder a usuários com telefone oculto (username / BSUID)
- WABA vs não oficial para escolher o tipo de instância
- Conectando uma instância WABA