API - Anonimizando textos

Modificado em Qua, 8 Abr na (o) 9:18 PM


v1.0 · Disponível

API de Anonimização de Textos

Integre detecção e remoção automática de dados pessoais diretamente na sua aplicação. Envie um bloco de texto e receba de volta o conteúdo anonimizado junto com o relatório dos dados encontrados.

?Base URL: https://mavendoc.maven.com.br/mavendoc/resources
? Formato: JSON
? Auth: API Key

Visão Geral

O que é esta API

A API de Anonimização processa textos livres e substitui automaticamente dados pessoais identificados por asteriscos (*), preservando o comprimento original de cada dado removido. O processamento é assíncrono: você envia o texto, recebe um hash de rastreamento e consulta o resultado quando estiver pronto.

ℹ️
Processamento assíncrono
O resultado não é retornado imediatamente na chamada de envio. Após submeter o texto, utilize o hash recebido para verificar o status e obter o resultado final.

Autenticação

API Key via Header

Todas as requisições devem incluir o header Authorization com sua chave de API. As chaves são gerenciadas no painel do MavenDoc em Configurações → Chaves de API.

HTTP HeaderCopiar
Authorization: {SUA_API_KEY}
?
Segurança da chave
Nunca exponha sua API key em código client-side, repositórios públicos ou logs. Utilize variáveis de ambiente no servidor para armazená-la.

Créditos

Como o consumo é calculado

Cada chamada à API consome créditos da sua conta com base no volume de texto enviado.

?

Regra de consumo

A cada bloco de até 3.000 caracteres, é consumido 1 crédito. O cálculo é feito com arredondamento para cima:
créditos = ⌈ total_caracteres / 3000 ⌉

Tamanho do textoCréditos consumidos
Até 3.000 caracteres1 crédito
3.001 a 6.000 caracteres2 créditos
6.001 a 9.000 caracteres3 créditos
N caracteres⌈N / 3000⌉ créditos

Fluxo de Integração

Passo a passo

1
Enviar o texto para análise

Faça um POST /text/analyze com o bloco de texto no corpo da requisição. Você receberá imediatamente um hash único e o status PENDENTE.

2
Aguardar o processamento

O servidor processa o texto de forma assíncrona usando IA para identificar e classificar os dados pessoais. O tempo varia conforme o tamanho do texto.

3
Consultar o resultado (polling)

Faça requisições periódicas ao GET /text/result/{hash} até receber "status": "FINALIZADO". Recomendamos intervalos de 2 a 5 segundos entre as tentativas.

4
Processar o retorno

O resultado contém o texto anonimizado (content) e a lista de dados pessoais encontrados (data_removed) com tipo e valor original.

Endpoints

Referência completa

POST/text/analyze

Submete um bloco de texto para anonimização. O processamento ocorre de forma assíncrona — o retorno é imediato com um hash para rastreamento. Os créditos são debitados no momento da submissão.

Request Headers

HeaderTipoObrigatoriedadeDescrição
AuthorizationstringObrigatórioSua chave de API
Content-TypestringObrigatórioDeve ser application/json

Request Body

CampoTipoObrigatoriedadeDescrição
textostringObrigatórioTexto a ser analisado e anonimizado. Cada 3.000 caracteres consome 1 crédito.
cURLCopiar
curl -X 'POST' \  'https://mavendoc.maven.com.br/mavendoc/resources/text/analyze' \  -H 'accept: application/json' \  -H 'Authorization: {SUA_API_KEY}' \  -H 'Content-Type: application/json' \  -d '{  "texto": "Prezado João Silva, segue o orçamento solicitado. joaosilva@email.com.br (11) 91234-5678" }'

Response — 200 OK

CampoTipoDescrição
hashstringIdentificador único SHA-256 do registro. Use-o para consultar o resultado.
statusstringSempre retorna PENDENTE neste endpoint.
JSON — RespostaCopiar
{  "hash": "a3f8d2c1e9b047605f3a2d18c4e7f6901b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",  "status": "PENDENTE"
}
GET/text/result/{hash}

Consulta o resultado de uma análise anteriormente submetida. Retorna o texto anonimizado e a lista de dados pessoais encontrados quando o status for FINALIZADO. Enquanto o processamento estiver em andamento, retorna apenas o status PENDENTE.

Path Parameters

ParâmetroTipoObrigatoriedadeDescrição
hashstringObrigatórioO hash SHA-256 retornado pelo endpoint POST /text/analyze.

Status possíveis na resposta

PENDENTE

O texto ainda está sendo processado. Continue fazendo polling.

FINALIZADO

Processamento concluído. O resultado está disponível.

ERRO

Falha no processamento. Verifique a mensagem retornada.

cURLCopiar
curl -X 'GET' \  'https://mavendoc.maven.com.br/mavendoc/resources/text/result/{hash}' \  -H 'accept: application/json' \  -H 'Authorization: {SUA_API_KEY}'

Response — Status PENDENTE

JSONCopiar
{  "hash": "a3f8d2c1e9b047605f3a2d18c4e7f6901b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",  "status": "PENDENTE"
}

Response — Status FINALIZADO

CampoTipoDescrição
hashstringHash SHA-256 do registro.
statusstringFINALIZADO quando o processamento concluiu com sucesso.
contentstringTexto original com os dados pessoais substituídos por *. Cada * corresponde a um caractere do dado removido.
data_removedarrayLista de dados pessoais encontrados, cada item com data-typedata-value.
JSON — Resposta FINALIZADOCopiar
{  "hash": "a3f8d2c1e9b047605f3a2d18c4e7f6901b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",  "status": "FINALIZADO",  "content": "Prezado **********, segue o orçamento solicitado. *********************** **************",  "data_removed": [    {      "data-type": "Nome de pessoa física",      "data-value": "João Silva"    },    {      "data-type": "Emails pessoais",      "data-value": "joaosilva@email.com.br"    },    {      "data-type": "Telefones de pessoas",      "data-value": "(11) 91234-5678"    }  ] }

Códigos HTTP

Respostas da API

200Sucesso. Verifique o campo status no corpo da resposta para saber o estado do processamento.
401Não autorizado. A chave de API está ausente, inválida ou expirada.
402Créditos insuficientes. A conta não possui saldo para processar o texto enviado.
403Sem permissão. O plano da conta não possui acesso à API de anonimização (recurso Premium).
404Hash não encontrado. O valor informado em /result/{hash} não existe.
500Erro interno. Tente novamente em alguns instantes. Se persistir, entre em contato com o suporte.

Exemplos Completos

Fluxo end-to-end

JavaScript — Integração completaCopiar
const API_KEY = 'SUA_API_KEY_AQUI';
const BASE_URL = 'https://mavendoc.maven.com.br/mavendoc/resources'; 
async function anonimizarTexto(texto) {  // 1. Submeter o texto  const submitRes = await fetch(`${BASE_URL}/text/analyze`, {    method: 'POST',    headers: {      'Authorization': API_KEY,      'Content-Type': 'application/json',    },    body: JSON.stringify({ texto })  });   if (!submitRes.ok) throw new Error(`Erro ao enviar: HTTP ${submitRes.status}`);   const { hash } = await submitRes.json();  console.log('Hash recebido:', hash);   // 2. Polling até o resultado ficar pronto (timeout: 2 min)  const deadline = Date.now() + 120_000;   while (Date.now() < deadline) {    await new Promise(r => setTimeout(r, 3000));     const result = await fetch(      `${BASE_URL}/text/result/${hash}`,      { headers: { 'Authorization': API_KEY } }    ).then(r => r.json());     if (result.status === 'FINALIZADO') return result;    if (result.status === 'ERRO') throw new Error('Erro no processamento');  }   throw new Error('Timeout: resultado não retornou em 2 minutos'); }

// Uso:
anonimizarTexto('Prezado João Silva, joaosilva@email.com.br (11) 91234-5678')  .then(r => console.log(r))  .catch(e => console.error(e));
PythonCopiar
import requests, time 
API_KEY = "SUA_API_KEY_AQUI"
BASE_URL = "https://mavendoc.maven.com.br/mavendoc/resources"
HEADERS = {"Authorization": API_KEY, "Content-Type": "application/json"} 
def anonimizar_texto(texto, timeout=120, intervalo=3):    # 1. Submeter o texto    res = requests.post(        f"{BASE_URL}/text/analyze",        headers=HEADERS,        json={"texto": texto}    )    res.raise_for_status()    hash_val = res.json()["hash"]    print(f"Hash recebido: {hash_val}")     # 2. Polling    deadline = time.time() + timeout    while time.time() < deadline:        time.sleep(intervalo)        result = requests.get(            f"{BASE_URL}/text/result/{hash_val}",            headers={"Authorization": API_KEY}        ).json()         if result["status"] == "FINALIZADO": return result        if result["status"] == "ERRO": raise Exception("Erro no processamento")     raise TimeoutError("Resultado não retornou no prazo") 
# Uso:
resultado = anonimizar_texto("Prezado João Silva, joaosilva@email.com.br (11) 91234-5678") print(resultado["content"]) print(resultado["data_removed"])

Tipos de Dados Detectados

Categorias identificadas pela IA

O sistema detecta automaticamente diversas categorias de dados pessoais conforme a LGPD. Abaixo estão os tipos mais comuns retornados no campo data-type:

data-typeExemplos
Nome de pessoa físicaJoão Silva, Maria Oliveira
Emails pessoaisjoaosilva@email.com.br, maria@gmail.com
Telefones de pessoas(11) 91234-5678, +55 21 98765-4321
CPF123.456.789-00
RG12.345.678-9
EndereçosRua das Flores, 123 – São Paulo/SP
Datas de nascimento12/03/1985
Dados bancáriosAgência 0001, Conta 12345-6
ℹ️
A lista de tipos detectados pode variar conforme o prompt configurado para a sua conta. Entre em contato com a equipe MavenDoc para personalizar as categorias de detecção.
API de Anonimização de Textos · v1.0© 2025 Maven Tecnologia

Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos
A verificação do CAPTCHA é obrigatória.

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo