Datenmaske REST API
Programmatischer Zugriff auf die PDF-Schwärzung. Dokumente hochladen, PII erkennen, Schwärzung anwenden und exportieren — alles über eine REST API.
https://datenmaske.de/api/v1
Maschinenlesbare Spezifikation (OpenAPI 3.0.3): openapi.json
Authentifizierung
Alle API-Anfragen erfordern einen API-Schlüssel über den Authorization Header:
Authorization: Bearer dm_live_ihr_api_schluessel_hier
API-Schlüssel können in den Einstellungen erstellt werden. Max. 5 aktive Schlüssel pro Konto. Verfügbare ab dem Solo-Tarif (29€/Monat).
Rate Limiting
| Tarif | Anfragen/Min | Dokumente/Monat | Max. Seiten |
|---|---|---|---|
| Starter | Kein API-Zugang | — | — |
| Solo | 15 | 150 | Unbegrenzt |
| Professional | 30 | 150 | Unbegrenzt |
| Business | 120 | Unbegrenzt | Unbegrenzt |
Bei Überschreitung: HTTP 429 mit Retry-After Header. Alle Antworten enthalten X-RateLimit-* Header.
Fehlerantworten
| Status | Bedeutung |
|---|---|
| 400 | Validierungsfehler — ungültige Eingabe |
| 401 | Nicht autorisiert — API-Schlüssel fehlt oder ungültig |
| 403 | Verboten — Tarif unterstützt diese Funktion nicht |
| 404 | Ressource nicht gefunden |
| 429 | Rate-Limit überschritten oder Monatskontingent erschöpft |
| 500 | Serverfehler |
{
"error": "Beschreibung des Fehlers",
"details": ["Feldfehler 1", "Feldfehler 2"] // optional bei 400
}
Endpunkte
/api/v1/documents PDF hochladen und verarbeiten. Das Dokument wird analysiert, PII erkannt und Schwärzungsvorschläge erstellt.
Auth: API Key (Bearer Token)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| file | file (multipart/form-data) | Ja | PDF-Datei (max. 50 MB) |
Response
{
"id": "doc_abc123",
"filename": "vertrag.pdf",
"pageCount": 5,
"suggestionsCount": 12,
"status": "review"
} Zählt gegen das monatliche Dokumentkontingent. Verarbeitungszeit: ~2-10 Sekunden je nach Dokumentgröße.
/api/v1/documents Alle Dokumente des Benutzers auflisten.
Auth: API Key (Bearer Token)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| page | integer | Nein | Seitennummer (Standard: 1) |
| limit | integer | Nein | Ergebnisse pro Seite (Standard: 20, max: 100) |
Response
{
"documents": [
{
"id": "doc_abc123",
"originalName": "vertrag.pdf",
"pageCount": 5,
"status": "review",
"createdAt": "2026-05-13T18:30:00Z"
}
],
"total": 42,
"page": 1,
"limit": 20
} /api/v1/documents/{id} Status und Zusammenfassung eines Dokuments abrufen, inklusive Anzahl der Schwärzungsvorschläge.
Auth: API Key (Bearer Token)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | Dokument-ID |
Response
{
"id": "doc_abc123",
"originalName": "vertrag.pdf",
"pageCount": 5,
"status": "review",
"createdAt": "2026-05-13T18:30:00Z",
"suggestions": {
"total": 12,
"accepted": 8,
"rejected": 2,
"pending": 2
}
} /api/v1/documents/{id}/suggestions Alle erkannten PII-Vorschläge eines Dokuments abrufen.
Auth: API Key (Bearer Token)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | Dokument-ID (Pfad) |
| status | string | Nein | Filter nach Status: suggested, accepted, rejected |
| page | integer | Nein | Seitennummer (Standard: 1) |
| limit | integer | Nein | Ergebnisse pro Seite (Standard: 50, max: 200) |
Response
{
"suggestions": [
{
"id": "sug_xyz789",
"documentId": "doc_abc123",
"sensitivityType": "name",
"detectedText": "Max Mustermann",
"confidence": 95,
"pageNumber": 1,
"bboxX": 72,
"bboxY": 120,
"bboxWidth": 98,
"bboxHeight": 12,
"status": "suggested",
"source": "regex"
}
],
"total": 12,
"page": 1,
"limit": 50
} sensitivityType-Werte: name, address, phone, email, birth_date, iban, customer_number, insurance_number, ssn, credit_card, other. Quelle: "regex", "ner" oder "custom".
/api/v1/documents/{id}/suggestions/{suggestionId} Einen Schwärzungsvorschlag akzeptieren oder ablehnen.
Auth: API Key (Bearer Token)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | Dokument-ID |
| suggestionId | string | Ja | Vorschlags-ID |
Request Body
{
"status": "accepted"
} Response
{
"id": "sug_xyz789",
"status": "accepted"
} Status: "accepted" oder "rejected". Nur Vorschläge mit Status "suggested" können geändert werden.
/api/v1/documents/{id}/redact Schwärzung anwenden und das redaktierte PDF exportieren. Nur akzeptierte Vorschläge werden geschwärzt.
Auth: API Key (Bearer Token)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | Dokument-ID |
Request Body
{
"autoAcceptAll": false
} Wenn autoAcceptAll: true, werden alle offenen Vorschläge automatisch akzeptiert bevor geschwärzt wird. Antwort ist eine PDF-Datei (binary), nicht JSON.
Erfolgs-Response: Content-Type: application/pdf mit Headern X-Redaction-Count, X-Verification-Passed
/api/v1/documents/{id} Dokument und alle zugehörigen Daten löschen.
Auth: API Key (Bearer Token)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | Dokument-ID |
Response
{
"success": true
} /api/v1/documents/{id}/suggestions Mehrere Schwärzungsvorschläge gleichzeitig akzeptieren oder ablehnen.
Auth: API Key (Bearer Token)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | Dokument-ID |
Request Body
[
{ "id": "sug_xyz789", "status": "accepted" },
{ "id": "sug_abc456", "status": "rejected" }
] Response
{
"updated": 2
} Senden Sie ein JSON-Array mit Vorschlags-ID und gewünschtem Status.
/api/v1/documents/{id}/report JSON-Schwärzungsbericht eines Dokuments abrufen mit Zusammenfassung und Typ-Aufschlüsselung.
Auth: API Key (Bearer Token)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | Dokument-ID |
Response
{
"document": {
"id": "doc_abc123",
"originalName": "vertrag.pdf",
"pageCount": 5,
"status": "review",
"fileSize": 245000,
"checksumSha256": "abc123...",
"createdAt": "2026-05-13T18:30:00Z"
},
"redactionSummary": {
"total": 12,
"accepted": 8,
"rejected": 2,
"pending": 2,
"manual": 0
},
"typeBreakdown": {
"name": 4,
"email": 3,
"iban": 2,
"address": 3
},
"verificationPassed": true
} Enthält SHA-256 Prüfsumme des Originaldokuments und Verifizierungsstatus.
/api/v1/account Kontoinformationen, aktuellen Tarif und monatliche Nutzung abrufen.
Auth: API Key (Bearer Token)
Response
{
"plan": {
"name": "Professional",
"key": "professional",
"features": {
"enableOcr": true,
"enableCustomPatterns": true,
"maxPages": "unlimited",
"docsPerMonth": 150,
"enableApiAccess": true,
"apiRateLimit": 30
}
},
"usage": {
"monthlyUsed": 23,
"monthlyLimit": 150,
"periodStart": "2026-05-01T00:00:00Z",
"periodEnd": "2026-06-01T00:00:00Z"
}
} monthlyLimit von -1 bedeutet unbegrenzt (Business-Tarif).
/api/v1/audit Audit-Protokolle für alle API-Aktionen abrufen. Nur im Business-Tarif verfügbar.
Auth: API Key (Bearer Token — Business-Tarif erforderlich)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| limit | integer | Nein | Anzahl der Einträge (Standard: 20, max: 100) |
| documentId | string | Nein | Filter nach Dokument-ID |
Response
{
"logs": [
{
"id": "log_abc123",
"documentId": "doc_xyz",
"action": "api.document.upload",
"details": { "filename": "vertrag.pdf", "pageCount": 5 },
"ipAddress": "192.168.1.1",
"createdAt": "2026-05-13T18:30:00Z"
}
]
} Gibt 403 zurück für Professional- und Starter-Tarife.
/api/v1 API-Status und verfügbare Endpunkte abrufen.
Auth: API Key (Bearer Token)
Response
{
"status": "ok",
"service": "datenmaske-api",
"version": "v1",
"endpoints": { ... }
} Beispiel-Workflow
# 1. PDF hochladen
curl -X POST https://datenmaske.de/api/v1/documents \
-H "Authorization: Bearer dm_live_ihr_schluessel" \
-F "file=@vertrag.pdf"
# Response: { "id": "doc_abc123", "pageCount": 5, "suggestionsCount": 12, "status": "review" }
# 2. Erkannte PII anzeigen
curl https://datenmaske.de/api/v1/documents/doc_abc123/suggestions \
-H "Authorization: Bearer dm_live_ihr_schluessel"
# 3. Vorschläge akzeptieren/ablehnen
curl -X PATCH https://datenmaske.de/api/v1/documents/doc_abc123/suggestions/sug_xyz \
-H "Authorization: Bearer dm_live_ihr_schluessel" \
-H "Content-Type: application/json" \
-d '{"status": "accepted"}'
# 4. Schwärzung anwenden und PDF exportieren
curl -X POST https://datenmaske.de/api/v1/documents/doc_abc123/redact \
-H "Authorization: Bearer dm_live_ihr_schluessel" \
-H "Content-Type: application/json" \
-d '{"autoAcceptAll": true}' \
-o redacted_vertrag.pdf
# 5. Dokument löschen
curl -X DELETE https://datenmaske.de/api/v1/documents/doc_abc123 \
-H "Authorization: Bearer dm_live_ihr_schluessel"
API-Zugang starten
Erstelle einen API-Schlüssel in den Einstellungen und starte mit der programmatischen PDF-Schwärzung. Ab 29€/Monat.