Busca pelo significado
Consulta em linguagem natural, sem operadores booleanos nem lista de sinônimos.
API REST com busca semântica em mais de 42 milhões de decisões do STF, STJ, TST, TNU, CARF e dos tribunais estaduais, federais e do trabalho, em uma chamada HTTP. A resposta vem em JSON, com jurisprudência, precedentes vinculantes e legislação.
TOKEN=$(curl -s https://juri.onrender.com/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "integracao@suaempresa.com.br",
"password": "SUA_SENHA"}' \
| jq -r .accessToken)
curl https://juri.onrender.com/jurisearch/search \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"consulta": "dano moral por inscrição indevida no SPC",
"filtros": { "tribunais": ["STJ"] },
"paginacao": { "resultadosPorPagina": 10 }
}'
import requests
API = "https://juri.onrender.com"
token = requests.post(f"{API}/auth/login", json={
"email": "integracao@suaempresa.com.br",
"password": SENHA,
}).json()["accessToken"]
busca = {
"consulta": "dano moral por inscrição indevida no SPC",
"filtros": {"tribunais": ["STJ"]},
"paginacao": {"resultadosPorPagina": 10},
}
resposta = requests.post(
f"{API}/jurisearch/search",
headers={"Authorization": f"Bearer {token}"},
json=busca,
).json()
const API = "https://juri.onrender.com";
const { accessToken } = await fetch(`${API}/auth/login`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
email: "integracao@suaempresa.com.br",
password: SENHA,
}),
}).then((r) => r.json());
const resposta = await fetch(`${API}/jurisearch/search`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${accessToken}`,
},
body: JSON.stringify({
consulta: "dano moral por inscrição indevida no SPC",
filtros: { tribunais: ["STJ"] },
paginacao: { resultadosPorPagina: 10 },
}),
}).then((r) => r.json());
var http = HttpClient.newHttpClient();
var json = new ObjectMapper();
var login = HttpRequest.newBuilder()
.uri(URI.create(API + "/auth/login"))
.header("Content-Type", "application/json")
.POST(BodyPublishers.ofString("""
{"email": "integracao@suaempresa.com.br",
"password": "%s"}
""".formatted(SENHA)))
.build();
var corpo = http.send(login, BodyHandlers.ofString()).body();
var token = json.readTree(corpo).get("accessToken").asText();
var busca = HttpRequest.newBuilder()
.uri(URI.create(API + "/jurisearch/search"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + token)
.POST(BodyPublishers.ofString("""
{"consulta": "dano moral por inscrição indevida no SPC",
"filtros": {"tribunais": ["STJ"]},
"paginacao": {"resultadosPorPagina": 10}}
"""))
.build();
var resposta = http.send(busca, BodyHandlers.ofString());
Você envia a pergunta em linguagem natural e recebe os resultados ordenados por relevância.
Consulta em linguagem natural, sem operadores booleanos nem lista de sinônimos.
As três fontes voltam na mesma resposta, cada item com a sua pontuação de relevância.
Restrinja a busca por tribunal, período, órgão julgador e relator.
Tribunal, processo, relator, órgão julgador, data, citação e link para o inteiro teor.
Decisões coletadas direto dos sites dos tribunais, com o link oficial em cada resultado. O volume de cada tribunal está no mapa de cobertura.
STF, STJ e TST, com jurisprudência e precedentes vinculantes.
Tribunais regionais federais (TRFs) e a Turma Nacional de Uniformização (TNU).
Tribunais de justiça (TJs) dos estados, os de maior volume na base.
Tribunais regionais do trabalho (TRTs) e o CARF, o Conselho Administrativo de Recursos Fiscais.
REST e JSON. Qualquer cliente HTTP funciona, sem SDK.
Depois de uma conversa de 30 minutos sobre o seu caso, criamos o usuário de integração e liberamos credenciais de teste.
POST /auth/login devolve o token que vai no header Authorization.
POST /jurisearch/search com a consulta. O consumo aparece em GET /usage.
{
"jurisprudencias": [
{
"tribunal": "STJ",
"numeroProcesso": "REsp 1.234.567/SP",
"orgaoJulgador": "Terceira Turma",
"relator": "…",
"dataJulgamento": "…",
"ementa": "Responsabilidade civil. Inscrição indevida…",
"citacao": "…",
"urlInteiroTeor": "https://…",
"scoreRelevancia": 0.94
}
],
"precedentesVinculantes": [ … ],
"legislacao": [ … ],
"paginacao": { "pagina": 1, "totalPaginas": 5 }
}
A mesma integração serve a produtos diferentes.
Use a API como etapa de busca antes da geração: o modelo responde a partir de decisões que existem, com link para a fonte.
Ofereça busca de jurisprudência no seu sistema sem indexar tribunais nem manter uma coleta própria.
Reúna as decisões de um tema filtrando por tribunal, período, órgão julgador e relator.
Três caminhos para colocar decisões judiciais dentro de um sistema, e o que cada um entrega.
Entrega metadados e movimentações dos processos. Não devolve o texto das decisões nem permite buscar pelo conteúdo delas, então não substitui uma base de jurisprudência.
Feitos para uso no navegador: cada tribunal tem formato, filtros e limites próprios. Integrar exige um coletor por tribunal e manutenção a cada mudança de layout.
Uma chamada HTTP, consulta em linguagem natural e resposta em JSON com ementa, relator, órgão julgador, data e link para o inteiro teor, em todos os tribunais da base.
POST /auth/login e recebe um accessToken e um refreshToken. O accessToken vai no header Authorization: Bearer de cada chamada, e a sessão é renovada em POST /auth/refresh.GET /usage mostra o plano atual, esse limite e o histórico de buscas.tribunais), período (dataInicial e dataFinal), órgão julgador (orgaosJulgadores) e relator (relatores). Todos são opcionais: só a consulta é obrigatória.pagina, resultadosPorPagina e maxResultados.GET /tribunais, e o volume de decisões de cada tribunal aparece no mapa da página inicial.Prefere ler antes?
Ver a documentação da API REST