Datenmaske REST API
Accès programmatique à la rédaction PDF. Téléchargez des documents, détectez les données personnelles, appliquez la rédaction et exportez — le tout via une API REST.
https://datenmaske.de/api/v1
Spécification lisible par machine (OpenAPI 3.0.3) : openapi.json
Authentification
Toutes les requêtes API nécessitent une clé API via l'en-tête Authorization :
Authorization: Bearer dm_live_ihr_api_schluessel_hier
Les clés API peuvent être créées dans les Paramètres. 5 clés actives maximum par compte. Disponibles à partir de l'offre Solo (29 €/mois).
Limitation de débit
| Offre | Requêtes/min | Documents/mois | Pages max. |
|---|---|---|---|
| Starter | Aucun accès API | — | — |
| Solo | 15 | 150 | Illimité |
| Professional | 30 | 150 | Illimité |
| Business | 120 | Illimité | Illimité |
En cas de dépassement : HTTP 429 avec l'en-tête Retry-After. Toutes les réponses contiennent les en-têtes X-RateLimit-*.
Réponses d'erreur
| Statut | Signification |
|---|---|
| 400 | Erreur de validation — entrée invalide |
| 401 | Non autorisé — clé API manquante ou invalide |
| 403 | Interdit — l'offre ne prend pas en charge cette fonctionnalité |
| 404 | Ressource introuvable |
| 429 | Limite de débit dépassée ou quota mensuel épuisé |
| 500 | Erreur serveur |
{
"error": "Description de l'erreur",
"details": ["Erreur de champ 1", "Erreur de champ 2"] // facultatif sur 400
}
Points de terminaison
/api/v1/documents Télécharger et traiter un PDF. Le document est analysé, les données personnelles sont détectées et des suggestions de rédaction sont générées.
Auth: Clé API (jeton Bearer)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| file | file (multipart/form-data) | Ja | Fichier PDF (50 Mo max.) |
Response
{
"id": "doc_abc123",
"filename": "vertrag.pdf",
"pageCount": 5,
"suggestionsCount": 12,
"status": "review"
} Compte sur le quota mensuel de documents. Temps de traitement : ~2-10 secondes selon la taille du document.
/api/v1/documents Lister tous les documents de l'utilisateur.
Auth: Clé API (jeton Bearer)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| page | integer | Nein | Numéro de page (par défaut : 1) |
| limit | integer | Nein | Résultats par page (par défaut : 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} Récupérer le statut et le résumé d'un document, y compris le nombre de suggestions de rédaction.
Auth: Clé API (jeton Bearer)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | ID du document |
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 Récupérer toutes les suggestions de données personnelles détectées pour un document.
Auth: Clé API (jeton Bearer)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | ID du document (chemin) |
| status | string | Nein | Filtrer par statut : suggested, accepted, rejected |
| page | integer | Nein | Numéro de page (par défaut : 1) |
| limit | integer | Nein | Résultats par page (par défaut : 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
} Valeurs de sensitivityType : name, address, phone, email, birth_date, iban, customer_number, insurance_number, ssn, credit_card, other. Source : « regex », « ner » ou « custom ».
/api/v1/documents/{id}/suggestions/{suggestionId} Accepter ou refuser une suggestion de rédaction.
Auth: Clé API (jeton Bearer)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | ID du document |
| suggestionId | string | Ja | ID de suggestion |
Request Body
{
"status": "accepted"
} Response
{
"id": "sug_xyz789",
"status": "accepted"
} Statut : « accepted » ou « rejected ». Seules les suggestions avec le statut « suggested » peuvent être modifiées.
/api/v1/documents/{id}/redact Appliquer la rédaction et exporter le PDF rédigé. Seules les suggestions acceptées sont rédigées.
Auth: Clé API (jeton Bearer)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | ID du document |
Request Body
{
"autoAcceptAll": false
} Si autoAcceptAll : true, toutes les suggestions ouvertes sont automatiquement acceptées avant la rédaction. La réponse est un fichier PDF (binaire), pas JSON.
Réponse de succès : Content-Type: application/pdf avec les en-têtes X-Redaction-Count, X-Verification-Passed
/api/v1/documents/{id} Supprimer un document et toutes les données associées.
Auth: Clé API (jeton Bearer)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | ID du document |
Response
{
"success": true
} /api/v1/documents/{id}/suggestions Accepter ou refuser plusieurs suggestions de rédaction à la fois.
Auth: Clé API (jeton Bearer)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | ID du document |
Request Body
[
{ "id": "sug_xyz789", "status": "accepted" },
{ "id": "sug_abc456", "status": "rejected" }
] Response
{
"updated": 2
} Envoyez un tableau JSON avec l'ID de suggestion et le statut souhaité.
/api/v1/documents/{id}/report Récupérer un rapport de rédaction JSON pour un document avec résumé et répartition par type.
Auth: Clé API (jeton Bearer)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | string | Ja | ID du document |
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
} Inclut la somme de contrôle SHA-256 du document original et le statut de vérification.
/api/v1/account Récupérer les informations du compte, l'offre actuelle et l'utilisation mensuelle.
Auth: Clé API (jeton Bearer)
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 de -1 signifie illimité (offre Business).
/api/v1/audit Récupérer les journaux d'audit pour toutes les actions API. Uniquement disponible avec l'offre Business.
Auth: Clé API (jeton Bearer — offre Business requise)
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| limit | integer | Nein | Nombre d'entrées (par défaut : 20, max. : 100) |
| documentId | string | Nein | Filtrer par ID de document |
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"
}
]
} Renvoie 403 pour les offres Professional et Starter.
/api/v1 Récupérer le statut de l'API et les points de terminaison disponibles.
Auth: Clé API (jeton Bearer)
Response
{
"status": "ok",
"service": "datenmaske-api",
"version": "v1",
"endpoints": { ... }
} Exemple de workflow
# 1. Télécharger le PDF
curl -X POST https://datenmaske.de/api/v1/documents \
-H "Authorization: Bearer dm_live_ihr_schluessel" \
-F "file=@vertrag.pdf"
# Réponse : { "id": "doc_abc123", "pageCount": 5, "suggestionsCount": 12, "status": "review" }
# 2. Afficher les données personnelles détectées
curl https://datenmaske.de/api/v1/documents/doc_abc123/suggestions \
-H "Authorization: Bearer dm_live_ihr_schluessel"
# 3. Accepter/refuser les suggestions
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. Appliquer la rédaction et exporter le PDF
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. Supprimer le document
curl -X DELETE https://datenmaske.de/api/v1/documents/doc_abc123 \
-H "Authorization: Bearer dm_live_ihr_schluessel"
Commencer avec l'API
Créez une clé API dans les Paramètres et commencez la rédaction PDF programmatique. À partir de 29 €/mois.