API DocsAnonymisierung

Anonymisierung

Text und Dateien anonymisieren, anonymer LLM-Chat mit automatischer De-Anonymisierung.

Auf dieser Seite

Text-Anonymisierung

Maskiere personenbezogene Daten (PII) in beliebigem Text automatisch.

POST/api/anonymize

Sende den zu anonymisierenden Text im Body mit.

ParameterTypeDescription
textrequired
stringDer Text, der anonymisiert werden soll.
language
stringSprache des Textes (z.B. de, en). Verbessert die Erkennung.

Beispiel-Request

1curl -X POST https://app.anymize.ai/api/anonymize \
2 -H "Authorization: Bearer YOUR_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "text": "Max Mustermann wohnt in Berlin und seine E-Mail ist max@example.com",
6 "language": "de"
7 }'

Beispiel-Antwort

Der anonymisierte Text enthält Platzhalter für erkannte Entitäten.

202Accepted
{
  "job_id": "11111111-1111-4111-8111-111111111111",
  "status": "processing",
  "message": "Job created. Use /api/status/{job_id} to check status.",
  "zdr": false
}

Dateien anonymisieren?

Für Dokumente und Bilder nutze die Datei-Anonymisierung.

Datei-Anonymisierung

Endpoint

Lade Dokumente oder Bilder hoch, um sie per OCR zu verarbeiten und automatisch zu anonymisieren.

POST/api/ocr

Unterstützte Formate

Die folgenden Dateiformate werden für die OCR-Verarbeitung unterstützt.

PDF
PNG
JPG
TIFF

Parameter

ParameterTypeDescription
filerequired
FileDokument- oder Bilddatei (PDF, PNG, JPG, TIFF)

Multipart Upload

Datei-Uploads müssen multipart/form-data verwenden, nicht JSON.

Beispiel-Request

1curl -X POST https://app.anymize.ai/api/ocr \
2 -H "Authorization: Bearer YOUR_API_KEY" \
3 -F "file=@document.pdf"

Antwort

Gibt eine Job-ID zurück. Die Verarbeitung läuft asynchron – prüfe den Status mit der Status-API.

202Accepted
{
  "job_id": "11111111-1111-4111-8111-111111111111",
  "status": "processing",
  "message": "Document submitted for OCR and anonymization. Use /api/status/{job_id} to check status."
}

Verarbeitungs-Pipeline

Die Datei-Anonymisierung durchläuft eine 3-Schritt-Pipeline.

1OCR extrahiert Text aus dem hochgeladenen Dokument
2Die Anonymisierungs-Pipeline erkennt und ersetzt personenbezogene Daten
3Das anonymisierte Dokument steht zum Export bereit

Verarbeitungsstatus prüfen

Nutze die Job-Status-API, um den Fortschritt abzufragen. Die Verarbeitungszeit hängt von der Dateigröße ab.

Anonymer Chat

Endpunkt

Kombiniere Chat und Anonymisierung in einem einzigen Request — deine Daten werden vor dem Modell maskiert.

POST/api/v1/llm-anonymous/chat/completions
Basis-URL für anonymen Chathttps://app.anymize.ai/api/v1/llm-anonymous

Ablauf

So verarbeitet der anonyme Chat deine Anfrage:

1Deine Nachricht wird empfangen und analysiert.
2Personenbezogene Daten werden automatisch maskiert.
3Der anonymisierte Text wird an das Modell gesendet.
4Die Antwort wird de-anonymisiert und zurückgegeben.

Erhöhte Latenz

Durch die automatische Anonymisierung vor dem LLM-Aufruf und die De-Anonymisierung der Antwort entsteht eine höhere Latenz im Vergleich zum normalen Chat-Endpoint. Plane ca. 2-5 Sekunden zusätzliche Verarbeitungszeit ein.

Parameter

Gleiche Parameter wie Chat Completions plus Anonymisierungs-Optionen.

ParameterTypeDescription
modelrequired
stringModell-ID — alle Chat-Modelle werden unterstützt.
messagesrequired
arrayArray von Nachrichten (system, user, assistant).
language
stringSprache des Textes für bessere PII-Erkennung.
stream
booleanSSE-Streaming aktivieren.

Platzhalter-Handling

Beim anonymen Chat werden personenbezogene Daten automatisch durch Platzhalter im Format [[Typ-HASH]] ersetzt. Damit die De-Anonymisierung funktioniert, muss das Modell diese Platzhalter exakt beibehalten.

Falsch

Sehr geehrter [Name anonymisiert], ich schreibe Ihnen wegen...

Richtig

Sehr geehrter Herr [[Person-ABC123]], ich schreibe Ihnen wegen...

Ohne den richtigen System-Prompt schreibt das Modell oft 'eine anonymisierte Person' oder '[Name anonymisiert]' statt den Platzhalter [[Person-ABC123]] zu verwenden. Das macht die De-Anonymisierung unmöglich.

Der anonyme Endpoint fügt automatisch folgenden Teil zum System-Prompt hinzu. Dieser wird an deinen eigenen System-Prompt angehängt, nicht ersetzt:

Automatisch injizierter System-Prompt-Teil
1## CRITICAL RULE: ANONYMIZATION PLACEHOLDERS
2
3THIS IS THE MOST IMPORTANT RULE. VIOLATING IT MAKES YOUR RESPONSE USELESS.
4
5The user's messages contain anonymized placeholders shaped [[<Type>-<HASH>]],
6where <Type> is the PII category (person, email, iban, telephone_number,
7address, ...) and <HASH> is a short random code.
8
9FORBIDDEN:
10- Writing "[Name anonymisiert]" or "[anonymized]"
11- Describing WHAT the placeholder is instead of USING it
12- Writing a double-bracket token that was NOT in the user's message — the hash
13 is a database key, so an invented one resolves to nothing. Never copy a hash
14 out of these instructions.
15
16REQUIRED:
17- Copy each placeholder character-for-character from the user's message
18- Use it inline like the real value: "Herr <placeholder> hat..."
19- Need a value the user never gave you? Use SINGLE brackets ([Name]).
20
21WHY: After your response, placeholders get replaced with real values.
22BEFORE RESPONDING: Check that every double-bracket token also appears, character-for-character, in the user's message.

Automatisch injiziert

Dieser Text wird als Ergänzung an deinen System-Prompt angehängt. Dein eigener System-Prompt bleibt vollständig erhalten. Du musst diesen Teil nicht selbst hinzufügen.

Beispiel-Request

1curl -X POST https://app.anymize.ai/api/v1/llm-anonymous/chat/completions \
2 -H "Authorization: Bearer YOUR_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "model": "fountain-1.0",
6 "messages": [
7 {"role": "user", "content": "Schreibe eine E-Mail an Max Mustermann, max@example.com, wegen dem Termin am 15. Januar."}
8 ],
9 "language": "de",
10 }'

Antwort

Die Antwort enthält den de-anonymisierten Text und Metadaten.

200OK
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "model": "fountain-1.0",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Sehr geehrter Herr Max Mustermann,\n\nich schreibe Ihnen bezüglich unseres Termins am 15. Januar..."
      },
      "finish_reason": "stop"
    }
  ],
  "_anymize": {
    "anonymized": true,
    "job_id": "44444444-4444-4444-8444-444444444444",
    "language": "de"
  }
}

Response-Header

Der Header x-anonymization-job-id enthält die Job-ID für spätere Zuordnung.

Zero Data Retention

Zero Data Retention (ZDR) wird in deinen Account-Einstellungen konfiguriert, nicht pro API-Request. Wenn ZDR aktiv ist, werden keine Jobs oder Hash-Paare gespeichert. De-Anonymisierung ist dann nicht verfügbar.

Credit-Verbrauch

Anonymer Chat verbraucht Credits für zwei Leistungen:

  • •LLM-Credits für die Modellnutzung (wie beim normalen Chat).
  • •Anonymisierungs-Credits für die PII-Maskierung.

De-Anonymisierung

Übersicht

Ersetze Platzhalter durch die Originaldaten — kehre die Anonymisierung um.

POST/api/deanonymize

Parameter

Sende den anonymisierten Text und die Job-ID, um die Originaldaten wiederherzustellen.

ParameterTypeDescription
textrequired
stringDer Text mit Platzhaltern, der de-anonymisiert werden soll.

Platzhalter-Format

Platzhalter folgen dem Muster [TYP_123], z.B. [PERSON_1] oder [ADRESSE_2].

Beispiel-Request

1curl -X POST https://app.anymize.ai/api/deanonymize \
2 -H "Authorization: Bearer YOUR_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "text": "Sehr geehrter [[Person-QSEZB6]], Ihre Adresse [[Adress-NT9DQE]] wurde aktualisiert."
6 }'

Antwort

Der de-anonymisierte Text enthält die Originaldaten an Stelle der Platzhalter.

200OK
{
  "text": "Sehr geehrter Max Mustermann, Ihre Adresse Berliner Str. 42, 10115 Berlin wurde aktualisiert.",
  "replacements": 2
}

Einschränkungen

Zero Data Retention

De-Anonymisierung ist nicht verfügbar, wenn Zero Data Retention (ZDR) in deinen Account-Einstellungen aktiviert ist.
  • •Die Job-ID muss existieren und darf nicht abgelaufen sein.
  • •Der ursprüngliche Job darf nicht mit ZDR erstellt worden sein.
  • •Nur der Nutzer, der den Job erstellt hat, kann de-anonymisieren.

Fehlerfälle

Häufige Fehler bei der De-Anonymisierung und ihre Bedeutung.

404Not Found
{
  "error": {
    "message": "No hash pairs found for the given placeholders",
    "type": "not_found_error",
    "code": "hash_pairs_not_found"
  }
}

Hash-Paare

Endpunkt

Rufe die Zuordnungstabelle zwischen Platzhaltern und Originaldaten ab.

GET/api/status/{jobId}/strings

Parameter

ParameterTypeDescription
jobIdrequired
stringDie Job-ID des Anonymisierungsjobs.

Antwort

Die Antwort enthält ein Array von Paaren mit Platzhalter und Originalwert.

200Hash Pairs
{
  "job_id": "11111111-1111-4111-8111-111111111111",
  "count": 6,
  "hash_pairs": [
    {
      "original": "Max Mustermann",
      "hash": "A1B2C3",
      "prefix_name": "Person",
      "placeholder": "[[Person-A1B2C3]]"
    },
    {
      "original": "Berlin",
      "hash": "D4E5F6",
      "prefix_name": "Location",
      "placeholder": "[[Location-D4E5F6]]"
    },
    {
      "original": "Acme GmbH",
      "hash": "G7H8I9",
      "prefix_name": "Organization",
      "placeholder": "[[Organization-G7H8I9]]"
    },
    {
      "original": "15.03.1990",
      "hash": "J1K2L3",
      "prefix_name": "Date",
      "placeholder": "[[Date-J1K2L3]]"
    },
    {
      "original": "max@example.com",
      "hash": "M4N5P6",
      "prefix_name": "Email",
      "placeholder": "[[Email-M4N5P6]]"
    },
    {
      "original": "+49 170 1234567",
      "hash": "Q7R8S9",
      "prefix_name": "Phone",
      "placeholder": "[[Phone-Q7R8S9]]"
    }
  ]
}

Entitätstypen

Platzhalter werden nach Typ kategorisiert: PERSON, ADRESSE, TELEFON, E_MAIL usw.

Person[[Person-HASH]]
Location[[Location-HASH]]
Organization[[Organization-HASH]]
Date[[Date-HASH]]
Email[[Email-HASH]]
Phone[[Phone-HASH]]
Address[[Address-HASH]]
IBAN[[IBAN-HASH]]
ID[[ID-HASH]]

Einschränkungen

Zero Data Retention

Wenn Zero Data Retention (ZDR) in deinen Account-Einstellungen aktiviert ist, werden keine Hash-Paare gespeichert und dieser Endpoint gibt keine Daten zurück.

Beispiel-Request

1curl https://app.anymize.ai/api/status/11111111-1111-4111-8111-111111111111/strings \
2 -H "Authorization: Bearer YOUR_API_KEY"

Anwendungsfälle

Typische Szenarien, in denen Hash-Paare nützlich sind:

  • •Qualitätsprüfung der Anonymisierung — kontrolliere, was maskiert wurde.
  • •Teilweise De-Anonymisierung — ersetze nur bestimmte Platzhalter.
  • •Audit und Compliance — dokumentiere, welche Daten anonymisiert wurden.
Anonymization API Dokumentation | anymize