Visão geral
Toda integração começa com um Assistente virtual cadastrado e em estado Operacional. Você dispara mensagens chamando um único endpoint, autenticando-se por um token na URL. O endpoint valida o destinatário, enfileira o envio e responde imediatamente; o WhatsApp recebe a mensagem em seguida.
?token=… (mantenha o token em variável de ambiente).Início rápido
- 1Garanta um Assistente virtual Operacional
No painel administrativo, abra Assistentes, copie o
iddo Assistente que enviará a mensagem e confirme que o status éOperacional. - 2Reúna o token e o destinatário
Copie o token de API (vide Autenticação) e formate o telefone com país + DDD, sem
+. Ex.:5511999998888. - 3Faça a requisição
Envie um
POSTparahttps://api.fala.app.br/send-whatsapp-messagecom o JSON contendosessionId+ algum conteúdo (message,image,audiooufile). - 4Confirme a entrega
Se a primeira mensagem não chegar, alterne a presença do 9 antes do número (a regra muda por operadora). A resposta da API confirma apenas o enfileiramento, não a entrega final.
Endpoint
Toda a API reside em uma única rota.
- Não inclua o caractere
+antes do código do país. - Não adicione o 9 extra antes do número, salvo se a operadora do destinatário exigir.
- Para validar, envie uma mensagem e observe a entrega — caso falhe, alterne a presença do 9.
Autenticação
A autenticação é feita por meio de um parâmetro token anexado à URL. Toda requisição sem token (ou com token inválido) é rejeitada com 401 Unauthorized.
Parâmetros do corpo
O corpo é um objeto JSON. Os campos são opcionais individualmente, mas existem duas regras combinadas de obrigatoriedade — destacadas com obrigatório* e obrigatório**.
- * — pelo menos um entre
sessionIdecustomerId. - ** — pelo menos um entre
message,audio,fileeimage.
sessionIdobrigatório*Operacional. Se omitido, customerId deve ser informado.customerIdobrigatório*sessionId, o FalaApp seleciona automaticamente uma sessão Operacional vinculada ao cliente. Útil quando a integração desconhece qual Assistente deve responder.messageobrigatório**\n) é respeitada pelo WhatsApp. Use junto comtts: true para envio como áudio sintetizado.phoneopcional+. Ex.: 5511999998888. Ignorado quando group é informado.groupopcional[email protected]). Quando informado, prevalece sobrephone.imageobrigatório**fileobrigatório**audioobrigatório**nameopcionaladditionalLearningopcionalgenerateNewTextopcionalfalsetrue, a IA reescreve o texto de message antes do envio, mantendo a intenção mas adaptando o tom. Quando false, a mensagem é enviada exatamente como recebida.ttsopcionalfalsetrue, o conteúdo de message é convertido em áudio via Text-To-Speech e entregue como mensagem de voz — nesse caso o texto não é enviado.ignoreOnOrderopcionalfalsetrue, o envio não é registrado em fluxos de pedido em aberto vinculados ao contato. Use para mensagens transacionais que não devem reabrir/avançar o funil.additionalOverflowDataopcionalExemplos de requisição
A mesma requisição em diferentes linguagens. Substitua o token e os identificadores pelos seus.
curl -X POST 'https://api.fala.app.br/send-whatsapp-message?token=u9P8Rp2xXxhJm6yGxqzY4gF4vqA7G1BmKzH9O1D3aQ3pR8wD8hY4cT3uJ2qM5yB8' \
-H 'Content-Type: application/json' \
-d '{
"sessionId": "gqg5gq34g-g2422f-w1dw1dw1-12dw1dw-asdasdasd",
"message": "Olá, *Tiago*!\nSeu pedido foi confirmado.",
"phone": "5511999998888",
"name": "Tiago Pedro",
"additionalLearning": "Cliente Premium, atendimento formal.",
"generateNewText": false,
"tts": false,
"ignoreOnOrder": false,
"additionalOverflowData": "{\"campanha\":\"BlackFriday2026\",\"origem\":\"crm\"}"
}'Respostas
A resposta é sempre um objeto JSON com a chave message (array de strings, mensagens humanas para log/UX). Quando o enfileiramento dá certo, vem também um campo data espelhando o conteúdo aceito.
{
"message": [
"Sua mensagem foi adicionada à lista de envios e logo será encaminhada para o destinatário, se todos os parâmetros estiverem corretos."
],
"data": {
"type": "chat",
"content": "Olá, *Tiago*!\nSeu pedido foi confirmado.",
"isGroupMsg": false,
"chatId": "FROM_API",
"additionalLearning": "Cliente Premium, atendimento formal."
}
}{
"message": ["Não foi possível adicionar a mensagem à lista de envios."],
"error": "Error: Sessão não encontrada"
}Erros comuns
A API retorna status HTTP padrão. Em casos de erro, o corpo normalmente traz a chave error com a descrição técnica.
Limites e dicas
Operacional aceitam envio. Sessões em QR pendente ou desconectado retornam erro.tts é true, o texto não é enviado — apenas o áudio sintetizado. Para enviar ambos, faça duas requisições.message e additionalLearning são limitados a 1000 caracteres cada. Conteúdos maiores devem ser quebrados em múltiplos envios.