- Quem pesquisa “API do CNJ” quase sempre cai no DataJud sem saber o nome.
- A base entrega capa e movimentação, não o PDF da sentença.
- A consulta é pública, com chave na wiki. Não é webhook. Não é intimação.
- Tribunal por tribunal: um índice Elasticsearch para cada corte.
Na minha experiência, o time pede “a API do CNJ” e espera Jusbrasil. O que volta é um JSON de metadados, sem parte, sem valor da causa na granulação que o comercial queria, e sem o acórdão. A decepção não é a API. É o briefing.
Este guia é o mapa honesto: o que o DataJud é, o que a API pública consulta, onde aperta, e o que fazer com o dado depois que ele entra no escritório.
O que é o DataJud?
O DataJud é a Base Nacional de Dados do Poder Judiciário. O CNJ descreve a API Pública como acesso aos metadados de processos públicos em todo o Brasil, aderente à Portaria n. 160/2020, com proteção a processos sigilosos e a informações das partes 1.
Capa. Classe. Assunto. Movimentações. Número CNJ. Tribunal. Data de ajuizamento.
Não é inteiro teor. Não é peça. Não é jurisprudência pesquisável por tese. Não é o diário.
Se a sua pergunta é “saiu intimação dessa OAB?”, você está no DJEN. Se é “o STJ firmou o quê neste tema?”, você está no SCON. Se é “o que já aconteceu neste processo público?”, aí sim: DataJud.
Como a API pública funciona
Protocolo: POST no Elasticsearch. Um índice por tribunal. A URL-base é https://api-publica.datajud.cnj.jus.br/, seguida do alias da corte, por exemplo api_publica_tjsp ou api_publica_trf1 1.
Autenticação: header Authorization: APIKey …. A chave pública vigente fica na wiki de acesso do DataJud. O CNJ avisa que pode trocá-la a qualquer momento 2. Não grave uma chave de tutorial de 2023 no código de produção. Leia a wiki no dia do deploy.
Consulta mínima por número de processo no TJSP (número sem máscara, ajuste o índice ao tribunal):
curl -X POST "https://api-publica.datajud.cnj.jus.br/api_publica_tjsp/_search" \
-H "Authorization: APIKey SUA_CHAVE_DA_WIKI" \
-H "Content-Type: application/json" \
-d '{"query":{"match":{"numeroProcesso":"00000000000000000000"}}}'
O SUA_CHAVE_DA_WIKI não é segredo seu. É a chave pública que o CNJ publica. Mesmo assim, trate como configuração: quando o CNJ rotacionar, seu job quebra no mesmo dia.
Campos que de fato aparecem com frequência no documento: numeroProcesso, tribunal, dataAjuizamento, classe, assuntos, orgaoJulgador, movimentos, @timestamp. A lista completa muda com o tribunal e com a versão da base. Não construa o produto em cima de um campo que você viu uma vez no TJSP e assumiu no TRF3.
Movimento tem código de tabela unificada (TPU) e data. Serve para linha do tempo. Não serve para saber se aquele movimento intimou o advogado no diário. São fatos diferentes.
Nos meus testes, três pegadinhas se repetem.
Índice errado. O processo é do TRT-2 e você consultou api_publica_tjsp. A resposta vem vazia. Parece que o DataJud “não tem o processo”. Tem. Você perguntou no tribunal vizinho.
Número com máscara. Hífen e ponto no numeroProcesso falham em muita query. Mande os 20 dígitos.
Aliases que eu vejo no dia a dia: api_publica_tjsp, api_publica_tjrj, api_publica_trf1, api_publica_trf3, api_publica_tst, api_publica_stj. A lista completa está na wiki e no PDF de tutorial do CNJ. Se o alias estiver errado, a URL 404 ou o índice vem vazio. Os dois sintomas parecem “a API caiu”. Não caiu.
Paginação ingênua. Elasticsearch devolve uma página. Volume alto pede search_after, não from infinito. Sem isso você acha que varreu a vara e varreu as primeiras dezenas.
O DataJud não geo-bloqueia IP estrangeiro do mesmo jeito que a consulta do DJEN. Dá para hospedar o worker fora do Brasil. Isso não torna a base um feed em tempo real. A atualização depende do tribunal enviar ao CNJ. Atraso de dias existe. Quem promete “minuto a minuto” em cima só do DataJud está vendendo o que a fonte não entrega.
A cota também existe, mesmo com chave pública. Rajada de _search em loop por vara inteira é o jeito mais rápido de ganhar 429 ou 500 e achar que “o CNJ caiu”. Espace. Cacheie o processo que não mudou o @timestamp. Não releia a capa a cada 30 segundos porque o comercial quer o painel “ao vivo”.
Você realmente precisa varrer o tribunal inteiro, ou precisa de 200 números CNJ da carteira? A segunda query cabe. A primeira é outro produto.
O que a API não entrega (e o briefing inventa)
Valor da causa confiável, em todos os tribunais, o tempo todo: não.
Nome e documento da parte, com qualidade de cadastro: limitado, e o desenho da Portaria 160 existe justamente para não vazar o que não pode.
Documento dos autos: não.
Súmula, teses, inteiro teor de acórdão: não. Isso é pesquisa de jurisprudência, outra base.
Intimação com data de disponibilização para contar art. 224: não. Isso é DJEN.
LGPD continua valendo sobre dado processual público. O art. 7º, § 3º, da Lei 13.709/2018 não transforma diário em salvo-conduto para qualquer tratamento. Sigilo (art. 189 do CPC) e processo que a base já omitiu não voltam pelo seu crawler. Se a API não devolveu a parte, não complete com uma base paralela “para enriquecer o lead”.
Um sócio de um escritório me pediu um “radar de prazos” só com DataJud. Eu recusei o desenho. Movimento “juntada de petição” não é intimação. Prazo que depende disso vai estourar com cara de dashboard bonito.
Eu recomendo o DataJud para três usos honestos: achar o processo pelo número CNJ, montar linha do tempo de movimentos públicos, e cruzar volume por classe/órgão quando você aceita o atraso da base. Fora isso, você está na ferramenta errada.
E se o comercial pedir “busca por CPF em todos os tribunais do Brasil”? Diga não, ou diga “incompleto e irregular”. A API pública não foi desenhada como Serasa jurídico. Forçar esse uso é o atalho que mistura LGPD com expectativa furada.
💡 Leia também: API do DJEN: consulta oficial do CNJ e como integrar, quando o que você precisa é publicação e prazo, não capa.
Como colocar a consulta no sistema do escritório
Três camadas, de novo, porque o erro é sempre fundi-las.
- DataJud (ou o software jurídico que já consome isso) para “o que aconteceu”.
- DJEN para “o que dispara prazo”.
- WhatsApp para o cliente que pergunta “e o meu processo?”.
A integração ADVBox no Chat Jurídico lê processo e contato no ponto da conversa. Não substitui o DataJud. Também não substitui o diário. O post ADVBox + Chat Jurídico é essa costura.
Se você está construindo produto em cima da API pública, desenhe para: chave rotacionada, índice por tribunal, resposta vazia que não é “processo inexistente”, e atraso da fonte. Sem SLA. Sem versionamento visível. O aviso na interface (“não substitui a consulta no tribunal”) não é jurídico de enfeite. É o único contrato que o CNJ te deu.
Um checklist curto antes do primeiro job em produção:
- Wiki aberta no dia, chave copiada de lá, não de um gist.
- Tabela de aliases versionada no seu repo, com um teste que falha se o índice 404.
- Log de
@timestamppor processo, para não reler o que não mudou. - Fila morta para 500/429, não retry infinito às 9h da manhã de segunda.
Isso não é over-engineering. É o mínimo para o painel não mentir na terça.
O Chat Jurídico entra depois: o cliente não pergunta pelo alias do índice. Pergunta se o processo andou. Se a capa do DataJud (ou do software jurídico) não chega na conversa, alguém vai abrir o tribunal na mão, de novo, no meio do almoço.
Perguntas frequentes
O que é o DataJud? A base nacional de metadados processuais do CNJ. Capa e movimentos de processos públicos, com proteção a sigilo. Portaria 160/2020.
A API pública é gratuita? Sim. APIKey pública na wiki. Pode mudar. Não há webhook.
Serve para prazo de intimação? Não. Prazo de intimação por diário é DJEN e art. 224 do CPC.
É pesquisa de jurisprudência? Não. Sem inteiro teor, sem tese. Use o SCON do STJ e as bases dos tribunais.
Referências
1 API Pública do DataJud (CNJ).
🚀 O andamento está no sistema. A pergunta está no WhatsApp.
O Chat Jurídico responde o cliente com contexto do caso, no mesmo número. Garantia de 8 dias na contratação.
Falar com o comercial no WhatsApp