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 API do FalaApp possui dois mecanismos de autenticação distintos, cada um usado em rotas diferentes. Não os confunda.
1. Token de API — Envio de mensagens
Usado no endpoint POST /send-whatsapp-message. Passado como parâmetro ?token=… na query string. Token fixo, gerado no painel administrativo.
2. JWT Bearer — Rotas de consulta
Usado nas rotas GET /own/sessions e GET /own/sessions/:id. Passado no cabeçalho Authorization: Bearer <jwt>. Obtido via POST /sign-in — o mesmo e-mail e senha do painel administrativo.
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.
Login (JWT)
Para chamar as rotas de consulta (listagem e detalhe de Assistentes), você precisa de um JWT. Obtenha-o autenticando com o mesmo e-mail e senha do painel administrativo do FalaApp.
emailstringobrigatóriopasswordstringobrigatóriocurl -X POST 'https://api.fala.app.br/sign-in' \
-H 'Content-Type: application/json' \
-d '{"email":"[email protected]","password":"suaSenha"}'{
"message": "Login realizado com sucesso.",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": "7d",
"roles": ["user"],
"sessionsLimitsCount": [
{ "id": "a1b2c3d4-...", "limiteReached": false, "messagesSent": 142 }
]
}
}data.token e envie-o no cabeçalho Authorization: Bearer <token> em todas as requisições às rotas de consulta. O token expira conforme o campo data.expiresIn — renove fazendo um novo login.409 Conflict. Verifique as credenciais no painel antes de depurar a integração.Buscar Assistentes
Use estas rotas para listar os Assistentes vinculados ao seu usuário e obter o sessionId necessário no endpoint de envio. Atenção: requerem autenticação JWT Bearer, não o token de API.
Authorization: Bearer <jwt>, obtido via login na plataforma. Veja a seção Autenticação para detalhes.Listar Assistentes
Retorna a lista paginada dos Assistentes do usuário autenticado. Apenas Assistentes não arquivados são retornados.
activebooleanopcionalsearchstringopcionalmoduleNamestringopcionalskipintegeropcionaltakeintegeropcionalcurl -X GET 'https://api.fala.app.br/own/sessions?active=true&take=20' \
-H 'Authorization: Bearer <seu-jwt>'{
"message": ["Sessões encontradas com sucesso."],
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Assistente Suporte",
"active": true,
"archived": false,
"type": "wppConnect",
"currentPhoneNumber": "5511999998888",
"timezone": -3,
"isSubscriber": true,
"trialExpiration": null,
"createdAt": "2026-01-10T12:00:00.000Z",
"updatedAt": "2026-05-14T08:30:00.000Z",
"status": {
"id": "s1",
"name": "inChat",
"label": "Operacional",
"color": "#22c55e"
},
"customer": {
"id": "c1",
"name": "Empresa X",
"partnerName": "Parceiro Y"
},
"modules": [
{ "id": "m1", "module": { "id": "mod1", "name": "whatsapp" } }
],
"variables": [
{ "id": "v1", "key": "minha-variavel", "value": "valor" }
]
}
],
"total": 3
}Detalhe de um Assistente
Retorna os dados completos de um único Assistente. Inclui contextos, variáveis com label, e calendários Google integrados.
idstring (UUID v4)obrigatórioid da rota de listagem acima.{
"message": ["Sessão encontrada com sucesso."],
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Assistente Suporte",
"active": true,
"archived": false,
"type": "wppConnect",
"currentPhoneNumber": "5511999998888",
"QrCode": null,
"timezone": -3,
"isSubscriber": true,
"isLinkedWithCrm": false,
"trialExpiration": null,
"createdAt": "2026-01-10T12:00:00.000Z",
"updatedAt": "2026-05-14T08:30:00.000Z",
"status": {
"id": "s1",
"name": "inChat",
"label": "Operacional",
"color": "#22c55e"
},
"customer": {
"id": "c1",
"name": "Empresa X",
"alertDestination": "[email protected]",
"users": [{ "id": "u1", "name": "João", "email": "[email protected]" }]
},
"modules": [
{ "id": "m1", "module": { "id": "mod1", "name": "whatsapp" } }
],
"contexts": [
{ "id": "ctx1", "content": "Você é um assistente...", "type": { "id": "t1", "name": "system", "label": "Contexto principal", "description": "...", "optional": false } }
],
"variables": [
{ "id": "v1", "key": "minha-variavel", "label": "Minha Variável", "value": "valor" }
],
"googleCalendars": []
}
}Gerenciar Assistentes
Use estas rotas para criar e arquivar/desarquivar Assistentes em nome do cliente autenticado. Disponíveis apenas quando o cliente tem a flag allowSessionManagement habilitada (configurada pela equipe FalaApp). Autenticação JWT Bearer (mesmo token de login da plataforma).
403 Forbidden.Criar Assistente
Cria um novo Assistente vinculado ao cliente do usuário autenticado. O tipo de conexão é fixado em baileys (WhatsApp via QR Code) e o módulo only-send-campaing é aplicado automaticamente — qualquer outro campo enviado no corpo é ignorado.
namestringobrigatório{
"name": "Atendimento Loja A"
}curl -X POST 'https://api.fala.app.br/own/sessions' \
-H 'Authorization: Bearer <seu-jwt>' \
-H 'Content-Type: application/json' \
-d '{"name":"Atendimento Loja A"}'{
"message": ["Sessão criada com sucesso."],
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Atendimento Loja A",
"active": true,
"type": "baileys",
"status": {
"id": "s0",
"name": "loading",
"label": "Carregando",
"color": "#94a3b8"
},
"customer": {
"id": "c1",
"name": "Empresa X"
},
"modules": [
{ "id": "m1", "module": { "id": "mod1", "name": "only-send-campaing" } }
],
"contexts": [
{ "id": "ctx1", "content": "Você é um assistente virtual", "type": { "id": "t1", "name": "personality", "label": "Personalidade", "description": "...", "optional": false } }
]
}
}allowSessionManagement habilitada.Arquivar / Desarquivar
Arquivar marca o Assistente como inativo e encerra a sessão de WhatsApp associada. Desarquivar restaura o Assistente. Ambas as rotas exigem que o Assistente pertença ao cliente do usuário autenticado.
idstring (UUID v4)obrigatório# Arquivar
curl -X POST 'https://api.fala.app.br/own/sessions/<assistente-id>/archive' \
-H 'Authorization: Bearer <seu-jwt>'
# Desarquivar
curl -X POST 'https://api.fala.app.br/own/sessions/<assistente-id>/unarchive' \
-H 'Authorization: Bearer <seu-jwt>'{
"message": ["Sessão arquivada com sucesso."],
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"archived": true
}
}Sincronizar / Reconectar
Força a sincronização do Assistente com o WhatsApp: encerra a instância atual e a recria em seguida, gerando um novo QR Code / Código de Pareamento. É a mesma ação do botão Sincronizar na lista de Assistentes. Use quando a conexão travar ou o status não atualizar.
idstring (UUID v4)obrigatóriocurl -X POST 'https://api.fala.app.br/sessions/<assistente-id>/fix' \
-H 'Authorization: Bearer <seu-jwt>'{
"message": "Processo de restart do browser da sessão iniciado com sucesso",
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Assistente Suporte",
"archived": false
}
}qrcode.updated ou consultando GET /own/sessions/:id.403 Forbidden.Webhooks de cliente
Configure uma URL por cliente para receber notificações automáticas de eventos do FalaApp — atualização de QR code e mudança de status de qualquer Assistente vinculado ao cliente. O FalaApp faz um POST para a sua URL com JSON toda vez que um evento ocorre.
Authorization: Bearer <jwt>. Veja a seção Login (JWT).Gerenciar URL
Retorna a URL de webhook configurada para o cliente.
Define ou atualiza a URL de webhook. Passe webhookUrl no corpo (string HTTP/HTTPS, máx 500 chars). Envie null para remover.
Dispara um evento webhook.test imediatamente para validar a URL configurada.
Retorna as últimas 20 tentativas de entrega com status, código HTTP e trecho da resposta.
Exemplo para configurar a URL:
curl -X PUT 'https://api.fala.app.br/own/webhook' \
-H 'Authorization: Bearer <seu-jwt>' \
-H 'Content-Type: application/json' \
-d '{"webhookUrl":"https://meusite.com/webhook"}'Cabeçalhos enviados pelo FalaApp
Toda requisição de webhook enviada pelo FalaApp inclui os seguintes cabeçalhos:
Content-Typeapplication/jsonUser-AgentFalaApp-Webhook/1.0X-FalaApp-Event<tipo-do-evento>2xx para confirmar o recebimento — qualquer outro código ou timeout (10 s) conta como falha e aciona a próxima tentativa.Eventos
Todos os eventos seguem o mesmo envelope: event, occurredAt, customerId e data (payload específico do evento).
qrcode.updatedDisparado quando o QR code de um Assistente é atualizado. Use para exibir o QR code ao usuário em tempo real.
{
"event": "qrcode.updated",
"occurredAt": "2026-05-14T12:34:56.789Z",
"customerId": "c1b2a3d4-...",
"data": {
"session": {
"id": "a1b2c3d4-...",
"name": "Assistente Suporte",
"qrCodeUrl": "https://cdn.fala.app.br/qrcodes/abc123.png"
}
}
}session.status_changedDisparado quando o status de um Assistente muda (ex.: de QR pendente para Operacional, ou de Operacional para desconectado).
{
"event": "session.status_changed",
"occurredAt": "2026-05-14T12:34:56.789Z",
"customerId": "c1b2a3d4-...",
"data": {
"session": {
"id": "a1b2c3d4-...",
"name": "Assistente Suporte"
},
"status": {
"name": "inChat",
"label": "Operacional"
}
}
}webhook.testDisparado manualmente via POST /own/webhook/test. Use para validar que sua URL está recebendo corretamente.
{
"event": "webhook.test",
"occurredAt": "2026-05-14T12:34:56.789Z",
"customerId": "c1b2a3d4-...",
"data": {
"message": "Teste de webhook do FalaApp. Se você recebeu esta mensagem, sua URL está configurada corretamente."
}
}Webhooks de assistente
Cada Assistente pode ter webhooks individuais configurados diretamente no painel administrativo (seção Assistentes → Editar). Esses webhooks são acionados por eventos de conversa e permitem integrar o FalaApp com qualquer plataforma externa — CRM, ERP, automações, etc.
Configuração
Cada webhook de assistente é configurado com:
eventEvento que aciona o webhook: onNewMessage ou onBlockAssistant.
urlURL da sua aplicação. Deve ser acessível publicamente (HTTP ou HTTPS).
methodMétodo HTTP: POST, GET, PUT ou DELETE. Padrão: POST.
headersAté 3 cabeçalhos customizados (chave + valor). Content-Type: application/json é sempre incluído.
Eventos
onNewMessageDisparado ao receber uma nova mensagem de um contato. Enviado no máximo uma vez a cada 10 minutos por contato para evitar disparos duplicados.
{
"sessionId": "a1b2c3d4-...",
"name": "João Silva",
"phone": "5511999998888",
"whatsapp": "5511999998888"
}onBlockAssistantDisparado quando um contato bloqueia o Assistente via chat. Inclui o histórico completo da conversa — ideal para capturar leads que desistiram do atendimento automático.
{
"event": "onBlockAssistant",
"sessionId": "a1b2c3d4-...",
"sessionName": "Assistente Suporte",
"contactId": "ct1b2c3-...",
"contactName": "João Silva",
"contactPhone": "5511999998888",
"conversationId": "conv123-...",
"blockedAt": "2026-05-14T13:00:00.000Z",
"messages": [
{
"id": "msg1",
"content": "Quero cancelar meu pedido",
"origin": "contact",
"createdAt": "2026-05-14T12:55:00.000Z",
"isFile": false,
"isImage": false,
"isAudio": false,
"isLocation": false
}
],
"conversationMetadata": {
"totalMessages": 5,
"firstMessageAt": "2026-05-14T12:50:00.000Z",
"lastMessageAt": "2026-05-14T12:59:00.000Z"
}
}MCP Server — leitura de conversas por IA
O FalaApp expõe um servidor MCP (Model Context Protocol) somente leitura que permite a um modelo de IA — Claude, ChatGPT ou qualquer cliente compatível com MCP — consultar contatos e mensagens do WhatsApp da sua conta em linguagem natural. Útil para gerar resumos de negociações, criar oportunidades em CRMs externos ou pesquisar conversas sem sair do seu assistente de IA.
customerId na URL limita as consultas aos dados daquele cliente — nada vaza entre contas.Endpoint
https://api.fala.app.br/mcp/<customerId>?token=<server-token>GET e DELETE retornam 405 — este servidor é stateless e aceita apenas POST.
Autenticação
Mesmo padrão do endpoint de envio: passe o token global na query string ?token=<server-token>. O customerId da URL escopa todas as ferramentas para os dados daquele cliente.
customerId válido pode ler o histórico daquele cliente. Não exponha o token em código cliente — use sempre num cliente MCP local ou em backend controlado.Configuração no Claude Desktop
Adicione ao arquivo de configuração do Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json no macOS). O utilitário mcp-remote faz a ponte do stdio do Claude para o servidor HTTP do FalaApp.
{
"mcpServers": {
"falaapp": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.fala.app.br/mcp/<seu-customer-id>?token=<server-token>"
]
}
}
}token na query string. Não há cabeçalhos especiais — autenticação é só pelo token.Ferramentas (tools) disponíveis
O servidor anuncia duas ferramentas. Use sempre search_contacts primeiro para obter um conversationId válido — depois passe esse id para get_conversation_messages.
search_contactsBusca contatos por telefone ou nome (match parcial, case-insensitive). Retorna a lista paginada de contatos, cada um com até 5 conversas mais recentes (não arquivadas).
querystringobrigatórioTelefone ou nome do contato (match parcial).
limitintegeropcionalItens por página. Default 20, máx 50.
offsetintegeropcionalDeslocamento para paginação. Default 0.
{
"contacts": [
{
"contactId": "ct-1b2c3d-...",
"name": "João Silva",
"phone": "5511999998888",
"senderId": "[email protected]",
"conversations": [
{
"conversationId": "conv-abc123-...",
"sessionId": "a1b2c3d4-...",
"assistant": "Assistente Vendas",
"totalMessages": 42,
"updatedAt": "2026-05-14T18:30:00.000Z"
}
]
}
],
"total": 1,
"offset": 0,
"limit": 20,
"hasMore": false
}get_conversation_messagesLê mensagens de uma conversa em ordem cronológica (mais antigas primeiro dentro da página). Paginação por cursor — passe o nextBefore retornado para ver mensagens mais antigas.
conversationIdstringobrigatórioID da conversa, obtido em search_contacts. Validado contra o customerId — IDs de outros clientes retornam erro.
limitintegeropcionalMensagens por página. Default 50, máx 100.
beforestring (ISO date)opcionalCursor de paginação. Passe o nextBefore retornado para buscar mensagens anteriores.
Campos de cada mensagem:
originuser (contato), assistant (IA), operator (atendente humano) ou api (envio via integração).
typetext, image, audio, file ou location. Áudios entram já transcritos no campo content.
contentConteúdo da mensagem em texto (transcrição no caso de áudio).
isDeletedtrue quando o contato apagou a mensagem do WhatsApp.
reactionsReações registradas na mensagem (ou null).
operatorNameNome do atendente humano, presente apenas quando origin = operator.
createdAtTimestamp ISO 8601.
{
"conversation": {
"conversationId": "conv-abc123-...",
"contact": {
"contactId": "ct-1b2c3d-...",
"name": "João Silva",
"phone": "5511999998888"
},
"sessionId": "a1b2c3d4-...",
"assistant": "Assistente Vendas"
},
"messages": [
{
"id": "msg-001",
"origin": "user",
"type": "text",
"content": "Oi, queria saber sobre o imóvel da rua X",
"isDeleted": false,
"reactions": null,
"createdAt": "2026-05-14T12:55:00.000Z"
},
{
"id": "msg-002",
"origin": "assistant",
"type": "text",
"content": "Olá! Posso te passar mais detalhes...",
"isDeleted": false,
"reactions": null,
"createdAt": "2026-05-14T12:55:08.000Z"
},
{
"id": "msg-003",
"origin": "user",
"type": "audio",
"content": "[transcrição do áudio do contato]",
"isDeleted": false,
"reactions": null,
"createdAt": "2026-05-14T12:56:30.000Z"
}
],
"hasMore": false,
"nextBefore": null
}Invocação direta (sem cliente MCP)
Em casos em que você não usa um cliente MCP pronto (Claude/ChatGPT), é possível chamar as ferramentas via JSON-RPC 2.0 — útil para scripts, automações e testes.
# Invocação direta via JSON-RPC (search_contacts)
curl -X POST 'https://api.fala.app.br/mcp/<seu-customer-id>?token=<server-token>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_contacts",
"arguments": { "query": "joão", "limit": 10 }
}
}'isError: true com mensagem explicativa em caso de falha. Conversas que não pertencem ao customerId da rota retornam erro claro em vez de vazar dados. Como o transporte é stateless, não há suporte a notificações server-push (SSE).Aprendizado por arquivo
Suba documentos (PDF, DOCX, MD, TXT, CSV, HTML ou JSON) diretamente para o aprendizado de um Assistente. O FalaApp envia o arquivo para a OpenAI, cria um vector store dedicado àquele Assistente e o modelo passa a consultar esse conteúdo automaticamente nas conversas — via a ferramenta nativa file_search da Responses API. Ideal para alimentar o assistente com catálogos, políticas, FAQs e bases de conhecimento que mudam com frequência.
Authorization: Bearer <jwt>. Obtenha o JWT na rota /sign-in — o token é vinculado ao usuário do FalaApp e tem TTL (renove via login quando expirar).Rotas
Envia um arquivo (multipart/form-data, campo file, até 25MB) para o aprendizado do Assistente. Cria o vector store na primeira chamada. Retorna o registro do arquivo com status processing — a indexação é assíncrona.
Lista os arquivos do Assistente. Sincroniza automaticamente o status dos arquivos em processing com a OpenAI antes de responder.
Remove o arquivo do vector store e o apaga da OpenAI. Use o campo id retornado nas rotas POST/GET (não confunda com openaiFileId).
Status do arquivo
processingUpload concluído, OpenAI ainda está indexando. Pode levar de segundos a alguns minutos dependendo do tamanho.
readyIndexado e disponível para o modelo consultar nas próximas conversas.
failedIndexação falhou (ex.: arquivo corrompido, formato não suportado). O campo errorMessage traz o detalhe retornado pela OpenAI.
Enviar arquivo
curl -X POST 'https://api.fala.app.br/sessions/<sessionId>/learning-files' \
-H 'Authorization: Bearer <seu-jwt>' \
-F 'file=@./catalogo.pdf'{
"data": {
"id": "f0e9c3ab-1d2e-4b3f-9c5d-6a7b8c9d0e1f",
"openaiFileId": "file_abc123XyZ",
"name": "catalogo.pdf",
"size": 487213,
"mimeType": "application/pdf",
"status": "processing",
"createdAt": "2026-05-26T18:42:11.000Z"
}
}Listar arquivos
curl -X GET 'https://api.fala.app.br/sessions/<sessionId>/learning-files' \
-H 'Authorization: Bearer <seu-jwt>'{
"data": [
{
"id": "f0e9c3ab-1d2e-4b3f-9c5d-6a7b8c9d0e1f",
"openaiFileId": "file_abc123XyZ",
"name": "catalogo.pdf",
"size": 487213,
"mimeType": "application/pdf",
"status": "ready",
"createdAt": "2026-05-26T18:42:11.000Z"
},
{
"id": "11d2e394-4b3f-9c5d-6a7b-8c9d0e1f0e9c",
"openaiFileId": "file_xyz789AbC",
"name": "politica-de-trocas.docx",
"size": 23145,
"mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"status": "processing",
"createdAt": "2026-05-26T18:45:02.000Z"
}
]
}Remover arquivo
curl -X DELETE 'https://api.fala.app.br/sessions/<sessionId>/learning-files/<fileId>' \
-H 'Authorization: Bearer <seu-jwt>'DELETE para evitar custos silenciosos.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.