Começar agora
Configure a URL base, proteja sua chave e faça a primeira consulta por CNPJ.
1. Obtenha uma chave
O fluxo comercial de emissão de chaves ainda está a confirmar. Enquanto ele não estiver disponível, a equipe operadora cria a chave e a entrega uma única vez por canal seguro. Nunca envie chaves por issue, commit ou log.
Salve a credencial em uma variável de ambiente:
export CNPJ_API_KEY='cnpj_live_SUBSTITUA'
export CNPJ_API_BASE_URL='https://api.seudominio.com'Para desenvolvimento local, use http://localhost:8000 como URL base e uma chave de ambiente development, quando API_REQUIRE_KEY=true.
2. Faça a primeira chamada
O CNPJ deve conter 14 dígitos sem pontuação. Este exemplo usa o endpoint real de perfil cadastral:
curl --fail-with-body \
"$CNPJ_API_BASE_URL/v1/cnpjs/00000000000191" \
-H "X-API-Key: $CNPJ_API_KEY"Python
import os
import requests
base_url = os.environ["CNPJ_API_BASE_URL"]
api_key = os.environ["CNPJ_API_KEY"]
response = requests.get(
f"{base_url}/v1/cnpjs/00000000000191",
headers={"X-API-Key": api_key},
timeout=10,
)
response.raise_for_status()
perfil = response.json()
print(perfil["empresa"]["razao_social"])JavaScript / TypeScript
const baseUrl = process.env.CNPJ_API_BASE_URL!;
const apiKey = process.env.CNPJ_API_KEY!;
const response = await fetch(`${baseUrl}/v1/cnpjs/00000000000191`, {
headers: { 'X-API-Key': apiKey },
signal: AbortSignal.timeout(10_000),
});
if (!response.ok) {
throw new Error(`CNPJ API: ${response.status} ${await response.text()}`);
}
const perfil = await response.json();
console.log(perfil.empresa.razao_social);Não coloque uma chave secreta em código executado no navegador. Em frontend, faça a chamada por um backend sob seu controle.
3. Interprete a resposta
{
"cnpj": "00000000000191",
"empresa": {
"cnpj_basico": "00000000",
"razao_social": "...",
"porte_empresa": "..."
},
"estabelecimento": {
"cnpj_completo": "00000000000191",
"situacao_cadastral": "...",
"cnae_fiscal_principal": "...",
"uf": "DF"
},
"simples": null,
"resumos": {
"estabelecimentos": {
"total": 1,
"href": "/v1/cnpjs/00000000000191/estabelecimentos"
}
},
"fontes": {
"cnpj": { "status": "disponivel", "versao": "..." }
},
"snapshot_fingerprint": "..."
}empresarepresenta a raiz de oito dígitos;estabelecimentorepresenta o CNPJ completo consultado;simplespode sernull;resumosaponta para as coleções relacionadas;fontesinforma disponibilidade e versão do snapshot;snapshot_fingerprintmuda quando as versões publicadas mudam.
4. Evolua a integração
Use ETag/If-None-Match, trate 429 com espera indicada por Retry-After e diferencie uma lista vazia de fonte.status: "indisponivel". Veja erros, paginação e boas práticas.