API REST em JSON para ler empresas, mover etapas, registrar interações e baixar o PDF de diagnóstico. Base: /api/v1
Gere o token em Configurações → Integração com o CRM (apenas o administrador). Envie em todas as chamadas:
Authorization: Bearer nf_<48 caracteres>
Sem token, ou com token revogado: 401. Token somente leitura em rota de escrita: 403. Limite: 180 requisições por minuto por token (429). Use o token só em servidor, nunca no navegador.
export NF= export TOKEN=nf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/api/v1/empresasFiltros: etapa, cnpj, q (nome), atualizado_desde (ISO), limite (até 200), deslocamento.
curl -s "$NF/api/v1/empresas?etapa=conversa&limite=20" \ -H "Authorization: Bearer $TOKEN"
{
"total": 1, "limite": 20, "deslocamento": 0,
"itens": [{
"id": 1, "cnpj": "99100000000100", "demo": true,
"razao_social": "Vitalis Serviços Médicos Ltda", "nome_fantasia": "Clínica Vitalis Demo",
"situacao_cadastral": "Ativa", "cnae": "8630504", "segmento": "saude", "porte": "EMPRESA DE PEQUENO PORTE",
"capital_social": 250000, "uf": "PR", "municipio": "Curitiba", "telefone": "5541999990000",
"site": "https://www.clinicavitalis.example", "funcionarios": 14,
"faturamento_estimado_mensal": 112345, "faturamento_acima_30k": "sim",
"ia_score": 23, "ia_classe": "Sem IA", "potencial": 84, "etapa": "conversa", "valor_previsto": 4800
}]
}
/api/v1/empresas/{id}Detalhe com raio-x (evidências e lacunas) e as últimas 50 interações.
curl -s "$NF/api/v1/empresas/1" -H "Authorization: Bearer $TOKEN"
/api/v1/empresas escritaCria a empresa e coloca a consulta de CNPJ e o raio-x na fila. Campos: cnpj (obrigatório), site, funcionarios, telefone, notas. 409 se já existir; 400 se o CNPJ for inválido.
curl -s -X POST "$NF/api/v1/empresas" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"cnpj":"00.000.000/0001-91","site":"www.bb.com.br","funcionarios":120}'
/api/v1/empresas/{id} escritaAltera etapa (e motivo obrigatório se for perdida), notas e valor_previsto. Mudar a etapa dispara o webhook.
curl -s -X PATCH "$NF/api/v1/empresas/1" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"etapa":"proposta","valor_previsto":4800}'
Etapas válidas: encontrada qualificada abordada conversa demo proposta fechada perdida.
/api/v1/empresas/{id}/interacoes escritatipo: nota, whatsapp, email, ligacao, reuniao, linkedin ou demo. Útil para o seu CRM espelhar o que acontece na conversa.
curl -s -X POST "$NF/api/v1/empresas/1/interacoes" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"tipo":"reuniao","texto":"Demo feita; pediu proposta com 2 frentes."}'
/api/v1/empresas/{id}/pdfcurl -s "$NF/api/v1/empresas/1/pdf" -H "Authorization: Bearer $TOKEN" -o diagnostico.pdf
/api/v1/cnpj/{cnpj}Consulta real (BrasilAPI → CNPJ.ws → ReceitaWS), com cache de 30 dias. Erros: 400 CNPJ inválido, 404 não consta, 429 limite das bases públicas, 503/504 indisponível.
curl -s "$NF/api/v1/cnpj/00000000000191" -H "Authorization: Bearer $TOKEN"
/api/v1/raioxBaixa a página inicial (somente sites públicos; endereços internos são bloqueados) e devolve score de maturidade de IA, classe, evidências e lacunas.
curl -s -X POST "$NF/api/v1/raiox" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"url":"www.empresa.com.br"}'
curl -s "$NF/api/v1/exportar.csv" -H "Authorization: Bearer $TOKEN" -o empresas.csv # CSV com ; e UTF-8 BOM curl -s "$NF/api/v1/indicadores" -H "Authorization: Bearer $TOKEN" # funil, conversão, tempo por etapa
Cadastre a URL do seu CRM em Configurações. Sempre que uma empresa muda de etapa (pela tela ou pela API) o Radar envia um POST com até 3 tentativas (0 s, 1,5 s e 6 s). Responda 2xx para confirmar.
POST https://seu-crm.exemplo/webhooks/neuroflux
Content-Type: application/json
X-NeuroFlux-Event: empresa.etapa_alterada
X-NeuroFlux-Signature: sha256=3b1f…
{
"evento": "empresa.etapa_alterada",
"em": "2026-11-04T14:03:22.114Z",
"de": "conversa", "para": "demo", "motivo": null, "por": "Camila Duarte",
"empresa": { "id": 1, "cnpj": "…", "nome_fantasia": "…", "etapa": "demo", "ia_classe": "Sem IA", "valor_previsto": 4800 }
}
A assinatura é HMAC-SHA256 do corpo bruto com o segredo mostrado ao gerar o webhook. Compare em tempo constante.
// Node.js
const crypto = require('crypto');
const esperado = 'sha256=' + crypto.createHmac('sha256', process.env.NF_SEGREDO).update(corpoBruto).digest('hex');
const ok = crypto.timingSafeEqual(Buffer.from(esperado), Buffer.from(req.headers['x-neuroflux-signature']));
# Python import hmac, hashlib esperado = 'sha256=' + hmac.new(SEGREDO.encode(), corpo_bruto, hashlib.sha256).hexdigest() ok = hmac.compare_digest(esperado, request.headers['X-NeuroFlux-Signature'])
| Código | Significado |
|---|---|
| 400 | Dado inválido (CNPJ, etapa, campo ausente). O corpo traz {"erro":"…"} em português. |
| 401 | Token ausente, inválido ou revogado. |
| 403 | Token sem permissão de escrita. |
| 404 | Empresa não encontrada. |
| 409 | Empresa já existe (CNPJ duplicado). |
| 429 | Limite de requisições ou das bases públicas de CNPJ. |
capital_social é o patrimônio declarado no contrato social.atualizado_desde a cada poucos minutos.