API-Dokumentation
Integrieren Sie die datenschutzorientierte Textanonymisierung von ANOXY mit unserer einfachen REST-API in Ihre Anwendungen.
Schnellstart
API-Schlüssel erhalten
Registrieren Sie sich im Dashboard und erstellen Sie einen API-Schlüssel.
Erste Anfrage senden
Verwenden Sie den Endpunkt /v1/anonymize, um sensible Daten zu schützen.
Originaltext wiederherstellen
Verwenden Sie dieselbe Sitzungs-ID mit /v1/deanonymize, um den Originaltext zurückzubekommen.
Authentifizierung
Alle API-Anfragen erfordern eine Authentifizierung. ANOXY unterstützt zwei Authentifizierungsmethoden:
API-Schlüssel
Fügen Sie Ihren API-Schlüssel im Header X-API-Key ein. Erstellen Sie Schlüssel in Ihrem Dashboard.
X-API-Key: YOUR_API_KEYJWT-Bearer-Token
Für SSO- und OAuth-Integrationen übergeben Sie ein JWT-Token im Authorization-Header. Token werden vom ANOXY-Identitätsanbieter ausgestellt.
Authorization: Bearer eyJhbGciOiJSUzI1NiIs.../v1/anonymizeAnonymisieren Sie Text durch Erkennung und Ersetzung personenbezogener Daten (PII) mit konsistenten Token.
Anfragekörper
textstringerforderlichDer zu anonymisierende Text.
languagestringoptionalSprachcode (z.B. "en", "de"). Standard: "en".
session_idstringoptionalBenutzerdefinierte Sitzungs-ID. Falls nicht angegeben, wird eine generiert.
Beispielanfrage
curl -X POST https://app.anoxy.ai/v1/anonymize \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "John Smith lives at 123 Main St, New York. His email is john@example.com.",
"language": "en",
"session_id": "optional-session-id"
}'Beispielantwort
{
"session_id": "abc-123-def-456",
"anonymized_text": "<PERSON_1> lives at <LOCATION_1>. His email is <EMAIL_1>.",
"entities_found": [
{
"entity_type": "PERSON",
"start": 0,
"end": 10,
"text": "John Smith",
"anonymized_token": "<PERSON_1>"
},
{
"entity_type": "LOCATION",
"start": 20,
"end": 42,
"text": "123 Main St, New York",
"anonymized_token": "<LOCATION_1>"
},
{
"entity_type": "EMAIL_ADDRESS",
"start": 57,
"end": 76,
"text": "john@example.com",
"anonymized_token": "<EMAIL_1>"
}
],
"quota_used": 1250,
"quota_remaining": 8750,
"processing_time_ms": 45.2
}/v1/deanonymizeStellen Sie den Originaltext mithilfe der Sitzungszuordnung wieder her. Erfordert eine gültige Sitzungs-ID einer vorherigen Anonymisierung.
Anfragekörper
textstringerforderlichDer anonymisierte Text zur Wiederherstellung.
session_idstringerforderlichDie Sitzungs-ID aus der Anonymisierungsanfrage.
Beispielanfrage
curl -X POST https://app.anoxy.ai/v1/deanonymize \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "<PERSON_1> lives at <LOCATION_1>. His email is <EMAIL_1>.",
"session_id": "your-session-id"
}'Beispielantwort
{
"original_text": "John Smith lives at 123 Main St, New York. His email is john@example.com.",
"session_id": "abc-123-def-456",
"processing_time_ms": 12.4
}/v1/text/detectPII-Entitäten im Text erkennen, ohne zu anonymisieren. Gibt Entitätspositionen, Typen und Konfidenzwerte zurück, wobei der Originaltext erhalten bleibt.
Anfragekörper
textstringerforderlichDer Text, der nach PII-Entitäten gescannt werden soll.
languagestringoptionalSprachcode (z.B. "en", "de"). Standard: "en".
entity_typesstring[] | stringoptionalBestimmte Entitätstypen filtern. Akzeptiert ein JSON-Array oder eine kommagetrennte Zeichenkette (z. B. "PERSON,EMAIL_ADDRESS").
Beispielanfrage
curl -X POST https://app.anoxy.ai/v1/text/detect \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "John Smith lives at 123 Main St. Email: john@example.com",
"language": "en"
}'Beispielantwort
{
"status": "success",
"data": {
"text": "John Smith lives at 123 Main St. Email: john@example.com",
"entities_found": [
{"entity_type": "PERSON", "start": 0, "end": 10, "text": "John Smith", "score": 0.95},
{"entity_type": "LOCATION", "start": 20, "end": 31, "text": "123 Main St", "score": 0.88},
{"entity_type": "EMAIL_ADDRESS", "start": 40, "end": 56, "text": "john@example.com", "score": 0.99}
],
"entity_summary": {"PERSON": 1, "LOCATION": 1, "EMAIL_ADDRESS": 1}
}
}/v1/documents/anonymizeEine Dokumentdatei zur Anonymisierung hochladen. Unterstützt PDF, DOCX, XLSX, CSV, PPTX, Bilder (OCR) und über 10 weitere Formate. Gibt eine Job-ID zum Herunterladen des Ergebnisses zurück.
Anfragekörper
Content-Type: multipart/form-data
filebinaryerforderlichDie zu anonymisierende Dokumentdatei (max. 50 MB).
modestringoptionalAnonymisierungsmodus: "anonymize" (Standard, irreversibel) oder "pseudonymize" (reversibel mit Sitzung).
languagestringoptionalSprachcode (z.B. "en", "de"). Standard: "en".
Beispielanfrage
curl -X POST https://app.anoxy.ai/v1/documents/anonymize \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@contract.pdf" \
-F "mode=anonymize" \
-F "language=en"Unterstützte Formate
Beispielantwort
{
"status": "success",
"data": {
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"filename": "contract_anonymized.pdf",
"entities_count": 23,
"processing_time_ms": 1250.5,
"download_url": "/v1/history/550e8400.../download"
}
}Antwortformat
Alle API-Antworten folgen einer einheitlichen JSON-Envelope-Struktur. Erfolgsantworten umschließen Daten im "data"-Feld, Fehlerantworten liefern ein strukturiertes Fehlerobjekt.
Erfolg
{
"status": "success",
"data": { ... },
"meta": {
"version": "4.10.10",
"processing_time_ms": 45.2
}
}Fehler
{
"status": "error",
"error": {
"type": "validation_error",
"message": "Text is required."
}
}Endpunktkatalog
Vollständige Liste der verfügbaren API-Endpunkte.
| Methode | Endpunkt | Beschreibung | Auth |
|---|---|---|---|
| POST | /v1/anonymize | Anonymize text, replacing PII with tokens | Required |
| POST | /v1/deanonymize | Restore original text using session mapping | Required |
| POST | /v1/text/detect | Detect PII entities without anonymizing | Required |
| POST | /v1/documents/anonymize | Upload and anonymize a document file | Required |
| POST | /v1/text/anonymize-batch | Anonymize up to 20 text items in one request | Required |
| GET | /v1/countries | List supported countries and entity types | None |
| GET | /v1/history | List anonymization history (paginated, sortable) | Required |
| GET | /v1/history/{job_id} | Get job detail with entity breakdown | Required |
| GET | /v1/history/{job_id}/download | Download anonymized result file | Required |
| POST | /v1/history/batch-delete | Batch delete jobs | Required |
| GET | /v1/quota | Check current quota usage and limits | Required |
| GET | /v1/api-keys | List your API keys | Required |
| POST | /v1/api-keys | Create a new API key | Required |
| DELETE | /v1/api-keys/{id} | Revoke an API key | Required |
| GET | /v1/billing/subscription | Get current subscription details | Required |
| GET | /health | Health check endpoint | None |
Fehlercodes
400 Bad RequestUngültige Anfrageparameter oder fehlerhaftes JSON.
401 UnauthorizedFehlender oder ungültiger API-Schlüssel.
402 Payment RequiredKontingent überschritten. Upgraden Sie Ihren Tarif oder warten Sie auf die Zurücksetzung.
404 Not FoundSitzung nicht gefunden oder abgelaufen (für Deanonymisierung).
429 Too Many RequestsRatelimit überschritten. Prüfen Sie den X-RateLimit-Reset-Header für den nächsten Versuch.
500 Internal Server ErrorServerfehler. Bitte versuchen Sie es erneut oder kontaktieren Sie den Support.
Ratelimits
Ratelimits variieren je nach Tarif:
- Free: 10 requests/minute, 1,000 tokens/month
- Pro: 100 requests/minute, 100,000 tokens/month
- Team: 1,000 requests/minute, 1,000,000 tokens/month
- Enterprise: 1,000 requests/minute, unlimited tokens
Ratelimit-Header
Jede authentifizierte Antwort enthält Ratelimit-Header:
X-RateLimit-LimitMaximale Anzahl erlaubter Anfragen pro Minute für Ihren Tarif.
X-RateLimit-RemainingVerbleibende Anfragen im aktuellen Zeitfenster.
X-RateLimit-ResetUnix-Zeitstempel (Sekunden), wann das Ratelimit-Zeitfenster zurückgesetzt wird.
HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1707523260Hilfe benötigt?
Unser Team unterstützt Sie bei Ihrer Integration.