Comece aqui
Primeira chamada à API Lei Vigente: sem chave para ler o corpus, com chave para verificar citações.
Todas as rotas ficam sob /v1 e respondem JSON em UTF-8. A URL base de produção é
https://api.leivigente.com.br; nos exemplos, $VIGENTE_URL é essa URL (ou
http://localhost:3000 em desenvolvimento local). A Referência da API tem um "Try it" em cada
rota que chama a produção direto do navegador.
export VIGENTE_URL="https://api.leivigente.com.br"1. Leia o corpus sem chave
As rotas de leitura (/v1/diplomas, /v1/dispositivos, /v1/sumulas, /v1/busca, /v1/alteracoes)
não exigem autenticação: 30 requisições por minuto por IP.
curl "$VIGENTE_URL/v1/dispositivos/CF.5.LXXVIII"{
"ref_key": "CF.5.LXXVIII",
"sigla": "CF",
"artigo": "5",
"paragrafo": null,
"inciso": "LXXVIII",
"alinea": null,
"item": null,
"texto": "a todos, no âmbito judicial e administrativo, são assegurados a razoável duração do processo e os meios que garantam a celeridade de sua tramitação.",
"caput_texto": null,
"revogado": false,
"hierarquia": "Título II – Dos Direitos e Garantias Fundamentais > Capítulo I – Dos Direitos e Deveres Individuais e Coletivos",
"ordem": 127,
"anotacoes": ["Incluído pela Emenda Constitucional nº 45, de 2004", "Vide ADIN 3392"],
"alterado_por": "Emenda Constitucional nº 45, de 2004",
"revogado_por": null
}O ref_key vai na URL como está, sem escape. Detalhes do formato em Corpus → ref_key.
texto vem limpo; as marcações do Planalto ficam em anotacoes; veja
Corpus → Texto limpo e anotações.
2. Obtenha uma chave
As rotas de verificação (/v1/resolver, /v1/parse, /v1/resolver-texto) exigem uma chave
vg_live_… no cabeçalho Authorization. Entre em sua conta com o seu e-mail (o login
é com e-mail e senha; se ainda não tiver conta, crie uma na mesma página) e clique em Gerar chave; copie-a na hora, ela é exibida uma única vez. Se você
opera a própria instância, gere uma com bun run create-key <nome> [--plano pro];
a chave é impressa uma única vez e o banco guarda só o hash.
export VIGENTE_KEY="vg_live_..."3. Verifique um texto
POST /v1/resolver-texto extrai as citações de um texto livre e verifica cada uma:
curl -X POST "$VIGENTE_URL/v1/resolver-texto" \
-H "Authorization: Bearer $VIGENTE_KEY" \
-H "Content-Type: application/json" \
-d '{"texto": "O CPC prevê, no art. 1.003, § 5º, o prazo de 15 dias. O art. 9.999 do CC obriga a reparar o dano causado por ato ilícito."}'{
"citacoes": [
{
"citacao": {
"tipo": "dispositivo",
"sigla": "CPC",
"artigo": "1003",
"paragrafo": "5",
"inciso": null,
"alinea": null,
"item": null,
"rotulo": "art. 1.003, § 5º",
"offset": 16,
"fim": 32,
"diploma_inferido": true
},
"resolucao": {
"status": "verificado",
"ref_key": "CPC.1003.5",
"texto": "Excetuados os embargos de declaração, o prazo para interpor os recursos e para responder-lhes é de 15 (quinze) dias.",
"hierarquia": "Parte Especial > Livro III – Dos Processos nos Tribunais e dos Meios de Impugnação das Decisões Judiciais > Título II – Dos Recursos > Capítulo I – Disposições Gerais",
"revogado": false,
"anotacoes": [],
"alterado_por": null,
"revogado_por": null
}
},
{
"citacao": {
"tipo": "dispositivo",
"sigla": "CC",
"artigo": "9999",
"paragrafo": null,
"inciso": null,
"alinea": null,
"item": null,
"rotulo": "art. 9.999 do CC",
"offset": 56,
"fim": 72,
"diploma_inferido": false
},
"resolucao": {
"status": "nao_encontrado",
"mensagem": "CC: art. 9999 não existe no corpus.",
"sugestao": [
{
"ref_key": "CC.927",
"artigo": "927",
"trecho": "Aquele que, por <b>ato</b> <b>ilícito</b> (arts. 186 e 187), <b>causar</b> <b>dano</b> a outrem, fica <b>obrigado</b> a repará-lo.\nParágrafo único ... Haverá <b>obrigação</b> de <b>reparar</b> o <b>dano</b>, independentemente de culpa, nos casos especificados em lei, ou quando a atividade normalmente desenvolvida"
}
]
}
}
]
}Repare em três detalhes:
diploma_inferido: true: "art. 1.003, § 5º" não nomeia a lei; o parser pegou "CPC" do contexto.offset/fimsão posições no texto original: dá para grifar a citação inválida na interface.sugestaoveio da frase ao redor da citação ("obriga a reparar o dano causado por ato ilícito"), não da citação em si, e o contexto determinou a resposta: o art. 927 do CC é exatamente isso, e só ele foi sugerido. Quando o contexto não determina nada ("Ver também art. 9.999 do CC.") a lista vem vazia:"sugestao": []. Uma sugestão plausível mas errada é pior que nenhuma; veja Verificação → sugestões.
4. Verifique citações estruturadas
Se o seu sistema já sabe qual lei e qual artigo, pule o parser e chame POST /v1/resolver: até 100
citações por requisição, resposta na mesma ordem:
curl -X POST "$VIGENTE_URL/v1/resolver" \
-H "Authorization: Bearer $VIGENTE_KEY" \
-H "Content-Type: application/json" \
-d '{
"citacoes": [
{ "sigla": "CF", "artigo": "5", "inciso": "LXXVIII" },
{ "sigla": "CPP", "artigo": "594" },
{ "tribunal": "STF", "numero": 11, "vinculante": true }
]
}'{
"resultados": [
{ "status": "verificado", "ref_key": "CF.5.LXXVIII", "texto": "a todos, no âmbito judicial…", "hierarquia": "Título II – …", "revogado": false },
{ "status": "revogado", "ref_key": "CPP.594", "texto": "", "hierarquia": "Livro III – …", "revogado": true, "revogado_por": "Lei nº 11.719, de 2008" },
{ "status": "verificado", "ref_key": "SV.STF.11", "texto": "Só é lícito o uso de algemas em casos de resistência…", "cancelada": false, "vinculante": true }
]
}Próximos passos
- Entenda cada status de verificação e o que fazer com ele.
- Sem escrever código: conecte o Lei Vigente ao Claude, ChatGPT ou Gemini como servidor MCP e peça para conferir citações.
- Veja os limites e cabeçalhos de rate limit antes de ir para produção.
- Explore a Referência da API: dá para testar cada rota no navegador.