Do zero ao primeiro resultado: faça sua primeira consulta processual via código em menos de 15 minutos, com exemplos funcionais em Python e Node.js.
Se você chegou até aqui, provavelmente já sabe o que é uma API jurídica e quer saber o como. Este tutorial vai te levar do zero a uma integração funcional com a API da Judit, com exemplos completos em Python e Node.js que você pode copiar, adaptar e rodar agora mesmo.
Como obter sua API Key → Como autenticar nas requisições → Como fazer sua primeira consulta por CPF ou CNPJ → Como interpretar a resposta JSON → Como lidar com paginação e erros → Boas práticas para produção
Pré-requisitos
- Uma conta na Judit com API Key — crie em produto.judit.io/api (tem camada gratuita)
- Python 3.8+ ou Node.js 18+ instalado na sua máquina
- Familiaridade básica com linha de comando e conceito de HTTP
Passo 1 — Obtendo sua API Key
Antes de qualquer código, você precisa de uma chave de autenticação. A API Key é como uma senha que identifica sua conta em cada requisição — sem ela, a API recusa qualquer acesso.
Acesse produto.judit.io/api
Crie sua conta (ou faça login) e navegue até a seção de API Keys. Gere uma nova chave e guarde em lugar seguro — ela não é exibida novamente depois de criada. Veja os planos disponíveis para escolher o que melhor atende sua necessidade.
Nunca coloque sua API Key diretamente no código que vai para um repositório público (GitHub, GitLab). Use variáveis de ambiente (JUDIT_API_KEY) para armazená-la de forma segura.
Passo 2 — Entendendo a estrutura básica de uma requisição
Toda requisição para a API da Judit segue o mesmo padrão: você envia um POST para o endpoint com um body JSON descrevendo o que quer consultar, e inclui sua API Key no header de autorização. Consulte a documentação completa para detalhes sobre todos os parâmetros disponíveis.
Endpoint base:
POST https://requests.prod.judit.io/requests # Header obrigatório: Authorization: Bearer SUA_API_KEY_AQUI Content-Type: application/json
Passo 3 — Sua primeira consulta por CPF ou CNPJ
O exemplo abaixo consulta todos os processos associados a um CPF específico. O campo search_type define o tipo de busca, e search_key é o valor a pesquisar.
import requests import os import json # Carrega a API Key da variável de ambiente API_KEY = os.getenv("JUDIT_API_KEY") ENDPOINT = "https://requests.prod.judit.io/requests" def consultar_processos(cpf_ou_cnpj: str) -> dict: """Consulta processos judiciais por CPF ou CNPJ.""" # Headers da requisição headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # Body da requisição payload = { "search_type": "cpf_cnpj", # tipo de busca "search_key": cpf_ou_cnpj, # valor a pesquisar "response_type": "lawsuits" # tipo de resposta desejada } try: response = requests.post( ENDPOINT, headers=headers, json=payload, timeout=30 ) response.raise_for_status() # Lança exceção se status != 2xx return response.json() except requests.exceptions.HTTPError as e: print(f"Erro HTTP: {e.response.status_code} - {e.response.text}") except requests.exceptions.Timeout: print("Timeout: a requisição demorou mais de 30 segundos") except requests.exceptions.RequestException as e: print(f"Erro na requisição: {e}") return None # Exemplo de uso if __name__ == "__main__": resultado = consultar_processos("12345678901") # CPF sem pontuação if resultado: print(f"Request ID: {resultado.get('request_id')}") print(json.dumps(resultado, indent=2, ensure_ascii=False))
// Usa a Fetch API nativa do Node.js 18+ const API_KEY = process.env.JUDIT_API_KEY; const ENDPOINT = 'https://requests.prod.judit.io/requests'; async function consultarProcessos(cpfOuCnpj) { const payload = { search_type: 'cpf_cnpj', // tipo de busca search_key: cpfOuCnpj, // valor a pesquisar response_type: 'lawsuits' // tipo de resposta desejada }; try { const response = await fetch(ENDPOINT, { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); if (!response.ok) { const errorBody = await response.text(); throw new Error(`HTTP ${response.status}: ${errorBody}`); } const data = await response.json(); return data; } catch (error) { console.error('Erro na consulta:', error.message); return null; } } // Exemplo de uso consultarProcessos('12345678901') .then(resultado => { if (resultado) { console.log('Request ID:', resultado.request_id); console.log(JSON.stringify(resultado, null, 2)); } });
curl -X POST https://requests.prod.judit.io/requests \ -H "Authorization: Bearer SUA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "search_type": "cpf_cnpj", "search_key": "12345678901", "response_type": "lawsuits" }'
Passo 4 — Entendendo a resposta da API
A Judit usa um modelo assíncrono: quando você faz a requisição, recebe imediatamente um request_id. Os resultados ficam disponíveis para consulta assim que o processamento for concluído — você pode usar webhooks para ser notificado automaticamente (veremos isso no próximo artigo). Veja mais detalhes sobre o modelo de resposta na documentação oficial.
Passo 5 — Tipos de consulta disponíveis
O campo response_type controla que tipo de dado a API retorna. Confira todos os tipos suportados na documentação da Judit. Os principais valores são:
// response_type: "lawsuits" // → Todos os processos judiciais (cíveis, trabalhistas, criminais, federais) // response_type: "entity" // → Dados cadastrais (Receita Federal, situação, sócios) // response_type: "warrant" // → Mandados de prisão (consulta ao BNMP) // response_type: "criminal_execution" // → Execuções criminais (para compliance e background check)
Passo 6 — Consulta por número CNJ
Além de CPF/CNPJ, você pode consultar um processo diretamente pelo número CNJ (o número padrão de todos os processos brasileiros no formato NNNNNNN-DD.AAAA.J.TT.OOOO):
# Consulta por número CNJ payload = { "search_type": "lawsuit_cnj", "search_key": "0001234-56.2023.8.26.0100", "response_type": "lawsuit" } # Consulta por número OAB (monitora carteira de advogado) payload_oab = { "search_type": "oab", "search_key": "SP123456", "response_type": "lawsuits" }
// Consulta por número CNJ const payloadCNJ = { search_type: 'lawsuit_cnj', search_key: '0001234-56.2023.8.26.0100', response_type: 'lawsuit' }; // Consulta por OAB const payloadOAB = { search_type: 'oab', search_key: 'SP123456', response_type: 'lawsuits' };
Passo 7 — Tratamento de erros e boas práticas para produção
Uma integração de produção precisa ser resiliente. Aqui estão as práticas mais importantes:
import time from functools import wraps def retry_with_backoff(max_retries=3, base_delay=1.0): """Decorator para retry automático com backoff exponencial.""" def decorator(func): @wraps(func) def wrapper(*args, **kwargs): for attempt in range(max_retries): try: return func(*args, **kwargs) except requests.exceptions.HTTPError as e: # 429 = rate limit → espera antes de tentar novamente if e.response.status_code == 429: delay = base_delay * (2 ** attempt) print(f"Rate limit atingido. Aguardando {delay}s...") time.sleep(delay) else: raise raise Exception("Máximo de tentativas atingido") return wrapper return decorator # Aplique o decorator na sua função de consulta: @retry_with_backoff(max_retries=3) def consultar_com_retry(cpf_cnpj): return consultar_processos(cpf_cnpj)
1. Variáveis de ambiente para API Keys — nunca no código.
2. Timeout explícito em todas as requisições (30s recomendado).
3. Retry com backoff exponencial para erros 429 (rate limit) e 503 (indisponibilidade temporária).
4. Logging estruturado de todas as requisições (request_id, status, tempo de resposta).
5. Webhooks em vez de polling para monitoramento contínuo — muito mais eficiente.
Próximo passo: Webhooks para monitoramento em tempo real
Com as consultas funcionando, o próximo nível é configurar webhooks — assim você não precisa ficar “perguntando” para a API se houve alguma atualização. A API da Judit avisa você automaticamente quando um processo tem uma movimentação nova.
Isso é o que transforma uma consulta pontual em um sistema de monitoramento contínuo. E é exatamente o que abordamos no próximo artigo desta série. Enquanto isso, explore a documentação completa para se familiarizar com todos os recursos disponíveis.
Explore a API da Judit na prática
Crie sua conta gratuita, pegue sua API Key e faça sua primeira consulta em menos de 5 minutos.






