Skip to main content
Envie mensagens programaticamente via WhatsApp.
Para gerenciar contatos (criar, atualizar, etiquetar) ou gerenciar conversas (atribuir, mudar status, adicionar notas) sem enviar mensagem, prefira os endpoints dedicados:Os parâmetros assignTo e portfolio neste endpoint continuam funcionando para retrocompatibilidade.

Parâmetros do Body

Exemplos

Todos os parâmetros podem ser combinados livremente em uma única chamada. Por exemplo, é possível enviar uma mensagem com fila inteligente (queued), atribuição (assignTo + portfolio) e controle do agente (sentBy) ao mesmo tempo.

cURL Completo

Comportamentos Automáticos

Quando queued: true, o sistema calcula o próximo horário de envio:
  1. Verifica o último envio para aquele canal
  2. Calcula próximo_envio = MAX(agora, último_envio + intervalo)
  3. Agenda a mensagem com o horário calculado
  4. A fila é processada automaticamente
Limites de velocidade: O intervalo configurável (intervalSeconds) garante que mensagens não sejam enviadas em rajada, evitando banimentos do WhatsApp.Janela de horário: Por padrão, mensagens são enviadas entre 08:00 e 20:00 no fuso do canal. Mensagens agendadas fora desse horário são postergadas.
Se o canal possui um agente de IA ativo, mensagens enviadas via API com sentBy diferente de ai_agent pausam automaticamente o agente para aquele contato, pelo tempo configurado no agente (padrão 30 minutos).Isso evita que o agente responda sobre uma mensagem enviada manualmente por um operador ou automação. A cada nova mensagem humana, o timer de pausa é renovado.Para enviar mensagens via API sem pausar o agente (ex: respostas automáticas do próprio agente), use sentBy: "ai_agent".Qualquer string diferente de ai_agent pausa o agente — os valores api, operator, automation, scheduled são apenas convenções para facilitar a rastreabilidade.
Quando um contato é atribuído via assignTo, o operador recebe automaticamente um e-mail contendo:
  • Nome do contato (ou número, se sem nome)
  • Telefone do contato
  • Link direto para abrir a conversa no chat (/c/chat/{telefoneCanal}/{telefoneContato})
O e-mail é enviado de forma assíncrona (fire-and-forget) e não bloqueia o envio da mensagem.
Se o número informado em phone não existir na base de contatos do canal, o sistema cria automaticamente um novo contato com os dados disponíveis antes de enviar a mensagem.

Informações Importantes

Formato do Telefone

Sempre com código do país: 5511999999999. Use o endpoint Sanitizar Número para normalizar.

Tipos de Mídia

JPG, PNG, MP3, WAV, MP4, PDF — URLs devem ser públicas e HTTPS.

Iniciar Conversa com Agente de IA

Este é um endpoint diferente do send-message. Use-o para acionar o agente de IA proativamente — ele envia a primeira mensagem como se fosse o agente e cria a conversa automaticamente.

Parâmetros do Body

Exemplo

Como funciona:
  • A mensagem é enviada como se fosse o agente (não como operador humano)
  • A conversa é criada automaticamente no sistema com o agente vinculado
  • O agente só processa IA quando o contato responder — a primeira mensagem é enviada diretamente
  • externalContext injeta variáveis externas que são armazenadas em collected_data — o agente pode referenciar essas variáveis durante toda a conversa (ex: nome_cliente, valor_pendente, id_pedido)
  • Ideal para integrações com CRMs (Pipefy, HubSpot, etc.) onde o agente precisa de contexto externo para conduzir a conversa
  • Se o contato não existir, ele é criado automaticamente

Abrir a conversa com um template oficial

Em canais Meta Oficial, texto livre só é aceito dentro da janela de 24h. Para iniciar a conversa fora dela, envie template_id — o template aprovado abre a janela e o agente assume assim que o contato responder, já com o externalContext em mãos.
Os valores em variables podem referenciar o contexto externo com {{chave}} — por exemplo "pedido": "{{id_pedido}}" usa o valor enviado em externalContext.
Resposta de sucesso:
Erros específicos do template (a conversa não é criada nos três primeiros):

cURL (texto livre)


Endpoints Auxiliares

GET — Histórico de Mensagens

Recupere o histórico de mensagens para contexto de IA ou auditoria.
Parâmetros (query string):

POST — Sanitizar Número

Endpoint público (sem token) que remove formatação de telefones.
Resposta: