← Voltar ao início API REST

A API REST do IAJUS, para o servidor da sua empresa

Busca, decisão completa e dispositivo de legislação por HTTP, para integrar o IAJUS ao sistema do seu escritório ou da sua empresa. É a mesma chave ik_… do MCP: não existe segunda credencial.

01 Natureza do serviço

Uma API proprietária, sob contrato

A API REST e o MCP do IAJUS são proprietários. Eles servem o acervo que o IAJUS coleta direto das fontes oficiais, sem agregador de terceiros, e que organiza e mantém por conta própria. Só respondem a quem tem chave e contrato: não é uma API pública aberta.

  • Para quem: clientes corporativos, com condições exclusivas combinadas por contrato, e contas de teste vinculadas a um contrato corporativo.
  • Uso do conteúdo: as condições de uso, inclusive o que pode ser feito com o conteúdo devolvido, são as do seu contrato e dos Termos de uso.
  • Fonte oficial: decisões e normas voltam com o endereço da fonte oficial, sempre que disponível (campos link_completo, link_primario e source_link).
  • O que este guia não traz: preços, cotas e valores de limite. Eles fazem parte das condições do contrato.
02 Chave e autenticação

Uma chave, no cabeçalho Authorization

Se a sua chave já funciona no MCP, ela funciona aqui. Para obter uma, fale com a equipe IAJUS ou com o seu contato no IAJUS.

Authorization: Bearer <sua chave>
  • A chave vai só no cabeçalho, nunca na URL, no corpo, em log, em commit ou em chat. Guarde-a em variável de ambiente ou em cofre de segredos e trate-a como uma senha.
  • Os exemplos deste guia leem a chave da variável de ambiente IAJUS_API_KEY: defina-a no seu servidor, nunca em código versionado. Sem ela, ou com um valor inválido, a resposta é 401.
  • Não envie o cookie de sessão do app junto com a chave: o pedido é recusado com 400.
  • A chave precisa do escopo search:read (o escopo padrão de quem faz buscas) e de direito à API corporativa.
  • Sem CORS: a API é para o seu servidor, não para o navegador. Toda resposta sai com Cache-Control: no-store.
03 Rotas

Três operações e a especificação

Endereço base: https://app.iajus.com.br/api/v1. O formato é JSON em UTF-8. Versão do contrato: 1, a mesma do campo info.version do OpenAPI.

Rotas da API REST
MétodoCaminhoO que faz
POST/search/{modalidade}Busca de jurisprudência e legislação
GET/decision/{entity_id}Decisão completa (acórdão)
GET/legislacaoDispositivo de legislação, com a vigência declarada
GET/openapi.jsonEspecificação OpenAPI (sem chave)
04 Busca

Buscar jurisprudência e legislação

A consulta vai no corpo do pedido, nunca na URL. As modalidades são hibrida, semantica, fts, regex, cnj, jurimetria e ontologia; outro valor recebe 404. A hibrida (sinais combinados) é a de uso geral e a que aceita mais filtros.

Corpo do pedido (JSON)

Qualquer campo que não conste desta lista é recusado com 422.

Campos do corpo da busca
CampoTipoDescrição
qtextoConsulta. Em cnj, o número do processo.
filtrosobjetoFiltros estruturados (abaixo).
limitinteiroTamanho da página. Fora da faixa aceita, 422; a faixa está no OpenAPI.
cursortextoCursor opaco da página seguinte (veja a paginação).
sorttextorelevancia (padrão), data ou ano.
ordertextodesc (padrão) ou asc; vale para data e ano.
facetasbooleanofalse (padrão). Com true, a resposta traz também facetas (contagens por tribunal, ano, tipo e ramo) e, conforme o estado da busca, total_estimado. Os dois são calculados só sobre a janela de resultados já recuperada, não sobre todo o acervo.

Filtros

Os mais usados em filtros: tribunal, ano_de, ano_ate, relator, classe, orgao_julgador, data_julgamento_min e data_julgamento_max (AAAA-MM-DD), family (jurisprudencia ou legislacao) e is_repercussao_geral. A lista completa e os tipos estão no esquema do corpo, no OpenAPI. Nem toda modalidade aplica todos os filtros: se você envia um filtro que a modalidade escolhida não aplica, a API recusa com 422 e lista os filtros em detail.filtros_nao_suportados, em vez de devolver uma lista mais larga do que a que você pediu.

Exemplo e resposta

curl -s -X POST https://app.iajus.com.br/api/v1/search/hibrida \
  -H "Authorization: Bearer $IAJUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q":"repercussão geral em matéria tributária","filtros":{"tribunal":"STF"}}'

Resposta 200, com os campos principais. Um campo opcional que o IAJUS não mediu fica ausente da resposta.

{
  "hits": [
    {"entity_id": "…", "tribunal": "…", "snippet": "…", "link_completo": "…"}
  ],
  "page_info": {
    "next_cursor": "…",
    "has_more": true,
    "sort": "relevancia",
    "order": "desc",
    "busca_status": "completa",
    "aviso_busca": null
  }
}

Leia o estado da busca antes de uma lista vazia

page_info.busca_status diz se a busca terminou. Quando houver aviso, page_info.aviso_busca o explica em português. Só a busca completa conta como pesquisa; parcial, incompleta, com erro ou recusada não contam.

Valores de busca_status
ValorSignificado
completaA busca terminou. Lista vazia quer dizer que o acervo não tem o que você pediu.
parcialParte da busca foi servida. Os resultados são um recorte.
incompletaA busca não estabeleceu o conjunto. Lista vazia não é «nenhum resultado»: repita a busca.
05 Decisão

Abrir a decisão completa

GET /decision/{entity_id}. O entity_id vem de hits[].entity_id da busca. Um identificador acima do tamanho máximo aceito recebe 422. Uma decisão que não existe, ou que pertence a outra conta, recebe o mesmo 404.

curl -s https://app.iajus.com.br/api/v1/decision/ENTITY_ID_DA_BUSCA \
  -H "Authorization: Bearer $IAJUS_API_KEY"

Resposta 200. Campos que a fonte não informa ficam ausentes ou null, e a API pode acrescentar campos novos sem aviso: ignore os que você não conhece.

{
  "entity_id": "…",
  "family": "jurisprudencia",
  "tribunal": "…",
  "numero_processo": "…",
  "relator": "…",
  "data_publicacao": "…",
  "ementa": "…",
  "tese": "…",
  "tem_inteiro_teor": true,
  "inteiro_teor_text": "…",
  "inteiro_teor_url": "…",
  "link_primario": "…",
  "classificacao": {}
}
06 Legislação

Ler um dispositivo de legislação

GET /legislacao, com a vigência que a fonte declara.

Parâmetros da leitura de legislação
Parâmetro (query)ObrigatórioDescrição
normasimCódigo da norma (CC, CP, CF, CLT, CPC…) ou o entity_id da norma.
dispositivonãoO artigo: 5, Art. 5º.
curl -s -G https://app.iajus.com.br/api/v1/legislacao \
  -H "Authorization: Bearer $IAJUS_API_KEY" \
  --data-urlencode "norma=CC" \
  --data-urlencode "dispositivo=Art. 5º"

Resposta 200, com os campos principais: entity_id, dispositivo_id, dispositivo_label, texto, anchor, source_link, breadcrumb (hierarquia), dispositivos (subárvore), version_count e status_vigencia. O status_vigencia traz a vigência que a fonte declara (vigente, revogada…); ausente quer dizer «não apurada», nunca «vigente». Norma ou dispositivo inexistente: 404. Consulta inválida: 400. Sem o parâmetro norma: 422.

07 Paginação

Cursor opaco, sem total

A busca pagina por cursor opaco, sem deslocamento (OFFSET) e sem contagem total.

  1. Envie a primeira busca sem cursor.
  2. Se page_info.has_more for true, repita o mesmo corpo com "cursor": "<page_info.next_cursor>".
  3. Pare quando has_more for false (next_cursor vem null).
curl -s -X POST https://app.iajus.com.br/api/v1/search/hibrida \
  -H "Authorization: Bearer $IAJUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q":"repercussão geral em matéria tributária","filtros":{"tribunal":"STF"},"cursor":"CURSOR_DA_RESPOSTA_ANTERIOR"}'

O cursor é amarrado à busca: modalidade, q, filtros, sort, order e limit. Mudar qualquer um deles com o cursor da busca anterior, ou alterar o cursor, devolve 422; recomece sem cursor. Não monte nem interprete o cursor.

A janela de resultados que uma busca alcança é limitada. Quando você chega ao fim dela e pode haver mais no acervo, has_more vem false e o aviso_busca diz que a janela foi limitada: refine a consulta, com mais filtros, em vez de esperar outra página.

08 Erros e limites

Um formato de erro só

Todo erro tem o mesmo formato, e nenhum traz conteúdo jurídico nem a chave: {"detail": {"message": "Texto fixo do motivo."}}.

Códigos de erro da API REST
CódigoQuandoO que fazer
400Cookie de sessão enviado junto com a chave; ou consulta inválida numa leitura (decisão ou legislação).Envie só a chave. Corrija a consulta.
401Chave ausente, malformada, desconhecida, revogada, vencida, de conta suspensa ou de conta de teste fora da vigência.A resposta é idêntica para todos esses casos: o servidor não diz qual foi o motivo. Confira a chave; se ela era válida, fale com o seu contato IAJUS. O cabeçalho WWW-Authenticate acompanha a resposta.
403A chave é válida, mas a conta não tem direito à API corporativa, ou a chave não tem o escopo search:read.Fale com o seu contato IAJUS.
404Modalidade desconhecida; decisão, norma ou dispositivo não encontrados (ou de outra conta: a resposta é a mesma).Confira o identificador.
422Corpo ou parâmetros fora do contrato; cursor inválido ou de outra busca; filtro que a modalidade não aplica.Corrija o pedido. O corpo não repete o que você enviou.
429Limite por minuto excedido, ou muitas recusas de autenticação seguidas vindas do mesmo IP.Aguarde o tempo do cabeçalho Retry-After (em segundos) e repita.
503A identidade ou o contador de uso não respondeu, ou a busca está indisponível.Repita depois de alguns instantes, sem trocar a chave: ela não foi recusada.
  • Limite de uso: a API aplica um limite por minuto, contado por usuário titular da chave. Os valores fazem parte do contrato e não são publicados aqui. Pedido recusado por chave inválida (401) ou sem direito ou escopo (403) não gasta o limite. Se o contador de uso não responde, o pedido é recusado com 503, nunca liberado sem contar.
  • Espera por IP: muitos 401 seguidos do mesmo IP colocam esse IP em espera por um tempo, mesmo com chave válida. Corrija a chave antes de insistir. O 403 só existe para chave válida e não conta para essa espera.
09 MCP

O mesmo acervo pelo MCP

O IAJUS também é servido por MCP (Model Context Protocol), em HTTP, para aplicativos de IA e agentes. O endereço do servidor é um só.

https://mcp.iajus.com.br/mcp
Modos de autenticação do MCP
ModoPara quemComo
OAuth 2.1Aplicativos conectores de IAO aplicativo abre o login em app.iajus.com.br e você entra com a sua conta IAJUS. Não há chave para copiar. O passo a passo de cada plataforma está em Plataformas.
Chave BearerClientes de servidor e agentes própriosCabeçalho Authorization: Bearer ik_…, com a mesma chave desta API REST.

Exemplo: listar as ferramentas

curl -s -X POST https://mcp.iajus.com.br/mcp \
  -H "Authorization: Bearer $IAJUS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Resposta 200 com a lista de ferramentas do servidor, em JSON ou como evento SSE. Sem chave, ou com chave inválida, a resposta é 401. A chave vai só no cabeçalho, nunca na URL. Os limites de uso do MCP também fazem parte do contrato e não são publicados aqui.

10 OpenAPI

A especificação é a fonte para gerar clientes

O documento não exige chave, lista só as três rotas desta API, descreve o corpo de sucesso e o corpo de erro de cada uma e declara o esquema Bearer. Use-o para gerar clientes e para conferir tipos e faixas de parâmetros. Swagger e ReDoc não são servidos.

curl -s https://app.iajus.com.br/api/v1/openapi.json

Este guia não cobre preços, cotas e valores de limite (condições do contrato), a conexão do MCP em cada plataforma (veja Plataformas) nem o catálogo completo de filtros por modalidade, que está no esquema SearchIn do OpenAPI. Especificação: app.iajus.com.br/api/v1/openapi.json.

Falar sobre a API Ver as plataformas

Pronto para pesquisar com a fonte na mão?

Durante o beta o IAJUS é gratuito: crie sua conta e comece a pesquisar na hora.

Criar conta no beta

Programas

A Celeris Juris, desenvolvedora do IAJUS, é membro do NVIDIA Inception program e do Google for Startups Cloud Program.

Membro do NVIDIA Inception program Membro do Google for Startups Cloud Program