Enviar Mensagem
Envie mensagens programaticamente via WhatsApp.Parâmetros do Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
instanceId | string | ✅ | ID da instância WhatsApp no Brainchat |
phone | string | ✅ | Número do destinatário (formato: 5511999999999) |
messageType | string | ✅ | Tipo: text, image, audio, document, option_list |
message | string | Depende | Texto da mensagem ou legenda da mídia |
mediaUrl | string | Depende | URL pública HTTPS do arquivo de mídia |
mediaFilename | string | ❌ | Nome do arquivo para documentos (ex: relatorio.pdf) |
cardId | string | ❌ | Identificador customizado para rastreamento |
delayMessage | number | ❌ | Delay em segundos antes do envio |
delayTyping | number | ❌ | Tempo em ms de simulação de digitação antes do envio |
assignTo | string | ❌ | E-mail ou UUID do operador para atribuir a conversa |
portfolio | boolean | ❌ | Se true, adiciona o contato à carteira do operador com prioridade absoluta |
queued | boolean | ❌ | Se true, a mensagem entra na fila inteligente em vez de envio imediato |
intervalSeconds | number | ❌ | Intervalo em segundos entre mensagens na fila (padrão: 30s, min: 10s, max: 3600s) |
sentBy | string | ❌ | Origem da mensagem: ai_agent, api, scheduled, automation, operator, ou qualquer string. Se diferente de ai_agent, pausa o agente de IA por 30min |
Exemplos
- Texto
- Imagem
- Áudio
- Documento
- Lista de Opções
- Fila Inteligente
- Com Atribuição
- Controle do Agente IA
- Fila + Atribuição + Agente
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
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
instanceId | string | ✅ | ID da instância (UUID ou embed_key) |
phone | string | ✅ | Número do destinatário (formato: 5511999999999) |
messageText | string | ✅ | Texto da primeira mensagem enviada como o agente |
agentId | string | ❌ | UUID do agente (necessário se a instância tiver múltiplos agentes) |
initiateConversation | boolean | ✅ | Deve ser true para modo proativo |
externalContext | object | ❌ | Dados externos injetados na conversa como variáveis que o agente pode usar |
queued | boolean | ❌ | Se true, a mensagem entra na fila inteligente |
intervalSeconds | number | ❌ | Intervalo em segundos entre mensagens na fila |
sentBy | string | ❌ | Origem da mensagem (padrão: api) |
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 o agente pode referenciar durante toda a conversa (ex: nome do cliente, valor da dívida, ID do 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
cURL
Endpoints Auxiliares
GET — Histórico de Mensagens
Recupere o histórico de mensagens para contexto de IA ou auditoria.| Parâmetro | Obrigatório | Descrição |
|---|---|---|
phone | ✅ | Número do telefone |
start | ✅ | Data inicial (YYYY-MM-DD) |
end | ✅ | Data final (YYYY-MM-DD) |
instanceId | ✅ | ID da instância |
limit | ❌ | Máximo de mensagens (padrão: 100) |
format | ❌ | conversation ou raw |

