common.skipToContent

Referência da API

Integre a anonimização em suas aplicações

API REST completa para detecção e anonimização programática de PII.


URL Base

https://anonymize.today/api

Todos os endpoints da API são relativos a esta URL base. Por exemplo, o endpoint de análise é https://anonymize.today/api/presidio/analyze.


Autenticação

Autentique solicitações de API usando tokens Bearer:

Authorization: Bearer YOUR_API_TOKEN

Obtendo um Token da API

  1. Faça login na sua conta anonymize.today
  2. Vá para Configurações → Conta → Tokens da API
  3. Clique em Gerar Novo Token
  4. Copie e armazene seu token com segurança (não será mostrado novamente)

Nota de Segurança

Nunca exponha seu token da API em código do lado do cliente ou repositórios públicos. Use variáveis de ambiente e solicitações do lado do servidor.

Token em Solicitações

TypeScript

const response = await fetch('https://anonymize.today/api/presidio/analyze', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.ANONYMIZE_API_TOKEN}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ text, entities }),
});

Python

import os
import requests

headers = {
    "Authorization": f"Bearer {os.environ['ANONYMIZE_API_TOKEN']}",
    "Content-Type": "application/json"
}

response = requests.post(
    "https://anonymize.today/api/presidio/analyze",
    headers=headers,
    json={"text": text, "entities": entities}
)

cURL

curl -X POST https://anonymize.today/api/presidio/analyze \
  -H "Authorization: Bearer $ANONYMIZE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text": "John Doe works at Acme Corp", "entities": ["PERSON", "ORGANIZATION"]}'

Limites de Taxa

Tipo de EndpointLimite de TaxaPermissão de pico: 10 solicitações
Authentication3 requests/second5 requests
Analysis & Anonymization30 requests/second50 requests
Presets & Settings10 requests/second20 requests

Quando limitado, a API retorna 429 Muitas Solicitações com um cabeçalho Retry-After indicando quando você pode tentar novamente.


Endpoints Principais

Analisar Texto

Detectar entidades PII no texto. Retorna posições e tipos de entidades detectadas.

Anonimizar Texto

Anonimizar entidades PII detectadas usando vários operadores.

Desanonimizar Texto

Restaurar entidades criptografadas aos seus valores originais usando a mesma chave de criptografia.


Operadores de Anonimização

OperadorDescriçãoReversívelExemplo
replaceSubstituir por espaço reservadoNoJohn → [PERSON]
maskMascarar parcialmente caracteresNojohn@email.com → j***@email.com
redactRemover completamenteNoJohn → (empty)
hashHash SHA-256 unidirecionalNoJohn → a3f2b1c4...
encryptCriptografia AES-256-GCMYesJohn → [ENC:...]

Configurações do Operador

// Replace operator
{ "type": "replace", "new_value": "[PERSON]" }

// Mask operator
{
  "type": "mask",
  "masking_char": "*",
  "chars_to_mask": 5,
  "from_end": false
}

// Hash operator
{ "type": "hash", "hash_type": "sha256" }

// Encrypt operator (requires encryption key in user settings)
{ "type": "encrypt" }

// Redact operator
{ "type": "redact" }

API de Predefinições


Tipos de Entidade

anonymize.today suporta 256 tipos de entidade em 10 categorias:

Personal

PERSON, EMAIL_ADDRESS, PHONE_NUMBER

Financial

CREDIT_CARD, IBAN_CODE, SWIFT_CODE, CRYPTO

Location

LOCATION, ADDRESS, COORDINATES

Government

SSN, PASSPORT, DRIVER_LICENSE, NATIONAL_ID

Contact

URL, DOMAIN_NAME

Technical

IP_ADDRESS, MAC_ADDRESS

Temporal

DATE_TIME, AGE

Organizational

ORGANIZATION, JOB_TITLE

Medical

MEDICAL_LICENSE, HEALTH_ID

Custom

User-defined patterns

Veja a lista completa de tipos de entidade na documentação de Predefinições. Presets documentation.


Idiomas Suportados

A API suporta 27 idiomas para reconhecimento de PII:

CódigoIdiomaMotor
enEnglishspaCy
deGermanspaCy
esSpanishspaCy
frFrenchspaCy
itItalianspaCy
ptPortuguesespaCy
nlDutchspaCy
plPolishspaCy
ruRussianspaCy
jaJapanesespaCy
zhChinesespaCy
koKoreanspaCy
arArabicTransformer
hiHindiTransformer
trTurkishTransformer

Idiomas adicionais: romeno, grego, croata, esloveno, macedônio, sueco, dinamarquês, norueguês, finlandês, ucraniano, lituano, catalão


Tratamento de Erros

Códigos de status HTTP padrão:

StatusSignificadoDescrição
200OKRequest succeeded
201CreatedResource created successfully
400Bad Request400 - Solicitação Inválida (parâmetros inválidos)
401Unauthorized401 - Não Autorizado (token inválido ou ausente)
402Payment RequiredInsufficient tokens
403ForbiddenAccess denied to resource
404Not FoundResource not found
429Too Many Requests429 - Limite de Taxa (muitas solicitações)
500Internal Error500 - Erro do Servidor (entre em contato com o suporte)

Formato de Resposta de Erro

{
  "error": {
    "code": "INSUFFICIENT_TOKENS",
    "message": "You need 5 tokens but only have 2 remaining",
    "details": {
      "required": 5,
      "available": 2
    }
  }
}

Exemplos Completos

TypeScript/Node.js

import fetch from 'node-fetch';

const API_BASE = 'https://anonymize.today/api';
const API_TOKEN = process.env.ANONYMIZE_API_TOKEN;

async function analyzeAndAnonymize(text: string) {
  // Step 1: Analyze
  const analyzeResponse = await fetch(`${API_BASE}/presidio/analyze`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${API_TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      text,
      entities: ['PERSON', 'EMAIL_ADDRESS', 'PHONE_NUMBER'],
      language: 'en',
    }),
  });

  const { results } = await analyzeResponse.json();

  if (results.length === 0) {
    return { text, anonymized: false };
  }

  // Step 2: Anonymize
  const anonymizeResponse = await fetch(`${API_BASE}/presidio/anonymize`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${API_TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      text,
      analyzer_results: results,
      anonymizers: {
        DEFAULT: { type: 'replace', new_value: '[REDACTED]' },
      },
    }),
  });

  return anonymizeResponse.json();
}

// Usage
const result = await analyzeAndAnonymize('Contact John Doe at john@example.com');
console.log(result.text); // "Contact [REDACTED] at [REDACTED]"

Python

import os
import requests

API_BASE = "https://anonymize.today/api"
API_TOKEN = os.environ["ANONYMIZE_API_TOKEN"]

def analyze_and_anonymize(text: str) -> dict:
    headers = {
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    }

    # Step 1: Analyze
    analyze_response = requests.post(
        f"{API_BASE}/presidio/analyze",
        headers=headers,
        json={
            "text": text,
            "entities": ["PERSON", "EMAIL_ADDRESS", "PHONE_NUMBER"],
            "language": "en"
        }
    )
    results = analyze_response.json()["results"]

    if not results:
        return {"text": text, "anonymized": False}

    # Step 2: Anonymize
    anonymize_response = requests.post(
        f"{API_BASE}/presidio/anonymize",
        headers=headers,
        json={
            "text": text,
            "analyzer_results": results,
            "anonymizers": {
                "DEFAULT": {"type": "replace", "new_value": "[REDACTED]"}
            }
        }
    )

    return anonymize_response.json()

# Usage
result = analyze_and_anonymize("Contact John Doe at john@example.com")
print(result["text"])  # "Contact [REDACTED] at [REDACTED]"

Related Documentation

Última Atualização: Março de 2026