Dados e privacidade
O que a API recebe, o que guarda, o que registra em log, por quanto tempo e onde, quem são os subprocessadores e o que isso significa sob a LGPD.
Esta página descreve o tratamento de dados como o código faz hoje; as regras de uso do serviço estão nos Termos de uso. Quando o comportamento mudar, esta página muda junto (o histórico fica no repositório da documentação).
O que você envia
| Rota | Dados recebidos |
|---|---|
/v1/parse, /v1/resolver-texto | texto: até 20.000 caracteres de texto livre: resposta de um LLM, trecho de petição, parecer. Pode conter dados pessoais e informação sigilosa; é você quem decide o que manda. |
/v1/resolver | Citações estruturadas (sigla, artigo, …) e, opcionalmente, rotulo, a frase que descreve a citação. |
Rotas de leitura (/v1/busca, /v1/dispositivos, …) | Parâmetros de consulta (q, ref_key, filtros). |
/mcp (servidor MCP) | Os argumentos das ferramentas (os mesmos dados das rotas acima: texto, citacoes, ref_key, termos de busca) e, opcionalmente, a chave no parâmetro key da URL ou um token OAuth no cabeçalho Authorization. |
/conta/* (conta Lei Vigente) | O e-mail e a senha com que você cria a conta e entra, o nome que você dá às chaves de API e o cookie de sessão vg_sessao. A senha é usada só para calcular o hash e nunca é gravada nem registrada em log. |
/oauth/* (conectar o ChatGPT ou o claude.ai à sua conta) | Os dados do protocolo OAuth: identificador e nome do cliente (por exemplo, "ChatGPT"), endereços de retorno, códigos e tokens. |
| Assinatura (checkout da Stripe) | Cartão, endereço de cobrança, nome e CPF/CNPJ são digitados na página da Stripe, não no Lei Vigente. |
| Todas | Cabeçalhos HTTP: Authorization (chave ou token), X-Request-Id (se você mandar), IP de origem. |
O que não é guardado
texto, rotulo, citacoes e parâmetros de busca são processados em memória durante a requisição e
descartados na resposta. Não existe tabela, fila, cache ou arquivo que receba conteúdo enviado por
clientes, nem em erro. O log de requisição (abaixo) não inclui corpo, query string nem cabeçalhos. Ter uma
conta não muda isso: o que é contado por conta é o número de requisições por dia, nunca o conteúdo.
Dados de cartão nunca passam pelo Lei Vigente: o pagamento é feito no checkout e no portal da Stripe, e o Lei Vigente recebe só identificadores e o estado da assinatura. Nome, endereço e CPF/CNPJ de cobrança ficam na Stripe; o Lei Vigente não os grava no próprio banco (eles são lidos da fatura da Stripe na hora de emitir a nota fiscal, abaixo).
Nada do que você envia é usado para treinar modelo, melhorar o corpus ou gerar estatísticas além da contagem de requisições.
O que é guardado
| Dado | Onde | Retenção |
|---|---|---|
| Chave de API: nome informado na criação, prefixo (8 caracteres), SHA-256 da chave, plano, ativa/inativa, data de criação, último uso e, se criada na página da conta, a conta dona | Postgres | Enquanto a chave existir (revogar a desativa). A chave em claro nunca é armazenada. |
Contador de requisições por chave por dia (api_usage_daily) | Postgres | Indefinida (é o que sustenta o limite mensal). Não há detalhe por requisição. |
| Conta: e-mail, plano, data de criação e do último login | Postgres | Enquanto a conta existir. |
| Senha: só o hash PBKDF2-SHA256 (100 mil iterações, sal aleatório) | Postgres | Enquanto a conta existir; trocar a senha substitui o hash e encerra as outras sessões. |
| Link de recuperação de senha (só quando o envio de e-mail estiver ativado; hoje não está): SHA-256 do token, e-mail, validade, uso | Postgres | O link vale 15 minutos e uma única vez. |
Sessão do navegador: SHA-256 do identificador do cookie vg_sessao, conta, validade | Postgres | 30 dias, ou até você sair. |
| OAuth: clientes registrados (identificador, nome, endereços de retorno); SHA-256 dos códigos e tokens, conta, escopo, validade | Postgres | Código de autorização: minutos, uso único. Token de acesso: 1 hora. Token de renovação: 30 dias (trocado a cada uso), ou até ser revogado. Os tokens em claro nunca são armazenados. |
Contador de requisições por conta por dia (user_usage_daily) | Postgres | Enquanto a conta existir (sustenta o limite mensal). Não há detalhe por requisição. |
| Assinatura: identificadores de cliente e de assinatura na Stripe, status, periodicidade (mensal ou anual), fim do período, cancelamento agendado; identificadores dos eventos da Stripe já processados | Postgres | Enquanto a conta existir. |
| Nota fiscal (NFS-e): identificador da fatura na Stripe, conta, valor, status da emissão e identificador no emissor | Postgres | Pelo prazo exigido pela legislação tributária (em regra, 5 anos), mesmo após a exclusão da conta. |
| IP de chamadas sem chave, para o limite de 30 req/min | Memória do processo | Janela de 60 segundos; nunca vai a disco nem a log. |
O único cookie que a API define é vg_sessao (HttpOnly, 30 dias), necessário para manter você conectado
nas páginas da conta. Não há cookie de publicidade nem de rastreamento.
O que vai para log
Uma linha JSON por requisição, com exatamente estes campos:
{
"ts": "2026-08-27T13:22:11.814Z",
"level": "info",
"event": "request",
"requestId": "3f1c…",
"method": "POST",
"path": "/v1/resolver-texto",
"status": 200,
"durationMs": 84,
"auth": "key",
"keyId": 12
}authénone,anon,key,user(conta conectada por OAuth) ouadmin. Com chave, vaikeyId; com conta conectada, vaiuserIdno lugar (o número interno da conta, nunca o e-mail nem o token).requestIdé oX-Request-Idque você mandou, ou um UUID gerado; não coloque dados pessoais nele.pathé só o caminho:/v1/buscafica sem oq;/mcpfica sem okey.- IP, cabeçalhos e corpo não entram. Erros internos registram apenas
requestIde a mensagem do erro. - A emissão de nota fiscal registra só o identificador da fatura na Stripe e o resultado (emitida, erro); nunca nome, e-mail ou CPF/CNPJ.
- Além da linha de requisição, há eventos operacionais da conta e da assinatura (falha ao enviar o e-mail de login, sincronização de assinatura, fatura paga, falha no checkout ou no webhook da Stripe). Eles levam só o número da conta, o identificador e o tipo do evento da Stripe, o status e, em falhas, o código do erro; nunca e-mail, nome, endereço, CPF/CNPJ ou dados de cartão.
Os logs ficam no Cloudflare Workers Logs: retenção de 3 dias no plano Free e 7 dias no pago; em nenhum caso mais de 7 dias. Os invocation logs automáticos do Cloudflare (que registrariam a URL completa de cada requisição, inclusive a query string) estão desligados; só a linha acima é gravada.
Onde os dados são processados
- Execução: Cloudflare Workers, com smart placement: a requisição pode ser executada em um data center
próximo ao banco, ou seja, fora do Brasil. O
textotransita e é processado nessa memória, sem persistir. - Banco: Neon Postgres, região
us-east-2(Ohio, EUA). Contém o corpus público (leis e súmulas), as chaves (hash), as contas e os dados de sessão, OAuth e assinatura descritos acima, e os contadores de uso. Nenhum conteúdo de cliente. - Índice remissivo: gerado fora da API, por um script de publicação, que envia ao DeepSeek (API
compatível com OpenAI) apenas o texto público das leis. Nenhuma requisição,
texto, query ou chave de cliente vai para lá.
Subprocessadores
| Subprocessador | Para quê | Dados | Onde |
|---|---|---|---|
| Cloudflare | Execução da API, rede, logs | IP e cabeçalhos da conexão (dentro dos termos da própria Cloudflare); a linha de log acima | Global (inclui EUA) |
| Neon | Banco de dados | O que está em "O que é guardado" | EUA (us-east-2) |
| Stripe | Pagamentos e assinatura | E-mail da conta; cartão, nome, endereço e CPF/CNPJ de cobrança, que você informa direto à Stripe | EUA e outros países, conforme a Stripe |
| Focus NFe | Emissão da nota fiscal de serviço (NFS-e Nacional) | Nome, CPF/CNPJ e e-mail do cliente, valor e descrição do serviço | Brasil |
A nota fiscal emitida é, por lei, enviada ao Ambiente de Dados Nacional da NFS-e (Receita Federal e município) e fica disponível para consulta nos sistemas oficiais. Não há outro subprocessador. O Lei Vigente não envia e-mails hoje; se a recuperação de senha por link for ativada, o provedor de envio entra nesta tabela antes.
LGPD, em termos práticos
- Você é o controlador dos dados que envia nas requisições (
texto, citações, buscas); o Lei Vigente atua como operador, tratando otextoapenas para devolver a resposta e sem retê-lo. - Para os dados da sua conta, da chave e da assinatura (e-mail, sessões, tokens, contadores, identificadores
da Stripe), o Lei Vigente é o controlador. Bases legais (art. 7º da LGPD):
- execução de contrato (inciso V): criar e manter a conta, autenticar, conectar assistentes por OAuth, aplicar os limites do plano e cobrar a assinatura;
- cumprimento de obrigação legal (inciso II): emitir a nota fiscal e guardar os registros fiscais pelo prazo da legislação tributária;
- legítimo interesse (inciso IX): contar requisições e limitar o uso por IP para proteger o serviço contra abuso.
- Há transferência internacional (execução, banco e Stripe nos EUA). Para o
textoela é transitória e sem retenção; para conta, chave, tokens e contadores, é armazenamento. Se a sua política exigir residência no Brasil, fale com hello@igorlourenco.com antes de integrar. - Seus direitos (art. 18): confirmação e acesso aos dados, correção, portabilidade, informação sobre compartilhamento, revogação do consentimento quando aplicável e eliminação. Peça por hello@igorlourenco.com, a partir do e-mail da conta; a resposta vem em até 15 dias.
- Excluir a conta: por enquanto, pelo mesmo e-mail. A exclusão cancela a assinatura na Stripe (se houver) e apaga e-mail, sessões, tokens OAuth, contadores de uso e, se você pedir, as chaves de API emitidas para você. Ficam apenas os registros fiscais (notas emitidas) e o histórico de pagamentos na Stripe, pelo prazo que a lei exige.
- Você também pode reclamar à Autoridade Nacional de Proteção de Dados (ANPD).
Recomendações para minimizar
- Envie só o que precisa ser verificado.
/v1/parseextrai citações sem contexto;/v1/resolverrecebe citações já estruturadas; nenhuma das duas exige o texto inteiro. Só/v1/resolver-texto(sugestões a partir do contexto) se beneficia da frase completa. - Anonimize nomes de partes antes de enviar quando isso não afetar as citações; o parser não usa nomes.
- Não reutilize identificadores internos sensíveis em
X-Request-Id. - Em assistentes (ChatGPT, claude.ai), prefira conectar a conta por OAuth a colar a chave na URL do conector: a URL deixa de carregar um segredo e o token de acesso expira em 1 hora.
Suporte
Como falar com o Lei Vigente, trocar uma senha esquecida, reconectar o ChatGPT ou o Claude, pedir a exclusão da conta e relatar um texto de lei errado.
Termos de uso
Regras de uso do Lei Vigente (API, servidor MCP, plugin do ChatGPT e conector do claude.ai), planos, pagamento, reembolso e limites de responsabilidade.