Datenmaske
DOCUMENTATION API

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.

URL de base : 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

POST /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.

GET /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
}
GET /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
  }
}
GET /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 ».

PATCH /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.

POST /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

DELETE /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
}
PATCH /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é.

POST /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.

GET /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).

GET /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.

GET /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.