Dokumentacja API
Zintegruj anonimizację w swoich aplikacjach
Pełne REST API do programatycznego wykrywania i anonimizacji PII.
Podstawowy URL
https://anonymize.today/apiWszystkie punkty końcowe API są względne do tego podstawowego URL. Na przykład, punkt końcowy analizy to https://anonymize.today/api/presidio/analyze.
Uwierzytelnianie
Uwierzytelnij żądania API za pomocą tokenów Bearer:
Authorization: Bearer YOUR_API_TOKENUzyskiwanie tokena API
- Zaloguj się na swoje konto anonymize.today
- Przejdź do Ustawienia → Konto → Tokeny API
- Kliknij Wygeneruj nowy token
- Skopiuj i bezpiecznie przechowuj swój token (nie będzie wyświetlany ponownie)
Uwaga dotycząca bezpieczeństwa
Nigdy nie ujawniaj swojego tokena API w kodzie po stronie klienta ani w publicznych repozytoriach. Używaj zmiennych środowiskowych i żądań po stronie serwera.
Token w żądaniach
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"]}'Limity szybkości
| Typ punktu końcowego | Limit szybkości | Dopuszczalne nagłe zwiększenie: 10 żądań |
|---|---|---|
| Authentication | 3 requests/second | 5 requests |
| Analysis & Anonymization | 30 requests/second | 50 requests |
| Presets & Settings | 10 requests/second | 20 requests |
Gdy limit szybkości zostanie osiągnięty, API zwraca 429 Zbyt wiele żądań z nagłówkiem Retry-After, wskazującym, kiedy możesz spróbować ponownie.
Podstawowe punkty końcowe
Analizuj tekst
Wykryj jednostki PII w tekście. Zwraca pozycje i typy wykrytych jednostek.
Anonymizuj tekst
Anonymizuj wykryte jednostki PII przy użyciu różnych operatorów.
Przywróć anonimowość tekstu
Przywróć zaszyfrowane jednostki do ich oryginalnych wartości przy użyciu tego samego klucza szyfrującego.
Operatory anonimizacji
| Operator | Opis | Odwracalny | Przykład |
|---|---|---|---|
| replace | Zastąp miejscem | No | John → [PERSON] |
| mask | Częściowo zamaskuj znaki | No | john@email.com → j***@email.com |
| redact | Usuń całkowicie | No | John → (empty) |
| hash | Jednokierunkowy hash SHA-256 | No | John → a3f2b1c4... |
| encrypt | Szyfrowanie AES-256-GCM | Yes | John → [ENC:...] |
Konfiguracje operatorów
// 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 presetów
Typy jednostek
anonymize.today obsługuje 256 typów jednostek w 10 kategoriach:
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
Zobacz pełną listę typów jednostek w dokumentacji presetów. Presets documentation.
Obsługiwane języki
API obsługuje 27 języków do rozpoznawania PII:
| Kod | Język | Silnik |
|---|---|---|
| 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 |
Dodatkowe języki: rumuński, grecki, chorwacki, słoweński, macedoński, szwedzki, duński, norweski, fiński, ukraiński, litewski, kataloński
Obsługa błędów
Standardowe kody statusu HTTP:
| Status | Znaczenie | Opis |
|---|---|---|
| 200 | OK | Request succeeded |
| 201 | Created | Resource created successfully |
| 400 | Bad Request | 400 - Złe żądanie (nieprawidłowe parametry) |
| 401 | Unauthorized | 401 - Nieautoryzowany (nieprawidłowy lub brakujący token) |
| 402 | Payment Required | Insufficient tokens |
| 403 | Forbidden | Access denied to resource |
| 404 | Not Found | Resource not found |
| 429 | Too Many Requests | 429 - Ograniczenie szybkości (za dużo żądań) |
| 500 | Internal Error | 500 - Błąd serwera (skontaktuj się z pomocą techniczną) |
Format odpowiedzi błędu
{
"error": {
"code": "INSUFFICIENT_TOKENS",
"message": "You need 5 tokens but only have 2 remaining",
"details": {
"required": 5,
"available": 2
}
}
}Pełne przykłady
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
Ostatnia aktualizacja: marzec 2026