common.skipToContent

Dokumentacja API

Zintegruj anonimizację w swoich aplikacjach

Pełne REST API do programatycznego wykrywania i anonimizacji PII.


Podstawowy URL

https://anonymize.today/api

Wszystkie 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_TOKEN

Uzyskiwanie tokena API

  1. Zaloguj się na swoje konto anonymize.today
  2. Przejdź do Ustawienia → Konto → Tokeny API
  3. Kliknij Wygeneruj nowy token
  4. 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ńcowegoLimit szybkościDopuszczalne nagłe zwiększenie: 10 żądań
Authentication3 requests/second5 requests
Analysis & Anonymization30 requests/second50 requests
Presets & Settings10 requests/second20 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

OperatorOpisOdwracalnyPrzykład
replaceZastąp miejscemNoJohn → [PERSON]
maskCzęściowo zamaskuj znakiNojohn@email.com → j***@email.com
redactUsuń całkowicieNoJohn → (empty)
hashJednokierunkowy hash SHA-256NoJohn → a3f2b1c4...
encryptSzyfrowanie AES-256-GCMYesJohn → [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:

KodJęzykSilnik
enEnglishspaCy
deGermanspaCy
esSpanishspaCy
frFrenchspaCy
itItalianspaCy
ptPortuguesespaCy
nlDutchspaCy
plPolishspaCy
ruRussianspaCy
jaJapanesespaCy
zhChinesespaCy
koKoreanspaCy
arArabicTransformer
hiHindiTransformer
trTurkishTransformer

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:

StatusZnaczenieOpis
200OKRequest succeeded
201CreatedResource created successfully
400Bad Request400 - Złe żądanie (nieprawidłowe parametry)
401Unauthorized401 - Nieautoryzowany (nieprawidłowy lub brakujący token)
402Payment RequiredInsufficient tokens
403ForbiddenAccess denied to resource
404Not FoundResource not found
429Too Many Requests429 - Ograniczenie szybkości (za dużo żądań)
500Internal Error500 - 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