Enviar Mensagem
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:
- 📇 API de Contatos — criar, atualizar, gerenciar tags
- 💬 API de Conversas — atribuir operador, mudar status, notas internas
assignTo e portfolio neste endpoint continuam funcionando para retrocompatibilidade.Parâmetros do Body
Exemplos
- Texto
- Mídia
- Lista de Opções
- Fila Inteligente
- Atribuição sem Mensagem
- Atribuição com Mensagem
- Controle do Agente
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
Fila Inteligente (queued)
Fila Inteligente (queued)
Quando
queued: true, o sistema usa enfileiramento atômico com advisory locks para calcular o próximo horário de envio:- Verifica o último envio para aquela instância
- Calcula
próximo_envio = MAX(agora, último_envio + intervalo) - Agenda a mensagem com o horário calculado
- Um worker (QStash + pg_cron) processa a fila automaticamente
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 da instância. Mensagens agendadas fora desse horário são postergadas.Pausa do Agente de IA
Pausa do Agente de IA
Se a instância possui um agente de IA ativo, mensagens enviadas via API com
sentBy diferente de ai_agent pausam automaticamente o agente por 30 minutos para aquele contato específico.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.Notificação ao Operador
Notificação ao Operador
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/{telefoneInstância}/{telefoneContato})
Auto-criação de Contato
Auto-criação de Contato
Se o número informado em
phone não existir na base de contatos da instância, 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
externalContextinjeta variáveis externas que são armazenadas emcollected_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

