Kostenlos testen
API v1 · Stand September 2026

API-Dokumentation

Der Pseudonymisierer bietet drei gleichwertige Wege: eine REST-API, einen Proxy im OpenAI- und Anthropic-Format sowie einen MCP-Server. Alle nutzen dieselben Sitzungen und Zuordnungen. Die vollständige Schema-Beschreibung liefert Swagger bzw. ReDoc, das rohe Schema liegt unter /openapi.json.

Grundprinzip

Sie schicken Text (oder JSON/Tabellen) an den Pseudonymisierer. Er erkennt personenbezogene Daten, ersetzt sie durch konsistente Ersatzwerte und legt die Zuordnung verschlüsselt in einer Sitzung ab. Den pseudonymisierten Text geben Sie an ein Cloud-Modell. Dessen Antwort schicken Sie mit derselben Sitzungs-ID zurück; der Personifizierer setzt die Originale wieder ein – auch bei Beugungen, veränderter Schreibweise oder Platzhalter-Varianten.

Pseudonyme sind deterministisch: dasselbe Original ergibt für Ihr Konto immer dasselbe Pseudonym, auch über Sitzungen hinweg. Mehrstufige Agenten bleiben deshalb konsistent, ohne dass Sie Sitzungs-IDs verwalten müssen.

Authentifizierung

Jede Anfrage trägt Ihren Schlüssel als Header X-API-Key: psk_live_… oder Authorization: Bearer psk_live_…. Schlüssel erhalten Sie über die Registrierung (Testzugang) oder im Konto; dort lässt er sich jederzeit erneuern. Der Schlüssel wird serverseitig nur als Hash gespeichert.

EndpunktZweck
POST /api/registrierenTestzugang anlegen (Name, E-Mail, datenschutz: true) – Schlüssel wird einmalig zurückgegeben
GET /api/kontoTarif, Gültigkeit, Nutzung im laufenden Monat, Anzahl Sitzungen
POST /api/konto/schluesselNeuen Schlüssel erzeugen (alter sofort ungültig)
GET /api/tarifeÖffentliche Tarifübersicht

Schnellstart

curl https://pseudonymisierer.de/api/pseudonymisieren \
  -H "X-API-Key: psk_live_…" -H "content-type: application/json" \
  -d '{"text": "Frau Anna Schmidt (anna@schmidt-bau.de) bittet um ein Angebot."}'

{"text": "Frau Marliese Koch (marliese@koch-technik.de) bittet um ein Angebot.",
 "sitzung": "s_acGvuqjpmHd9amul3oyp7g", "anzahl": 2,
 "je_typ": {"PERSON": 1, "EMAIL_ADDRESS": 1}, "warnungen": [], "dauer_ms": 637,
 "treffer": [{"typ": "PERSON", "start": 0, "ende": 17, "pseudonym": "Frau Marliese Koch", "score": 0.95, "quelle": "GLiNERRecognizer"}, …]}

curl https://pseudonymisierer.de/api/personifizieren \
  -H "X-API-Key: psk_live_…" -H "content-type: application/json" \
  -d '{"text": "Angebot an Frau Koch gesendet.", "sitzung": "s_acGvuqjpmHd9amul3oyp7g"}'

{"text": "Angebot an Frau Schmidt gesendet.", "ersetzt": 1, "details": [{"pseudonym": "Koch", "original": "Schmidt", "anzahl": 1, "methode": "exakt"}], "nicht_gefunden": […]}

REST-Endpunkte

Methode & PfadAnfrage (JSON)Antwort
POST /api/pseudonymisierentext (Pflicht), sitzung, modus (realistisch|platzhalter), entitaeten (Liste), erlaubnisliste, sperrliste ("Begriff" oder "Begriff=TYP"), llm (bool), schnell (bool), mit_originalen (bool)text, sitzung, anzahl, je_typ, treffer[] (Typ, Position, Pseudonym, Score, Quelle), warnungen, dauer_ms
POST /api/personifizierentext, sitzung (Pflicht), fuzzy (bool, Standard true)text, ersetzt, details[], nicht_gefunden[], dauer_ms
POST /api/tabelle/pseudonymisierenzeilen (Liste von Objekten), spalten_typen z. B. {"Name":"PERSON","Betrag":"KEEP","Notiz":"TEXT"}, sitzung, moduszeilen, sitzung, je_typ, warnungen
POST /api/tabelle/personifizierenzeilen, sitzung, fuzzyzeilen, ersetzt
POST /api/struktur/pseudonymisierendaten (beliebiges JSON), sitzung, modus – alle Zeichenketten werden geprüft, Zahlen und Schlüssel bleibendaten, sitzung, warnungen
POST /api/struktur/personifizierendaten, sitzung, fuzzydaten, ersetzt
GET /api/sitzungenListe Ihrer Sitzungen mit Statistik (ohne Originale)
GET /api/sitzungen/{id}Query mit_originalen=true liefert die ZuordnungStatistik bzw. Zuordnungstabelle
DELETE /api/sitzungen/{id}{"geloescht": true}
GET /gesundStatus, Version, geladene Modelle (ohne Schlüssel)

Spaltentypen für Tabellen: TEXT (Freitext mit Erkennung, Standard), KEEP (unverändert), PERSON, ORGANIZATION, ADDRESS, LOCATION, EMAIL_ADDRESS, PHONE_NUMBER, IBAN_CODE, DATE_OF_BIRTH, ID_NUMBER. Typisierte Spalten werden ohne Erkennung direkt ersetzt – schneller und treffsicherer.

LLM-Proxy (OpenAI- und Anthropic-Format)

Der Proxy pseudonymisiert alle Nachrichten einer Anfrage, leitet sie an den Anbieter weiter und personifiziert die Antwort – Text ebenso wie Argumente von Werkzeugaufrufen (Function Calling / tool_use). Ihre Anwendung braucht dafür keine Änderung außer der Basis-URL.

FormatBasis-URLWeitergeleitete Pfade
OpenAI Chat Completionshttps://pseudonymisierer.de/v1POST /v1/chat/completions, GET /v1/models
Anthropic Messageshttps://pseudonymisierer.dePOST /v1/messages, GET /v1/models/{id}

Header

HeaderBedeutung
Authorization: Bearer psk_… oder x-api-keyIhr Pseudonymisierer-Schlüssel (so, wie das SDK den api_key setzt)
X-Pseudo-Cloud-KeyIhr Schlüssel beim Cloud-Anbieter (OpenAI, Anthropic …). Pflicht – der Pseudonymisierer stellt keine Modellkontingente bereit und speichert diesen Schlüssel nicht. Fehlt er: 402.
X-Pseudo-ZielAnderer Upstream, z. B. https://openrouter.ai/api oder ein Azure-Endpunkt (Standard: api.openai.com / api.anthropic.com)
X-Pseudo-SitzungSitzung ausdrücklich wiederverwenden (z. B. je Unterhaltung oder Agentenaufgabe); sonst pro Anfrage eine neue, Konsistenz über deterministische Pseudonyme. Die verwendete Sitzung steht in der Antwort im gleichnamigen Header.
X-Pseudo-Modusauto (Standard): System-Prompt und Nutzertext voll analysieren, Werkzeugergebnisse und Modellantworten im Schnellmodus. voll: überall volle Erkennung. schnell: überall nur Muster und Wörterbuch.
X-Pseudo-Warnung (Antwort)Hinweise, z. B. wenn die LLM-Stufe nicht erreichbar war
# Python, OpenAI-SDK
from openai import OpenAI
client = OpenAI(base_url="https://pseudonymisierer.de/v1", api_key="psk_live_…",
                default_headers={"X-Pseudo-Cloud-Key": "sk-…", "X-Pseudo-Sitzung": "auftrag-4711"})
r = client.chat.completions.create(model="gpt-5", messages=[{"role": "user", "content": mail_text}], tools=werkzeuge)

# Node, Anthropic-SDK
const client = new Anthropic({ baseURL: "https://pseudonymisierer.de", apiKey: "psk_live_…",
  defaultHeaders: { "X-Pseudo-Cloud-Key": "sk-ant-…" } });

Streaming: Der Proxy puffert die Antwort und sendet sie am Ende als reguläre Server-Sent-Events (ein Chunk plus Abschluss), damit Pseudonyme nicht über Chunk-Grenzen zerfallen. Für Chat-Oberflächen mit Live-Tippen ist das spürbar; für Agenten ist es unerheblich.

MCP-Server

Streamable-HTTP-Endpunkt: https://pseudonymisierer.de/mcp-server/mcp mit Header X-API-Key.

claude mcp add --transport http pseudonymisierer https://pseudonymisierer.de/mcp-server/mcp --header "X-API-Key: psk_live_…"

# .mcp.json / Claude Desktop
{ "mcpServers": { "pseudonymisierer": { "type": "http", "url": "https://pseudonymisierer.de/mcp-server/mcp",
                                        "headers": { "X-API-Key": "psk_live_…" } } } }
WerkzeugZweck
pseudonymisieren(text, sitzung?, modus?, erlaubnisliste?, sperrliste?, llm?, schnell?)Text → Pseudonyme (Treffer ohne Originale)
personifizieren(text, sitzung, fuzzy?)Pseudonyme → Originale
pseudonymisieren_datei(pfad, …) / personifizieren_in_datei(text, sitzung, zielpfad)Dateibasiert – für Cloud-Agenten, die den Klartext nie sehen sollen (nur bei eigener Installation sinnvoll)
pseudonymisieren_tabelle, personifizieren_tabelleListen von Datensätzen
sitzung_info, sitzungen_liste, sitzung_loeschenVerwaltung

Wichtig: Ruft ein Cloud-Modell pseudonymisieren mit Klartext auf, hat es die Daten bereits gesehen. Das Werkzeug gehört in lokale Orchestrierung (eigene Skripte, n8n) oder vor das Modell (Proxy).

Entitätstypen

TypBeispielErsatz (realistisch)
PERSONHerrn Dr. Thomas Müller · Müller · T. MüllerAnrede und Titel bleiben, Vor- und Nachname konsistent ersetzt, Geschlecht passend
ORGANIZATIONMüller & Söhne GmbHRechtsform bleibt; zugehörige Domain wird abgeleitet
ADDRESSHauptstraße 12, 80331 MünchenStraße, Hausnummer, PLZ (erste Ziffer optional erhalten), Ort
LOCATION (optional)Münchenanderer Ort; standardmäßig aus, Orte aus Adressen werden immer ersetzt
EMAIL_ADDRESSlisa.weber@mueller-soehne.deaus Ersatznamen abgeleitet, Domain der Ersatzfirma, Webmail-Domains bleiben
PHONE_NUMBER+49 171 2345678Vorwahl und Format bleiben
IBAN_CODE, CREDIT_CARDDE89 3704 0044 …gültige Prüfsumme, gleiches Land
DATE_OF_BIRTH03.05.1978konsistent verschoben, Format bleibt; andere Daten bleiben unverändert
ID_NUMBERKundennummer KD-2024-0815gleiche Form (Ziffern/Buchstaben)
DE_TAX_ID, DE_TAX_NUMBER, DE_VAT_ID, DE_ID_CARD, DE_PASSPORT, DE_SOCIAL_SECURITY, DE_HEALTH_INSURANCE, DE_HANDELSREGISTERSteuer-ID, USt-IdNr., Ausweis, Pass, SV-Nr., KVNR, HRBgleiche Form
URL, IP_ADDRESS (optional)https://www.mueller-soehne.de/…Domain bekannter Firmen wird ersetzt; standardmäßig aus, damit Portal-Adressen funktional bleiben

Modi & Optionen

OptionWirkung
modus: realistisch (Standard)Plausible Ersatzwerte – das Modell arbeitet mit natürlichem Text (Formulare, Anreden, Feldprüfungen).
modus: platzhalter[[PERSON_1]], [[FIRMA_1]], [[ADRESSE_1]], [[EMAIL_1]] … – strikt, Rückabbildung versteht auch [PERSON_1] oder „Person 1“.
schnell: trueNur Muster-Erkenner plus Wörterbuch der Sitzung (Millisekunden). Neue Namen werden nicht erkannt – Sitzung vorher mit dem Datensatz befüllen.
llm: trueZweite Erkennungsstufe mit lokalem Sprachmodell (ab Tarif Business). Fällt sie aus, arbeitet der Dienst weiter und meldet eine Warnung.
erlaubnislisteBegriffe, die nie ersetzt werden (eigene Firma, Produktnamen).
sperrlisteBegriffe, die immer ersetzt werden: "Projekt Phoenix=ORGANIZATION".
entitaetenEigene Auswahl der Typen, z. B. zusätzlich LOCATION oder URL.
fuzzy (Personifizieren)Unscharfe Rückabbildung für leicht veränderte Schreibweisen (Standard an; für Tabellen aus).

Sitzungen

Eine Sitzung ist die Zuordnungstabelle Original ⇄ Pseudonym samt Teilstücken (Nachname, Vorname, Firmenkern, Straße, Ort, Domain). Sie wird mit einem Schlüssel verschlüsselt, der aus dem Server-Geheimnis abgeleitet ist, läuft nach 7 Tagen ohne Nutzung ab und kann jederzeit gelöscht werden. Sitzungen sind strikt Ihrem Konto zugeordnet. Empfehlung: eine Sitzung je Vorgang (E-Mail-Thread, Agentenaufgabe, Datei), die ID bei sich speichern und nach Abschluss löschen.

Fehler & Limits

StatusBedeutung
401Schlüssel fehlt, ist falsch oder gesperrt
402Testzeitraum abgelaufen bzw. Cloud-Schlüssel im Proxy fehlt
404Sitzung unbekannt, abgelaufen oder gehört einem anderen Konto
422Ungültige Anfrage (z. B. fehlender Text, unbekannter Tarif)
429Taktlimit je Minute oder Monatskontingent erreicht – Antwort enthält Zahlen und Limit
TarifZeichen / MonatAufrufe / MinuteStufe B
Test (14 Tage)100.00020
Start1 Mio.60
Business10 Mio.300ja
Agentur50 Mio.900ja

Gezählt werden die übermittelten Zeichen je Anfrage (Content-Length). Die Nutzung sehen Sie live unter GET /api/konto.

Datenschutz & Aufbewahrung

  • Erkennung, Ersetzung und Zuordnung laufen vollständig auf unserem Server in Nürnberg; kein Text erreicht ein Cloud-Modell im Klartext.
  • Inhalte werden nicht protokolliert. Das Audit-Protokoll enthält Zeitpunkt, Sitzungs-ID und Trefferzahlen je Typ.
  • Sitzungen: verschlüsselt, 7 Tage, jederzeit löschbar. Konto: Name, E-Mail, Tarif, Schlüssel-Hash, Nutzungszähler.
  • Pseudonymisierung ist keine Anonymisierung (Art. 4 Nr. 5 DSGVO) – gegenüber dem Cloud-Anbieter sind die Daten faktisch anonym, bei uns bleibt die Zuordnung für die Dauer der Sitzung bestehen. Auftragsverarbeitungsvertrag auf Anfrage.

Selbst betreiben

Der Dienst läuft als Docker-Container auf Linux-Servern oder Macs (Apple Silicon) im eigenen Netz; die Modelle (GLiNER, spaCy, optional Ollama) werden lokal geladen, Zuordnungen verlassen nie das Haus. Umgebungsvariablen tragen das Präfix PSEUDO_; die Werkzeuge pseudonymisieren_datei/personifizieren_in_datei und serverseitige Cloud-Schlüssel stehen dann ebenfalls zur Verfügung. Lizenz, Einrichtung und Wartung: info@alpha-digital.de.