Autenticação por chave de API
A chave vai no header Authorization como Bearer, identifica a conta inteira e pode ser rotacionada sem interrupção. Nunca em query string, código versionado ou frontend.
Toda chamada a /v1, exceto GET /v1/status e GET /v1/demo, leva a chave da conta no header Authorization: Bearer <chave>. A chave é criada e revogada em app.cnpj.ia.br, aparece uma única vez e identifica a conta, não a pessoa: créditos, plano e limite de requisições por minuto são da conta, e todas as chaves dela somam.
Como enviar a chave
Só no header. A API não aceita chave em query string nem em cookie, e uma URL com chave acaba em log de proxy, histórico de navegador e sistema de monitoramento.
curl
curl "https://api.cnpj.ia.br/v1/usage" \
-H "Authorization: Bearer $CNPJIA_KEY"
Python
import os, requests
s = requests.Session()
s.headers["Authorization"] = f"Bearer {os.environ['CNPJIA_KEY']}"
print(s.get("https://api.cnpj.ia.br/v1/usage", timeout=10).json())
Node
const headers = { Authorization: `Bearer ${process.env.CNPJIA_KEY}` };
const res = await fetch("https://api.cnpj.ia.br/v1/usage", { headers });
console.log(await res.json());
O formato da chave é cnpj_live_ seguido do segredo. O prefixo existe para que scanners de segredo em repositórios reconheçam o padrão; trate qualquer string com esse prefixo como credencial.
O que a chave dá acesso
A chave autoriza as operações do plano da conta. Uma operação fora do plano responde 403 insufficient_plan sem consumir crédito: no Free, por exemplo, a busca de empresas não está disponível. O que cada plano inclui está em /precos e no OpenAPI, campo x-plan-min de cada operação.
Não existe escopo por chave no v0: toda chave da conta tem os mesmos direitos. Se você precisa isolar um sistema, crie uma chave por sistema: revogar uma não afeta as outras.
Erros de autenticação
| Status | Código | Quando | O que fazer |
|---|---|---|---|
| 401 | invalid_api_key |
Header ausente, chave desconhecida ou revogada | Conferir a variável de ambiente; criar chave nova no portal se a antiga foi revogada |
| 401 | key_expired |
A chave expirou | Criar chave nova no portal |
| 403 | insufficient_plan |
Operação fora do plano da conta | Trocar de plano em /precos; a chave não muda |
| 403 | payment_required |
Cobrança em atraso há mais de 7 dias | Regularizar o pagamento no portal; a chave volta a funcionar sem recriar |
Nenhum erro consome crédito. O envelope completo está em Erros e retentativas.
Rotação e revogação
Para trocar uma chave sem parar o sistema: crie a nova no portal, troque no cliente, confirme que as chamadas passam e revogue a antiga. Na API, a revogação vale imediatamente. No servidor MCP, que valida a chave com um cache curto, a chave revogada pode ser aceita por até 60 segundos; depois disso é recusada.
Revogue na hora se a chave apareceu em um commit, em um log ou em uma captura de tela. Não há como “desvazar” uma chave; a única ação segura é substituí-la.
Endpoints sem chave
GET /v1/status devolve a data da base e o estado do serviço; GET /v1/demo?cnpj= devolve o perfil full de uma lista fixa de instituições públicas, sem sócios. Custam 0 e 0 créditos, aceitam CORS e têm limite por IP. São feitos para páginas públicas e para testes antes de criar a conta, não para uso em produção.
Perguntas frequentes
Posso ter mais de uma chave na mesma conta?
Sim. Crie uma chave por sistema ou por ambiente. Todas gastam a mesma franquia e contam para o mesmo limite de requisições por minuto. Revogar uma não afeta as outras.
A API aceita OAuth ou só chave?
Só chave, no header Authorization: Bearer. A chave é da conta e serve para a API e para o servidor MCP. OAuth não faz parte do contrato /v1.
Quanto tempo uma chave revogada continua funcionando?
Na API, nenhum: a revogação vale na próxima requisição. No servidor MCP, a chave é validada com um cache de até 60 segundos, então chamadas feitas nessa janela ainda podem ser aceitas antes da recusa.
O que acontece se eu passar a chave na URL?
A API ignora a query string para autenticação e responde 401 invalid_api_key. Se você fez isso em produção, considere a chave vazada, porque ela foi para logs no caminho; revogue e crie outra.