Skip to main content
Duas rotas mandam mensagem de texto para um lead: Para imagem, áudio, vídeo e arquivo, veja Mídia.
Estas rotas são para um lead por vez, numa integração (confirmação de pedido, lembrete de consulta). Mandar em loop para uma lista é campanha: use Campanhas. Envio em loop pela API derruba a qualidade do número.

POST /messages/text

Envia uma mensagem de texto livre. O envio é feito na hora: o 201 quer dizer que o WhatsApp aceitou a mensagem.

Corpo

Resposta: 201

Erros

Lista completa em Erros.

Exemplo

O que acontece no projeto

  • A mensagem aparece no chat do lead, do lado do agente (não como mensagem de um humano da equipe).
  • Não pausa a IA. Se o lead responder, o agente responde. Para assumir a conversa, pause a IA antes pelo Controle da IA.
  • Não agenda automações (follow-up, transbordo, webhook por inatividade). Ver Quando as automações disparam.
  • Se o lead estava com o atendimento encerrado, o envio abre uma conversa nova.
  • Quando a mensagem sai, os webhooks recebem API_KEY_INTERACTION.

POST /messages/template

Envia um template da Meta aprovado. Na conexão não oficial, envia o template de texto salvo no painel (sem aprovação). Se o número ainda não é lead do projeto, o lead é criado no envio.

Corpo

Não há campo para os valores das variáveis: elas são preenchidas com os dados do lead. Para um template com propriedade, preencha a propriedade antes pela API de leads (PATCH /leads/{numero}/properties). Lead criado neste mesmo envio ainda não tem propriedades.

Resposta: 201

name é o nome do lead (ou o name enviado, se o lead não tinha nome).

Erros

Exemplo

O que acontece no projeto

  • Lead novo: nasce na primeira coluna do funil, com o name enviado. Os webhooks recebem LEAD_CREATED.
  • O template aparece no chat do lead já preenchido. Os webhooks recebem WA_TEMPLATE no envio e API_KEY_INTERACTION na entrega.
  • Template não agenda automações.
  • A Meta cobra o template pela categoria dele. Ver Quanto custa operar um projeto.

Armadilhas

  • Texto para número novo dá 400. O primeiro contato com um número é sempre por template.
  • Texto fora da janela dá 400 na conexão oficial. Teste a janela antes, ou mande template direto quando o último contato do lead tem mais de 24 horas.
  • Template com propriedade vazia não sai. Ao criar o lead pelo template, use só variáveis que todo lead tem ({{nome}}, {{telefone}}).
  • name não renomeia. Para lead que já existe, o nome continua o gravado.
  • O agente continua respondendo. Mensagem pela API não pausa a IA.
  • Template não é “mensagem grátis”. Cada envio é cobrado pela Meta.
  • Reenviar depois de timeout pode duplicar a mensagem. Confira o histórico antes.

Perguntas frequentes

A API não tem um campo direto. O fim da janela chega nos webhooks em lead.conversation_expires_in. Sem isso, tente o texto e, se vier o 400 de janela vencida, envie um template.
Não. As variáveis vêm dos dados do lead. Grave o valor numa propriedade do lead (PATCH /leads/{numero}/properties) e use {{slug-da-propriedade}} no template.
Não. Envie um template primeiro; ele cria o lead. Na conexão oficial, só depois que o lead responder a janela abre para texto livre.

Para saber mais