API CapiBLU — v1
Os mesmos dados que a plataforma usa, em JSON, para o seu CRM, seu discador ou sua automação. Autenticação por token, um endpoint por pergunta.
https://app.capiblu.net/api/v1
1. Introdução
A API do CapiBLU expõe o que a plataforma alcança: cadastro de empresas da Receita Federal, quadro de sócios com CPF resolvido, possíveis decisores com cargo, vínculos empregatícios da RAIS, telefones priorizados por atualidade e parentes.
O que dá para fazer
- Buscar empresas por UF, município, CNAE, porte e capital social
- Trazer sócios com CPF resolvido e decisores com cargo e nível de decisão
- Consultar quem trabalha (ou trabalhou) numa empresa, pela RAIS
- Descobrir onde uma pessoa trabalha, a partir do CPF
- Montar contatos prontos para abordagem, com telefone do mais atual para o mais antigo
- Puxar o JSON bruto de cada fonte quando precisar de um campo que a tela não mostra
- Acompanhar o próprio consumo e o limite diário
Pré-requisito: um token de API, gerado por um administrador no painel administrativo.
2. Autenticação
Toda requisição leva o token no header:
Authorization: Bearer capi_a1b2c3d4_xxxxxxxxxxxxxxxxxxxxxxxx
Como obter
Um administrador cria o token no painel (aba Painel administrativo → Tokens de API). O valor em claro aparece uma única vez, na criação — o CapiBLU guarda apenas o hash. Se perder, revogue e gere outro.
Escopos
| Escopo | O que libera |
|---|---|
leitura | Só o que sai de base local: empresas, sócios, busca por nome, cadastro de CPF. Não gera custo. |
consulta | Também o que gasta consulta paga: telefones, decisores, RAIS, parentes, conexões. |
Token leitura que chamar rota paga recebe 403 com explicação.
Serve para entregar acesso a um sistema de leitura sem risco de ele gerar custo.
3. Conceitos gerais
3.1 Datas
ISO 8601 em UTC: 2026-08-19T17:00:00Z. Datas que vêm de base pública
(RAIS, Receita) podem chegar no formato original dd/mm/aaaa — nesse
caso o campo tem sufixo _br.
3.2 Filtros
GET /api/v1/empresas?uf=MG&municipio=GOVERNADOR%20VALADARES&porte=05
3.3 Paginação
| Parâmetro | Tipo | Descrição |
|---|---|---|
page | integer | Página, começando em 1 |
limit | integer | Registros por página (o máximo varia por rota) |
3.4 Estrutura das respostas
Todo retorno bem-sucedido usa o mesmo envelope:
{
"data": [ ... ],
"meta": { "total": 100, "page": 1, "limit": 20, "fonte": "Receita Federal" }
}
E todo erro tem corpo previsível:
{ "error": { "code": "cnpj_invalido", "message": "CNPJ deve ter 14 dígitos." } }
| Status | Quando acontece |
|---|---|
200 | Sucesso |
400 | Requisição inválida (documento malformado, filtro impossível, campo inexistente) |
401 | Token ausente, inválido ou revogado |
403 | Escopo insuficiente, usuário inativo, ou rota só de admin |
404 | Documento não encontrado na fonte |
429 | Limite diário de consultas atingido |
502 / 503 | Serviço de dados indisponível |
3.5 Custo por chamada
Rotas marcadas gasta consulta consomem o limite diário
do usuário dono do token — o mesmo contador da plataforma. Rotas
base local não consomem nada. Veja o saldo em
GET /conta.
200 com data: [] e um
meta.aviso explicando. É resposta legítima, não falha.4.1 Conta
Quem é o dono do token, qual token está em uso e quanto ainda cabe de consulta hoje.
{
"data": {
"usuario": { "id": 1, "nome": "Rebeca", "email": "rebeca@…", "role": "admin" },
"token": { "id": 3, "nome": "Integração CRM", "escopo": "consulta" },
"limites": { "consultas_por_dia": 100, "usadas_hoje": 12, "restantes_hoje": 88, "ilimitado": false }
},
"meta": { "gerado_em": "2026-08-19T20:14:03Z" }
}
4.2 Empresas
Busca na base local da Receita Federal.
| Parâmetro | Tipo | Descrição |
|---|---|---|
uf | string | Sigla do estado |
municipio | string | Nome do município |
cnae | string | Código CNAE (vários separados por vírgula) |
porte | string | 01 micro · 03 pequeno · 05 demais |
situacao | string | Ex.: ATIVA |
capital_min / capital_max | integer | Faixa de capital social |
com_telefone | boolean | Só empresas com telefone na Receita |
somente_matriz | boolean | Exclui filiais |
texto | string | Busca livre por razão social / nome fantasia |
page / limit | integer | Paginação (limit máximo 200) |
05 é o balde de médias e grandes. Para chegar nas grandes,
combine porte=05 com capital_min.Cadastro completo: razão social, situação, CNAE, endereço, capital social e QSA.
Quadro de sócios com CPF resolvido quando a base local consegue cruzar.
{ "data": [ { "nome": "CELIO COUTINHO DA CUNHA",
"qualificacao": "Sócio-Administrador",
"cpf": "03702149600", "data_entrada": "2021-06-10" } ],
"meta": { "total": 1, "fonte": "Receita Federal (QSA)" } }
Possíveis decisores com cargo, classificados em três níveis de decisão.
| Parâmetro | Tipo | Descrição |
|---|---|---|
nivel | string | 1 decide sozinho · 2 decide na área · 3 influencia |
cargo | string | Filtro por cargo, ex.: diretor |
page / limit | integer | Paginação |
meta.aviso explica e
data vem vazio.Vínculos declarados na RAIS: nome, CPF, admissão, desligamento e tempo de casa.
| Parâmetro | Tipo | Descrição |
|---|---|---|
situacao | string | ativos ou desligados |
page / limit | integer | Paginação (limit máximo 500) |
meta.referencia): quem entrou depois não
aparece, e "ativo" significa "estava lá naquela data". De quem saiu, a base
informa dia e mês, sem o ano.O endpoint de prospecção: sócios e decisores já com telefone priorizado.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
incluir_decisores | boolean | true | Anexa decisores que não são sócios |
cargos | string | — | Filtro de cargo dos decisores |
max_decisores | integer | 3 | Teto por empresa |
max_telefones | integer | 3 | Telefones por contato |
tipo_telefone | string | celular | celular, celular_fixo ou todos |
fonte_telefone | string | assertiva | assertiva ou mk |
Os telefones vêm do mais atual para o mais antigo, usando o último contato registrado, linha quente e se o número é do próprio titular.
Sócios, possíveis decisores e empresas ligadas — com telefone e indicação de WhatsApp.
4.3 Pessoas
Busca por nome na base local de CPF.
| Parâmetro | Tipo | Descrição |
|---|---|---|
nome | string | Obrigatório, mínimo 3 caracteres |
ampla | boolean | true procura nomes compostos parecidos |
page / limit | integer | Paginação |
Cadastrais: nome, nascimento, sexo e nome da mãe quando disponível.
Telefones da pessoa, ordenados do mais atual para o mais antigo.
Onde a pessoa trabalha ou trabalhou, pela RAIS — o inverso do CNPJ.
Mãe, pai, filhos, irmãos, cônjuge e sócios, com telefone quando
existe. Funde duas fontes e marca a origem de cada linha em fonte.
4.4 Telefones
Telefone reverso: CPFs e CNPJs atrelados ao número. Aceita 10 ou 11 dígitos com DDD, com ou sem máscara.
Confirma se o número é daquele CPF/CNPJ e avisa quando é linha compartilhada.
4.5 JSON bruto das fontes
Cada fonte devolve muito mais campo do que a tela mostra. Nestas rotas o
meta.bruto vem true: o data é o JSON da fonte,
sem tradução nossa. Use quando precisar de um campo que a API tratada não expõe.
| Rota | O que devolve |
|---|---|
GET /empresas/{cnpj}/assertiva | Resposta completa da Assertiva para o CNPJ, sem recorte |
GET /pessoas/{cpf}/assertiva | Resposta completa da Assertiva para o CPF |
GET /pessoas/{cpf}/mk | Perfil Mk: renda, score, endereços, parentes, vizinhos, benefícios |
GET /pessoas/{cpf}/contatos | Telefones e e-mails pela Serasa |
GET /empresas/{cnpj}/contatos-serasa | Telefones e e-mails da empresa pela Serasa |
GET /empresas/{cnpj}/linkedin | Funcionários com cargo pelo LinkedIn |
GET /assertiva/telefone/{numero} | Dono do telefone, resposta completa |
GET /assertiva/email/{email} | Quem está por trás do e-mail |
POST /pessoas/busca-avancada | Busca por nome e/ou endereço na Assertiva |
Todas gastam consulta e são JSON bruto.
4.6 Visões compostas — tudo numa chamada
GET /empresas/{cnpj}/completo?incluir=cadastro,socios,decisores,funcionarios,conexoes,assertiva,linkedin
Cada bloco é opcional e cada bloco pago gasta consulta — peça só o que vai usar. Um bloco que falha não derruba os outros:
{
"data": { "cadastro": {...}, "socios": [...], "decisores": {...} },
"meta": {
"blocos": ["cadastro", "socios", "decisores"],
"falhas": { "funcionarios": "A base RAIS respondeu 504." }
}
}
Medido no CNPJ da Google Brasil com cinco blocos: cadastro, 3 sócios, 602 decisores, 1.023 funcionários e 14 conexões, tudo em uma resposta.
GET /pessoas/{cpf}/completo?incluir=cadastro,mk,assertiva,vinculos,parentes,serasa
Mesma mecânica: meta.blocos diz o que veio, meta.falhas
diz o que não veio e por quê. Bloco inexistente devolve
400 bloco_invalido listando os aceitos.
4.7 Lote
O "Minha planilha" em API: manda CNPJs e a lista de campos, recebe uma linha por CNPJ. Máximo de 200 por chamada.
curl -X POST "$BASE/enriquecimento" \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"cnpjs":["06990590000123"],
"campos":["rfb_razao","rfb_municipio","as_empresa_tel"]}'
Campos da Receita não gastam consulta; campos de fonte paga gastam
(meta.gasta_consulta avisa qual foi o caso).
meta.campos_ignorados; se nenhum
campo for válido, a resposta é 400 campos_desconhecidos. O catálogo
está em GET /enriquecimento/campos.Catálogo dos campos aceitos, agrupados por fonte, com indicação de quais cobram.
Mede em quantas empresas da lista existe decisor na base, sem puxar telefone. Serve para decidir se vale rodar a prospecção antes de gastar. Máximo de 60 CNPJs.
{ "meta": { "testadas": 3, "com_decisor": 1, "taxa": 33.3, "consultas_gastas": 6 } }
Sócios e pessoas por filtros de empresa (UF, município, CNAE, porte), direto da base local.
4.8 Apoio, consumo e dossiê
Quais fontes estão ativas, o que cada uma entrega e se cobra. Bom para o seu sistema degradar sozinho quando uma fonte cai.
Listas de domínio para montar filtro: cnae,
natureza, municipio, pais,
qualificacao, motivo.
Consumo de hoje, limite e tokens do usuário. Para token de admin,
inclui o relatório do período (?dias=30) com o total oficial da Assertiva.
Devolve application/pdf, não JSON. tipo é cpf
ou cnpj; aceita insight=true (resumo por IA) e
familia=true (consulta os parentes).
curl -H "Authorization: Bearer $TOKEN" \
"$BASE/dossie/cnpj/06990590000123?insight=true" -o dossie.pdf
5. Administração de tokens
Estas rotas usam sessão de administrador, não token de API — é o que a tela do painel consome.
| Método | Rota | Descrição |
|---|---|---|
| GET | /api/admin/tokens | Lista tokens (só o prefixo, nunca o segredo) |
| POST | /api/admin/tokens | Cria token. Body: {user_id, nome, escopo} |
| DELETE | /api/admin/tokens/{id} | Revoga um token |
O token herda o limite diário do usuário a que pertence. Para dar mais folga a uma integração, ajuste o limite desse usuário no painel.
6. Objetos e relacionamentos
| Objeto | Descrição | Relacionamentos |
|---|---|---|
| Empresa | CNPJ na base da Receita | tem Sócios, Decisores, Funcionários, Conexões |
| Sócio | Pessoa no quadro societário | pertence a Empresa; é uma Pessoa quando o CPF resolve |
| Decisor | Gestor ligado ao CNPJ, com cargo e nível | pertence a Empresa; é uma Pessoa |
| Funcionário | Vínculo declarado na RAIS | liga Pessoa e Empresa, com admissão e desligamento |
| Pessoa | CPF na base local | tem Telefones, Vínculos, Parentes |
| Contato | Sócio ou Decisor já com telefone | o que a prospecção consome |
7. Casos de uso comuns
Enriquecer um CRM com quem decide
# 1. acha as empresas do perfil
curl -H "Authorization: Bearer $CAPIBLU_TOKEN" \
"$BASE/empresas?uf=MG&porte=05&capital_min=1000000&limit=50"
# 2. para cada CNPJ, pega contatos com telefone
curl -H "Authorization: Bearer $CAPIBLU_TOKEN" \
"$BASE/empresas/06990590000123/contatos?max_decisores=2&tipo_telefone=celular"
Descobrir onde um lead trabalha, a partir do CPF
curl -H "Authorization: Bearer $CAPIBLU_TOKEN" \
"$BASE/pessoas/03702149600/vinculos"
Validar de quem é um número que ligou
curl -H "Authorization: Bearer $CAPIBLU_TOKEN" \
"$BASE/telefones/33997332652"
Controlar custo antes de rodar em lote
curl -H "Authorization: Bearer $CAPIBLU_TOKEN" "$BASE/conta"
# → data.limites.restantes_hoje diz quantas consultas ainda cabem
curl -X POST "$BASE/prospeccao/cobertura" -H "Authorization: Bearer $CAPIBLU_TOKEN" \
-H 'Content-Type: application/json' -d '{"cnpjs":["…","…"]}'
# → meta.taxa diz se vale rodar a lista inteira
8. Boas práticas
- Um token por integração, com nome que diga quem usa. Revogar fica cirúrgico.
- Escopo
leiturapor padrão. Só suba paraconsultao que precisa gastar. - Trate o 429. O limite é diário e por usuário: espere o dia virar ou peça mais folga a um admin.
- Cacheie do seu lado. CNPJ e RAIS mudam devagar; consultar o mesmo documento duas vezes no mesmo dia é dinheiro fora.
- Não trate ausência como erro.
200comdata: []e ummeta.avisoé resposta legítima. - Peça só os blocos que usa em
/completo— cada bloco pago cobra separado.