Menu

Guias

Enviar mensagens

Texto, template e botões pela API, com a janela de 24 h e os erros comuns.

Ver em Markdown

Antes de enviar

O WhatsApp tem duas regras da Meta que a API aplica igual à tela:

  • Janela de 24 h: até 24 h depois da última mensagem do contato, dá para mandar texto, botões ou lista. A conversa mostra isso em window.open e window.expires_at.
  • Fora da janela, só template aprovado (GET /v1/templates?status=approved).

Quem pediu para sair (opt-out) não recebe template; responde-se só se ele escrever de novo.

Texto

curl -X POST https://api.converzap.com/v1/conversations/CONVERSA_ID/messages \
  -H "Authorization: Bearer czk_live_SUA_CHAVE" \
  -H "Idempotency-Key: 6c1f0e2a-5b7d-4c1e-9b1a-1f2e3d4c5b6a" \
  -H "Content-Type: application/json" \
  -d '{ "type": "text", "text": "Oi, Ana! Seu pedido saiu para entrega." }'

Template (fora da janela)

{
  "type": "template",
  "template": {
    "name": "lembrete_consulta",
    "language": "pt_BR",
    "params": { "body": ["Ana", "amanhã às 15h"] }
  }
}

Variáveis: body como lista ({{1}}, {{2}}…) ou objeto (nomeadas: { "nome": "Ana" }), header igual, buttons: { "0": "sufixo-da-url" }. Também aceita template.id no lugar de nome + idioma.

Botões e lista

{
  "type": "interactive",
  "interactive": {
    "type": "buttons",
    "body": "Confirma a consulta de amanhã?",
    "buttons": [{ "id": "sim", "title": "Confirmo" }, { "id": "nao", "title": "Remarcar" }]
  }
}

A resposta do contato chega como mensagem de texto com o título do botão (e no webhook message.received).

O que acontece ao enviar

  • Quem envia vira o responsável da conversa, se ela não tinha um.
  • O agente de IA do número registra a fala humana e pausa, se estiver configurado para isso.
  • A mensagem aparece na caixa de entrada como enviada pelo usuário da chave.

Erros comuns

codeO que fazer
outside_24h_windowUse um template aprovado.
opt_outO contato pediu para sair; espere ele escrever.
template_invalidNome/idioma errado ou template não aprovado para este número.
template_param_missingFalta uma variável; o detail diz qual.
number_disconnected / number_blockedNúmero desconectado ou travado pela Meta; veja a Saúde do WhatsApp no app.
meta_errorA Meta recusou; o detail traz a mensagem dela.

Sempre envie Idempotency-Key: se a rede cair e você repetir, a mensagem não sai duas vezes.