Detecta e mascara dados pessoais brasileiros antes de qualquer chamada à IA. Uma linha de código. Processado em São Paulo.
// Antes de enviar para a IA const { textoLimpo, mapa } = await fetch( "https://api.mascaraai.com/api/scan", { method: "POST", headers: { "X-API-Key": "msk_sua_chave", "Content-Type": "application/json" }, body: JSON.stringify({ texto: payload }) } ).then(r => r.json()); // Envia limpo para Claude/GPT/Gemini const resposta = await openai.chat(textoLimpo); // Restaura via API const { textoRestaurado } = await fetch( "https://api.mascaraai.com/api/restore", { body: JSON.stringify({ texto: resposta, mapa }) } ).then(r => r.json());
{
"textoLimpo": "Contrato de ⟦PII:NOME:A3F2⟧,
CPF ⟦PII:CPF:B7C1⟧, residente em
⟦PII:CEP:D2E9⟧...",
"totalEncontrado": 3,
"mapa": {
"⟦PII:NOME:A3F2⟧": "João Silva",
"⟦PII:CPF:B7C1⟧": "123.456.789-00",
"⟦PII:CEP:D2E9⟧": "01310-100"
},
"creditos_restantes": 4892043
}
Detecção em duas camadas — regex com validação de dígito verificador + modelo NER especializado.
CPF, CNPJ, RG, CNH, PIS, Cartão de crédito, CEP, Telefone, Email — com validação de dígito verificador.
Nomes, datas de nascimento, naturalidade, filiação — detectados pelo modelo GLiNER com contexto.
OAB/SP 12345, CRM/RJ 67890, CREA/MG 123456, COREN/RS 7890 — com prefixo da sigla.
Cada dado vira ⟦PII:TIPO:HASH⟧. Mesmo valor = mesmo token. Restaure via POST /api/restore.
Sanitize exports de produção antes de usar em staging, QA ou pentest. O mapa retornado permite restaurar quando necessário — dado real nunca entra no ambiente de teste.
Até 50 textos por chamada via POST /api/scan/batch. Ideal para processar arrays de documentos.
Configure uma URL para receber notificação sempre que PII for detectado. Útil para auditoria em tempo real.
Base URL: https://api.mascaraai.com
X-API-Key: msk_sua_chave ou X-Session-Token: token
Casos de uso comuns com código pronto.
import requests def chat_seguro(mensagem_usuario): # 1. Mascara dados do usuário scan = requests.post( "https://api.mascaraai.com/api/scan", headers={"X-API-Key": "msk_..."}, json={"texto": mensagem_usuario} ).json() # 2. Envia limpo para o LLM resposta_llm = openai.chat(scan["textoLimpo"]) # 3. Restaura dados na resposta restaurado = requests.post( "https://api.mascaraai.com/api/restore", headers={"X-API-Key": "msk_..."}, json={"texto": resposta_llm, "mapa": scan["mapa"]} ).json()["textoRestaurado"] return restaurado
import requests, json def sanitizar_para_homologacao(registros: list) -> tuple: """ Recebe lista de dicts com dados reais. Retorna (registros_limpos, mapa_global) para uso em staging. Nunca armazene o mapa no ambiente de teste. """ textos = [json.dumps(r, ensure_ascii=False) for r in registros] resp = requests.post( "https://api.mascaraai.com/api/scan/batch", headers={"X-API-Key": "msk_..."}, json={"textos": textos} ).json() mapa_global = {} registros_limpos = [] for r in resp["resultados"]: mapa_global.update(r["mapa"]) registros_limpos.append(json.loads(r["textoLimpo"])) # mapa_global fica em produção — staging só recebe registros_limpos return registros_limpos, mapa_global
// Processa array de contratos de uma vez const { resultados } = await fetch( "https://api.mascaraai.com/api/scan/batch", { method: "POST", headers: { "X-API-Key": "msk_..." }, body: JSON.stringify({ textos: contratos.map(c => c.conteudo) }) } ).then(r => r.json()); // resultados[i].textoLimpo — pronto para RAG/embedding const limpos = resultados.map(r => r.textoLimpo);
Três planos. Pay-as-you-go via Pix. Créditos não expiram. Você já entende tokens — a gente fala a mesma língua.
~143k tokens grátis por mês. Sem cartão. API key em segundos.
Precisão por categoria de dado — para você dimensionar o risco antes de ir para produção.