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/apiTodos 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_TOKENObtendo um Token da API
- Faça login na sua conta anonymize.today
- Vá para Configurações → Conta → Tokens da API
- Clique em Gerar Novo Token
- 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 Endpoint | Limite de Taxa | Permissão de pico: 10 solicitações |
|---|---|---|
| Authentication | 3 requests/second | 5 requests |
| Analysis & Anonymization | 30 requests/second | 50 requests |
| Presets & Settings | 10 requests/second | 20 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
| Operador | Descrição | Reversível | Exemplo |
|---|---|---|---|
| replace | Substituir por espaço reservado | No | John → [PERSON] |
| mask | Mascarar parcialmente caracteres | No | john@email.com → j***@email.com |
| redact | Remover completamente | No | John → (empty) |
| hash | Hash SHA-256 unidirecional | No | John → a3f2b1c4... |
| encrypt | Criptografia AES-256-GCM | Yes | John → [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ódigo | Idioma | Motor |
|---|---|---|
| en | English | spaCy |
| de | German | spaCy |
| es | Spanish | spaCy |
| fr | French | spaCy |
| it | Italian | spaCy |
| pt | Portuguese | spaCy |
| nl | Dutch | spaCy |
| pl | Polish | spaCy |
| ru | Russian | spaCy |
| ja | Japanese | spaCy |
| zh | Chinese | spaCy |
| ko | Korean | spaCy |
| ar | Arabic | Transformer |
| hi | Hindi | Transformer |
| tr | Turkish | Transformer |
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:
| Status | Significado | Descrição |
|---|---|---|
| 200 | OK | Request succeeded |
| 201 | Created | Resource created successfully |
| 400 | Bad Request | 400 - Solicitação Inválida (parâmetros inválidos) |
| 401 | Unauthorized | 401 - Não Autorizado (token inválido ou ausente) |
| 402 | Payment Required | Insufficient tokens |
| 403 | Forbidden | Access denied to resource |
| 404 | Not Found | Resource not found |
| 429 | Too Many Requests | 429 - Limite de Taxa (muitas solicitações) |
| 500 | Internal Error | 500 - 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