Documentação da API

Busca semântica de jurisprudência brasileira. Respostas em JSON, autenticação por chave.

Começar em 3 passos

  1. Em Testar a API, faça o cadastro, rode as consultas de teste e escolha um plano. O teste grátis dura 14 dias e inclui 100 consultas.
  2. Depois do pagamento, a página de ativação mostra sua chave (juspro_...) uma única vez. Guarde em um gerenciador de segredos.
  3. Faça a primeira consulta:
curl -X POST "https://pvtxioltvzscchmrafld.supabase.co/functions/v1/api/busca" \
  -H "x-api-key: SUA_CHAVE" -H "Content-Type: application/json" \
  -d '{"consulta":"empregado dispensado sem justa causa não recebeu verbas rescisórias","limite":5}'

URL base: https://pvtxioltvzscchmrafld.supabase.co/functions/v1/api

Autenticação

Envie a chave no cabeçalho x-api-key em todas as rotas, exceto GET /planos. Nunca coloque a chave em código de navegador ou de aplicativo móvel: chame a API pelo seu servidor.

Para trocar a chave, use POST /conta/nova-chave. A anterior para de funcionar na hora.

Buscar: POST /busca

Descreva o caso em linguagem natural. Por padrão, o texto é reescrito em linguagem técnica antes da busca, o que melhora o resultado para descrições curtas ou coloquiais.

CampoTipoDescrição
consultatextoObrigatório. De 3 a 4.000 caracteres.
limitenúmeroQuantidade de resultados. Padrão 10, máximo conforme o plano.
tribunaltexto ou listaFiltra por tribunal, por exemplo "TJSP" ou ["STJ","TJMG"]. Veja /tribunais.
data_inicio, data_fimAAAA-MM-DDFiltra pela data de julgamento.
expandirbooleanoPadrão true. Com false, usa o texto exatamente como enviado.

Com filtros, a busca pode devolver menos resultados que o limite.

{
  "consulta": "...",
  "consulta_expandida": "texto técnico usado na busca",
  "total": 5,
  "resultados": [{
    "document_id": "...",
    "similaridade": 0.8123,
    "tribunal": "TJSP",
    "numero_processo": "...",
    "classe": "...", "relator": "...", "orgao_julgador": "...",
    "data_julgamento": "2024-05-10", "data_publicacao": "2024-05-20",
    "ementa": "...", "tese_juridica": "...",
    "trecho": "parte da decisão mais próxima da consulta",
    "url_fonte": "https://...",
    "precedente": { "vinculante": false, "repetitivo": false, "sumula": false, "repercussao_geral": false, "possivelmente_superado": false }
  }]
}

Os valores acima são ilustrativos. Alguns campos podem vir vazios (null), conforme o que cada tribunal publica: por exemplo url_fonte, datas e relator. Trate todos os campos, exceto document_id, como opcionais. Cada chamada bem-sucedida a /busca consome 1 consulta da cota.

Python

import requests
r = requests.post("https://pvtxioltvzscchmrafld.supabase.co/functions/v1/api/busca",
    headers={"x-api-key": "SUA_CHAVE"},
    json={"consulta": "plano de saúde negou cobertura de tratamento", "limite": 5, "tribunal": ["TJSP"]})
for d in r.json()["resultados"]:
    print(d["tribunal"], d["numero_processo"], d["similaridade"])

JavaScript (Node)

const r = await fetch("https://pvtxioltvzscchmrafld.supabase.co/functions/v1/api/busca", {
  method: "POST",
  headers: { "x-api-key": process.env.JURISPRUDENCIA_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({ consulta: "dano moral por negativação indevida", limite: 5 }),
});
const { resultados } = await r.json();

Documento: GET /documentos/{document_id}

Devolve o registro completo de uma decisão, pelo document_id que veio na busca. Consome 1 consulta da cota.

Tribunais: GET /tribunais

Lista os tribunais disponíveis e a quantidade de decisões de cada um. Não consome cota.

Conta e plano

RotaO que faz
GET /contaPlano, situação da assinatura, período, cota usada e restante, limites.
POST /conta/planoTroca de plano. Corpo: {"plano":"pro","ciclo":"anual"}. O upgrade é cobrado na hora, de forma proporcional. No teste grátis nada é cobrado.
POST /conta/portalDevolve o link do portal de cobrança, para atualizar o cartão, ver faturas ou cancelar.
POST /conta/nova-chaveGera uma nova chave e invalida a anterior.
GET /planosPlanos e preços. Rota pública.

Limites e cota

PlanoConsultas por mêsRequisições por minutoResultados por consulta
Teste grátis (14 dias)100conforme o plano10
Starter2.0001020
Pro10.0003050
Business40.00060100
EnterpriseAcima de 40.000Sob medidaSob medida

Toda resposta de busca traz os cabeçalhos x-cota-mensal, x-cota-usada e x-cota-restante. A cota é renovada a cada ciclo de cobrança.

Erros

Os erros vêm em JSON: {"erro":"codigo","mensagem":"texto"}.

StatusCódigoSignificado
400consulta_invalida, data_invalida, plano_invalidoParâmetro ausente ou em formato errado.
401chave_ausente, chave_invalidaSem chave, ou chave inválida ou revogada.
402assinatura_inativaAssinatura vencida ou cancelada. Regularize pelo portal de cobrança.
404nao_encontrado, rota_inexistenteDocumento ou rota não existe.
429limite_por_minuto, cota_esgotadaMuitas requisições no minuto, ou cota do ciclo esgotada. Espere, ou troque de plano.
502embedding_indisponivelFalha temporária ao processar a consulta. Tente de novo.
500erro_internoErro nosso. Tente de novo em instantes.

Boas práticas

Começar o teste grátis