common.skipToContent

API-довідка

Інтегруйте анонімізацію у свої додатки

Повний REST API для програмного виявлення та анонімізації PII.


Базова URL-адреса

https://anonymize.today/api

Усі кінцеві точки API є відносними до цієї базової URL-адреси. Наприклад, кінцева точка аналізу є https://anonymize.today/api/presidio/analyze.


Аутентифікація

Аутентифікуйте API-запити за допомогою токенів Bearer:

Authorization: Bearer YOUR_API_TOKEN

Отримання API токена

  1. Увійдіть до свого облікового запису anonymize.today
  2. Перейдіть до Налаштування → Обліковий запис → API токени
  3. Натисніть Створити новий токен
  4. Скопіюйте та надійно збережіть свій токен (він більше не буде показаний)

Примітка з безпеки

Ніколи не викладайте свій API токен у коді на стороні клієнта або публічних репозиторіях. Використовуйте змінні середовища та запити на стороні сервера.

Токен у запитах

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"]}'

Обмеження запитів

Тип кінцевої точкиЛіміт запитівДопустимий сплеск: 10 запитів
Authentication3 requests/second5 requests
Analysis & Anonymization30 requests/second50 requests
Presets & Settings10 requests/second20 requests

Коли ліміт запитів перевищено, API повертає 429 Занадто багато запитів з заголовком Retry-After, що вказує, коли ви можете повторити спробу.


Основні кінцеві точки

Аналізувати текст

Виявляти PII-об'єкти в тексті. Повертає позиції та типи виявлених об'єктів.

Анонімізувати текст

Анонімізувати виявлені PII-об'єкти за допомогою різних операторів.

Відновити анонімізований текст

Відновити зашифровані об'єкти до їхніх оригінальних значень за допомогою того ж ключа шифрування.


Оператори анонімізації

ОператорОписЗворотнийПриклад
replaceЗамінити на заповнювачNoJohn → [PERSON]
maskЧастково замаскувати символиNojohn@email.com → j***@email.com
redactПовністю видалитиNoJohn → (empty)
hashОдносторонній SHA-256 хешNoJohn → a3f2b1c4...
encryptAES-256-GCM шифруванняYesJohn → [ENC:...]

Конфігурації операторів

// 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 пресетів


Типи об'єктів

anonymize.today підтримує 256 типів об'єктів у 10 категоріях:

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

Перегляньте повний список типів об'єктів у документації пресетів. Presets documentation.


Підтримувані мови

API підтримує 27 мов для виявлення PII:

КодМоваДвигун
enEnglishspaCy
deGermanspaCy
esSpanishspaCy
frFrenchspaCy
itItalianspaCy
ptPortuguesespaCy
nlDutchspaCy
plPolishspaCy
ruRussianspaCy
jaJapanesespaCy
zhChinesespaCy
koKoreanspaCy
arArabicTransformer
hiHindiTransformer
trTurkishTransformer

Додаткові мови: румунська, грецька, хорватська, словенська, македонська, шведська, данська, норвезька, фінська, українська, литовська, каталонська


Обробка помилок

Стандартні коди статусу HTTP:

СтатусЗначенняОпис
200OKRequest succeeded
201CreatedResource created successfully
400Bad Request400 - Неправильний запит (недійсні параметри)
401Unauthorized401 - Неавторизований (недійсний або відсутній токен)
402Payment RequiredInsufficient tokens
403ForbiddenAccess denied to resource
404Not FoundResource not found
429Too Many Requests429 - Обмеження запитів (занадто багато запитів)
500Internal Error500 - Помилка сервера (зв'яжіться з підтримкою)

Формат відповіді про помилку

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

Повні приклади

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

Останнє оновлення: березень 2026