API oficial do WhatsApp com CRM e IA, num só lugar.
Conecte o número que você já usa, atenda pelo celular ou pelo painel e deixe o Claude e outras IAs cuidarem do atendimento, com a segurança de quem é parceiro oficial da Meta.
Oficial
Tech Provider da Meta. Sem QR code improvisado, sem risco de banimento.
Coexistência
Continue usando o app do celular. Sem janela de 24h e sem pagar mensagem enviada pelo celular.
IA-first
API, webhooks e MCP prontos para a IA operar e configurar tudo.
Visão geral
O que é a FlashConnect
Um provedor de API oficial do WhatsApp (Cloud API da Meta) e, quando você quiser, um CRM completo de atendimento. Você escolhe o quanto usar.
Só a conexão
Para quem já tem sistema próprio, CRM, n8n ou uma IA: conecte o número e consuma tudo por API, webhooks e MCP.
Conexão + CRM completo
Para empresas que querem operar tudo aqui: caixa de entrada compartilhada, contatos, agenda, tarefas, automações, equipe e agentes de IA.
Tudo o que o painel faz também está disponível por API e MCP. O painel é só mais um cliente da mesma API, então nada fica preso à tela.
Recursos
O que a plataforma entrega
Conversas
Caixa de entrada com IA e humano na mesma conversa, transferência por equipe, etiquetas, SLA e mídia (imagem, áudio, vídeo, figurinha, documento).
CRM
Ficha do contato, tags, notas, opt-out, produtos e catálogo, base de conhecimento.
Operação
Agenda com horários livres, quadro de tarefas, automações, templates e envios programados.
Agentes de IA
Vários agentes especialistas, com persona, regras, horário de funcionamento e quando passar para humano.
Equipe
Papéis por usuário, distribuição por rodízio ou menor carga e histórico de ações.
Integração
API REST, 15 eventos de webhook e servidor MCP para Claude, ChatGPT, n8n e outras IAs.
Planos
Pague por número conectado
Todos os planos começam com período de teste. Troque de plano quando quiser: os módulos mudam na hora e o valor novo vale a partir da próxima cobrança.
Conexão
- R$ 99,001º número
- R$ 59,90cada, do 2º ao 4º número
- R$ 39,90cada, do 5º número em diante
Valores por mês.
API oficial, MCP de IA, templates e mídia.
Operação recomendado
- R$ 99,00por número
Valor por mês, sem faixa.
Tudo do Conexão + CRM completo, agenda, tarefas, automações, agentes de IA, equipe e dashboard. Tokens de IA por conta do cliente (chave própria).
Escale
Sob consulta
Operação completa e personalizada: nós cuidamos de tudo.
As mensagens são cobradas pela Meta conforme a tabela oficial dela, direto no cartão que você cadastra na Meta, separado da assinatura. Os tokens de IA (Anthropic, OpenAI…) também são pagos direto ao provedor da IA.
Ligação oficial com a Meta
Coexistência: o melhor dos dois mundos
Seu número fica ao mesmo tempo no app WhatsApp Business do celular e na API oficial. Você ganha automação e CRM sem abrir mão do jeito que já atende.
Continue no celular
Responda pelo app como sempre fez. A conversa aparece no painel e a IA enxerga o que foi dito.
Zero custo do celular
Mensagens enviadas pelo app do celular não são cobradas por mensagem.
Sem janela de 24h
Pelo celular você abre conversa quando quiser, sem esperar o cliente falar primeiro e sem template.
Padrão × Coexistência
| Padrão | Coexistência | |
|---|---|---|
| App no celular | Deixa de funcionar nesse número | Continua funcionando |
| Mensagens do celular | — | Sem cobrança, sem janela de 24h |
| Mensagens pela API | Janela de 24h; fora dela só template | Janela de 24h; fora dela só template |
| Manutenção | Nenhuma | Abrir o app a cada 13 dias (avisamos antes) |
| Limitações | — | Grupos, mensagens temporárias e visualização única não passam pela API |
Janela de 24h: regra da Meta para mensagens pela API. Depois que o cliente fala com você, há 24 horas para responder livremente; fora disso, só com template aprovado pela Meta. A FlashConnect avisa antes de tentar (erro JANELA_EXPIRADA) e você cria e acompanha os templates pelo painel ou pela IA.
Passo a passo
Como conectar o número
- Pré-requisitoNúmero do WhatsApp Business com pelo menos 7 dias de uso no app. É uma exigência da Meta para a coexistência.
- Cadastro incorporado (Embedded Signup)Você faz login com o Facebook, escolhe a empresa e o número e aprova com o QR code no celular. Tudo dentro do fluxo oficial da Meta, sem passar senha para ninguém.
- SincronizaçãoContatos e histórico de conversas são importados. O histórico entra no painel sem disparar automações nem respostas da IA.
- ProntoMensagens do cliente chegam por webhook; as enviadas pelo celular chegam como eco (
message.echo), marcadas como vindas do celular.
Na prática
Como fica o seu dia a dia
Sem termo técnico: o que muda para quem atende e para quem vende.
Cliente chama às 22h
A IA responde na hora, tira dúvidas com base nos seus produtos e na sua base de conhecimento e, se precisar, avisa a equipe.
Cliente quer falar com gente
A IA passa a conversa para o setor certo. O atendente vê todo o histórico e responde pelo painel ou pelo próprio celular.
Cliente quer marcar horário
A IA mostra só os horários livres da sua agenda, marca e cria o lembrete automático.
Cliente some
A conversa vira tarefa de follow-up no quadro, com prazo e responsável.
Para quem é
Clínicas e consultórios
Agenda, confirmação de consulta e lembretes.
Lojas e serviços
Catálogo, orçamento e pós-venda.
Equipes comerciais
Funil, tags e distribuição de leads entre vendedores.
Do cadastro ao primeiro atendimento
- Crie a contaCadastro rápido, com período de teste.
- Conecte o número em coexistênciaLogin com Facebook e QR code. Seu celular continua funcionando.
- Configure o agentePelo painel ou pedindo ao Claude. Cadastre produtos e conhecimento.
- AtendaIA, equipe e celular na mesma conversa.
Segurança
Seus dados protegidos em cada camada
Cada cliente enxerga só o que é seu, e cada acesso deixa rastro.
Isolamento por cliente
Todo dado pertence a um cliente e o banco impede leitura cruzada (RLS). Recurso de outro cliente responde "não encontrado".
Credenciais da Meta blindadas
Tokens ficam numa tabela sem nenhum acesso pelo navegador ou pela API. Só o servidor acessa.
API keys seguras
O segredo aparece uma única vez; guardamos só o hash (SHA-256). Chaves têm escopos mínimos e podem ser revogadas na hora.
Papéis e auditoria
Permissões por papel aplicadas no banco e registro de ações sensíveis. A conta de operador da FlashConnect não acessa o conteúdo das suas conversas.
Webhook da Meta verificado
Assinatura HMAC conferida antes de ler qualquer dado, resposta imediata e proteção contra mensagem duplicada.
Webhooks de saída assinados
HMAC-SHA256 com carimbo de tempo (tolerância de 5 min), comparação em tempo constante, retentativas e chave de idempotência.
Proteção contra SSRF
Endereços internos (localhost, redes privadas, metadados de nuvem) são bloqueados como destino de webhook.
Mídia e segredos
Arquivos ficam em storage próprio e são entregues por link assinado de 1 hora. Segredos de infraestrutura ficam em cofre (Vault).
Infraestrutura no Brasil
Banco e funções em São Paulo, com criptografia em repouso e em trânsito (HTTPS).
Pagamento
Dados do cartão são tratados direto pelo gateway de pagamento e nunca passam pelos nossos servidores.
Mantemos política para solicitações de autoridades e tratamos os dados conforme a LGPD, com o cliente como controlador dos dados dos seus contatos.
Para o time técnico
API REST
Tudo em JSON, autenticado por API key com escopos. Crie a chave no painel em Integrações → Nova chave.
Base: https://qqyphyubrxyouaqicdbo.supabase.co/functions/v1
Header: Authorization: Bearer ck_live_…
- O segredo da chave aparece uma única vez. Guardamos só o hash; não há como recuperá-lo depois.
- Chave revogada responde
401 CHAVE_REVOGADA; chave sem o escopo do endpoint,403 ESCOPO_INSUFICIENTE.
Endpoints
| Endpoint | O que faz | Escopo |
|---|---|---|
POST /whatsapp-send | Envia texto, template, imagem, documento, áudio e mensagem interativa | messages:send |
GET /messages-list | Histórico da conversa, paginado | messages:read |
POST /conversation-update | Modo IA/humano, estado, etiquetas, atribuição, agente e equipe | conversations:write |
GET /agent-config | Persona, regras, produtos, conhecimento e equipes do agente | agent:read |
GET · POST · PATCH /agenda | Horários livres, criar, remarcar e cancelar agendamentos | agenda:read / agenda:write |
GET · POST · PATCH /tarefas | Cartões do quadro de tarefas | tasks:write |
POST /contato-update | Nome, e-mail, tags, notas e opt-out do contato | contacts:write |
POST /media-upload · /media-download | Envia mídia e baixa a recebida (áudio para transcrever, imagem para analisar) | messages:send / messages:read |
POST /api-key-create | Cria chaves (só usuário logado, dono ou admin) | login |
Regras que ajudam
- Fora da janela de 24h, pela API só passa template; o resto retorna
JANELA_EXPIRADAantes de chamar a Meta. - Erros vêm como
{ "erro", "codigo" }; falhas da Meta são traduzidas (limite de qualidade, número sem WhatsApp, token inválido…). - Agendamento só aceita horários que a própria API listou como livres; conflito retorna
HORARIO_INDISPONIVEL. - Contato com opt-out não recebe template (
OPT_OUT).
Exemplo: enviar uma mensagem
curl -X POST $BASE/whatsapp-send \
-H "Authorization: Bearer $KEY" \
-H "content-type: application/json" \
-d '{"phone_number_id":"123456789012345","para":"5511999990000","texto":"Olá! Posso ajudar?"}'
Para o time técnico
Webhooks: a plataforma avisa a sua IA
Cadastre uma URL https no painel, escolha os eventos e guarde o secret. Todo evento chega assinado.
Eventos
| Evento | Quando |
|---|---|
message.received | Cliente enviou mensagem |
message.echo | Dono respondeu pelo app do celular (coexistência) |
message.status | Enviada, entregue, lida ou falhou |
conversation.handoff | Conversa passou de IA para humano (ou voltou) |
conversation.resolved | Conversa encerrada |
template.status · connection.status | Template aprovado/reprovado · conexão caiu ou voltou |
appointment.created / updated / cancelled | Mudanças na agenda, de qualquer origem |
task.created · task.completed | Tarefa criada · concluída |
automation.triggered · ping | Automação com ação de webhook · teste pelo painel |
Formato da entrega
POST <sua-url>
Content-Type: application/json
X-Castilho-Event: message.received
X-Castilho-Delivery: 7c1e…-uuid-da-entrega
X-Castilho-Signature: t=1758374400,v1=8f3a…hex
{
"id": "7c1e…",
"evento": "message.received",
"tenant_id": "<uuid>",
"criado_em": "2026-09-20T12:00:00.000Z",
"dados": { … }
}
O id é igual ao X-Castilho-Delivery. Use-o como chave de idempotência: numa nova tentativa, a mesma entrega chega com o mesmo id.
Entrega confiável
- Responda 2xx em até 10 s. Qualquer outra coisa (erro, timeout, DNS) conta como falha.
- Novas tentativas em 1 min, 5 min, 15 min e 1 h. Depois de 5 tentativas, a entrega aparece no painel (Integrações → Entregas) com botão de reenviar.
message.receivedemessage.echosaem na hora, poucos segundos depois da Meta entregar. Os demais eventos saem no ciclo de 1 minuto.- A ordem entre entregas não é garantida; dentro de uma conversa, ordene por
dados.message.timestamp.
Como verificar a assinatura
v1 = HMAC-SHA256(secret, "<t>.<corpo cru>"), em hex minúsculo. Rejeite se o carimbo tiver mais de 300 s e compare em tempo constante. Use o corpo cru: reserializar o JSON muda os bytes e invalida a assinatura.
Vetor de teste: secret whsec_teste, t = 1700000000, corpo {"id":"d1","evento":"ping"} → v1 = 144ed65255014b00c5de7faf72d1a7d29015b86b7e78bc32f0dd21bd5ad2da8f.
Node (Express)
import crypto from "node:crypto";
import express from "express";
const SECRET = process.env.WEBHOOK_SECRET;
const app = express();
app.post("/webhook", express.raw({ type: "application/json" }), (req, res) => {
const header = req.get("x-castilho-signature") ?? "";
const partes = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const t = Number(partes.t);
if (!Number.isFinite(t) || Math.abs(Date.now() / 1000 - t) > 300) return res.sendStatus(401);
const esperado = crypto.createHmac("sha256", SECRET).update(`${t}.${req.body}`).digest("hex");
const recebido = Buffer.from(partes.v1 ?? "", "hex");
if (recebido.length !== 32 || !crypto.timingSafeEqual(Buffer.from(esperado, "hex"), recebido)) {
return res.sendStatus(401);
}
const evento = JSON.parse(req.body);
res.sendStatus(200); // responda antes de processar
processar(evento).catch(console.error);
});
Python (FastAPI)
import hmac, hashlib, json, time, os
from fastapi import FastAPI, Request, Response
SECRET = os.environ["WEBHOOK_SECRET"].encode()
app = FastAPI()
@app.post("/webhook")
async def webhook(req: Request):
corpo = await req.body() # bytes crus
header = req.headers.get("x-castilho-signature", "")
partes = dict(p.split("=", 1) for p in header.split(",") if "=" in p)
try:
t = int(partes["t"])
except (KeyError, ValueError):
return Response(status_code=401)
if abs(time.time() - t) > 300:
return Response(status_code=401)
esperado = hmac.new(SECRET, f"{t}.".encode() + corpo, hashlib.sha256).hexdigest()
if not hmac.compare_digest(esperado, partes.get("v1", "")):
return Response(status_code=401)
evento = json.loads(corpo)
# enfileire e responda 200 rápido
return {"ok": True}
Fluxo típico de uma IA
- Recebe
message.receivedCom a conversa em modo IA. - Busca o contexto
GET /agent-config(persona, produtos, regras) eGET /messages-list(histórico). - Responde
POST /whatsapp-send, e agenda ou cria tarefa se for o caso. - Precisa de gente?
POST /conversation-updatecommodo: "humano"e a equipe certa.
Integração com IAs
Claude e outras IAs gerenciam tudo por MCP
O servidor MCP da FlashConnect usa a mesma API key e os mesmos escopos. Conecte no Claude, ChatGPT ou n8n e peça em linguagem natural: a IA opera o atendimento e também configura a plataforma.
Operar
listar_conversas, ler_conversa, enviar_mensagem, atualizar_conversa, buscar_contatos, atualizar_contato, listar_numeros, status_setup
Agenda e tarefas
listar_agendas, horarios_livres, listar_agendamentos, marcar_agendamento, alterar_agendamento, listar_tarefas, criar_tarefa, alterar_tarefa
Configurar agentes
ver_agente, listar_agentes, salvar_agente
Catálogo e conhecimento
listar_catalogo, salvar_produto, remover_produto, salvar_conhecimento, remover_conhecimento
Templates
listar_templates, criar_template
Webhooks
listar_webhooks, criar_webhook, alterar_webhook, remover_webhook
O que dá para pedir
"Mostre as conversas em modo IA e responda a da Ana confirmando a consulta de amanhã."
"Crie um agente de vendas com tom informal e cadastre estes 10 produtos."
"Marque um horário na agenda para sexta e crie uma tarefa de follow-up."
"Crie um template de lembrete de consulta e um webhook para o meu n8n."
Como conectar
- Abra o painel em Conectar IAEscolha o destino (Claude, ChatGPT, outras IAs ou sistema próprio). Cada um mostra só as instruções daquele destino.
- Gere a chave com os escopos certosSó leitura para consultar; envio e escrita para operar.
- Peça para a IA rodar
status_setupEla lê o que já está pronto e guia o próximo passo. O que exige navegador (conectar o número, cartão) vira um link que a IA entrega.
Segurança do MCP: cada ferramenta exige um escopo. Chave só de leitura não envia mensagem nem altera nada: recebe ESCOPO_INSUFICIENTE. Tudo é isolado por cliente e as ações ficam registradas.
Para o time técnico
Códigos de erro
Toda resposta de erro tem erro (mensagem legível) e codigo (estável, para o seu código tratar).
| HTTP | Código | Significado |
|---|---|---|
| 401 | NAO_AUTENTICADO | Sem cabeçalho Authorization |
| 401 | CHAVE_INVALIDA / CHAVE_REVOGADA | API key não existe ou foi revogada |
| 403 | ESCOPO_INSUFICIENTE | A chave não tem o escopo do endpoint |
| 404 | CONVERSA_NAO_ENCONTRADA, CONTATO_NAO_ENCONTRADO… | Recurso não existe ou é de outro cliente |
| 409 | JANELA_EXPIRADA | Fora das 24h: use template |
| 409 | HORARIO_INDISPONIVEL | Horário ocupado ou fora dos livres: consulte de novo |
| 409 | OPT_OUT | O contato pediu para não receber |
| 409 | SEM_CREDENCIAL | Conexão sem token: reconectar o WhatsApp |
| 502 | NUMERO_NAO_WHATSAPP | O destino não tem WhatsApp; não tente de novo |
| 502 | LIMITE_QUALIDADE | Meta limitou o número por qualidade; pause envios ativos |
| 502 | RATE_LIMIT | Muitas chamadas: tente de novo com espera |
| 502 | TEMPLATE_INVALIDO | Revise nome, idioma e parâmetros do template |
| 502 | TOKEN_INVALIDO | O cliente precisa reconectar o WhatsApp |
Nos erros 502 da Meta, o campo codigo_meta traz o código original da Meta.
Ajuda
Perguntas frequentes
Preciso trocar de número?
Corro risco de banimento?
Quem paga as mensagens?
O que é a janela de 24h?
Por que abrir o app a cada 13 dias?
Grupos funcionam?
Já tenho um sistema, CRM ou n8n. Preciso usar o painel?
Quem paga a IA?
Onde ficam os meus dados?
Fale com a gente
Quer entrar no acesso fechado, tirar uma dúvida técnica, conhecer o plano Escale ou ver uma demonstração? Chame o nosso time.
Falar no WhatsApp · +55 19 98960-7650