Documentação da API
Busca semântica de jurisprudência brasileira. Respostas em JSON, autenticação por chave.
Começar em 3 passos
- 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.
- Depois do pagamento, a página de ativação mostra sua chave (
juspro_...) uma única vez. Guarde em um gerenciador de segredos. - 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.
| Campo | Tipo | Descrição |
|---|---|---|
consulta | texto | Obrigatório. De 3 a 4.000 caracteres. |
limite | número | Quantidade de resultados. Padrão 10, máximo conforme o plano. |
tribunal | texto ou lista | Filtra por tribunal, por exemplo "TJSP" ou ["STJ","TJMG"]. Veja /tribunais. |
data_inicio, data_fim | AAAA-MM-DD | Filtra pela data de julgamento. |
expandir | booleano | Padrã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
| Rota | O que faz |
|---|---|
GET /conta | Plano, situação da assinatura, período, cota usada e restante, limites. |
POST /conta/plano | Troca de plano. Corpo: {"plano":"pro","ciclo":"anual"}. O upgrade é cobrado na hora, de forma proporcional. No teste grátis nada é cobrado. |
POST /conta/portal | Devolve o link do portal de cobrança, para atualizar o cartão, ver faturas ou cancelar. |
POST /conta/nova-chave | Gera uma nova chave e invalida a anterior. |
GET /planos | Planos e preços. Rota pública. |
Limites e cota
| Plano | Consultas por mês | Requisições por minuto | Resultados por consulta |
|---|---|---|---|
| Teste grátis (14 dias) | 100 | conforme o plano | 10 |
| Starter | 2.000 | 10 | 20 |
| Pro | 10.000 | 30 | 50 |
| Business | 40.000 | 60 | 100 |
| Enterprise | Acima de 40.000 | Sob medida | Sob 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"}.
| Status | Código | Significado |
|---|---|---|
| 400 | consulta_invalida, data_invalida, plano_invalido | Parâmetro ausente ou em formato errado. |
| 401 | chave_ausente, chave_invalida | Sem chave, ou chave inválida ou revogada. |
| 402 | assinatura_inativa | Assinatura vencida ou cancelada. Regularize pelo portal de cobrança. |
| 404 | nao_encontrado, rota_inexistente | Documento ou rota não existe. |
| 429 | limite_por_minuto, cota_esgotada | Muitas requisições no minuto, ou cota do ciclo esgotada. Espere, ou troque de plano. |
| 502 | embedding_indisponivel | Falha temporária ao processar a consulta. Tente de novo. |
| 500 | erro_interno | Erro nosso. Tente de novo em instantes. |
Boas práticas
- Descreva fatos, não pessoas. O texto da consulta é processado por um provedor de inteligência artificial. Evite nomes e documentos.
- Confira na fonte. Valide a decisão antes de citar, pelo número do processo no site do tribunal ou pelo
url_fonte, quando existir. A ferramenta é de pesquisa e não substitui a análise jurídica. - Trate o 429. Espere alguns segundos e tente de novo, com intervalo crescente.
- Guarde a chave no servidor e troque-a se suspeitar de vazamento.
- Cobertura. Consulte
/tribunaispara saber o que está disponível, e usedata_inicioedata_fimquando a data importar.