Datenmaske
DOCUMENTACIÓN DE LA API

Datenmaske REST API

Acceso programático a la redacción de PDF. Suba documentos, detecte datos personales, aplique la redacción y exporte — todo a través de una API REST.

URL base: https://datenmaske.de/api/v1

Especificación legible por máquina (OpenAPI 3.0.3): openapi.json

Autenticación

Todas las solicitudes a la API requieren una clave de API mediante la cabecera Authorization:

Authorization: Bearer dm_live_ihr_api_schluessel_hier
                

Las claves de API pueden crearse en los Ajustes. Máx. 5 claves activas por cuenta. Disponibles a partir del plan Solo (29 €/mes).

Límite de frecuencia

Plan Solicitudes/min Documentos/mes Páginas máx.
Starter Sin acceso a la API
Solo 15 150 Ilimitado
Professional 30 150 Ilimitado
Business 120 Ilimitado Ilimitado

Al superarse: HTTP 429 con la cabecera Retry-After. Todas las respuestas incluyen las cabeceras X-RateLimit-*.

Respuestas de error

Estado Significado
400 Error de validación — entrada no válida
401 No autorizado — falta la clave de API o no es válida
403 Prohibido — el plan no admite esta función
404 Recurso no encontrado
429 Límite de frecuencia superado o cuota mensual agotada
500 Error del servidor
{
  "error": "Descripción del error",
  "details": ["Error de campo 1", "Error de campo 2"]  // opcional en 400
}
              

Endpoints

POST /api/v1/documents

Subir y procesar un PDF. El documento se analiza, se detectan los datos personales y se generan sugerencias de redacción.

Auth: Clave de API (token Bearer)

Parameter

Name Typ Pflicht Beschreibung
file file (multipart/form-data) Ja Archivo PDF (máx. 50 MB)

Response

{
  "id": "doc_abc123",
  "filename": "vertrag.pdf",
  "pageCount": 5,
  "suggestionsCount": 12,
  "status": "review"
}

Cuenta contra la cuota mensual de documentos. Tiempo de procesamiento: ~2-10 segundos según el tamaño del documento.

GET /api/v1/documents

Listar todos los documentos del usuario.

Auth: Clave de API (token Bearer)

Parameter

Name Typ Pflicht Beschreibung
page integer Nein Número de página (predeterminado: 1)
limit integer Nein Resultados por página (predeterminado: 20, máx: 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}

Obtener el estado y el resumen de un documento, incluido el número de sugerencias de redacción.

Auth: Clave de API (token Bearer)

Parameter

Name Typ Pflicht Beschreibung
id string Ja ID del documento

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

Obtener todas las sugerencias de datos personales detectadas de un documento.

Auth: Clave de API (token Bearer)

Parameter

Name Typ Pflicht Beschreibung
id string Ja ID del documento (ruta)
status string Nein Filtrar por estado: suggested, accepted, rejected
page integer Nein Número de página (predeterminado: 1)
limit integer Nein Resultados por página (predeterminado: 50, máx: 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
}

Valores de sensitivityType: name, address, phone, email, birth_date, iban, customer_number, insurance_number, ssn, credit_card, other. Origen: "regex", "ner" o "custom".

PATCH /api/v1/documents/{id}/suggestions/{suggestionId}

Aceptar o rechazar una sugerencia de redacción.

Auth: Clave de API (token Bearer)

Parameter

Name Typ Pflicht Beschreibung
id string Ja ID del documento
suggestionId string Ja ID de la sugerencia

Request Body

{
  "status": "accepted"
}

Response

{
  "id": "sug_xyz789",
  "status": "accepted"
}

Estado: "accepted" o "rejected". Solo las sugerencias con estado "suggested" pueden modificarse.

POST /api/v1/documents/{id}/redact

Aplicar la redacción y exportar el PDF redactado. Solo se redactan las sugerencias aceptadas.

Auth: Clave de API (token Bearer)

Parameter

Name Typ Pflicht Beschreibung
id string Ja ID del documento

Request Body

{
  "autoAcceptAll": false
}

Si autoAcceptAll: true, todas las sugerencias abiertas se aceptan automáticamente antes de redactar. La respuesta es un archivo PDF (binario), no JSON.

Respuesta de éxito: Content-Type: application/pdf con las cabeceras X-Redaction-Count, X-Verification-Passed

DELETE /api/v1/documents/{id}

Eliminar un documento y todos los datos asociados.

Auth: Clave de API (token Bearer)

Parameter

Name Typ Pflicht Beschreibung
id string Ja ID del documento

Response

{
  "success": true
}
PATCH /api/v1/documents/{id}/suggestions

Aceptar o rechazar varias sugerencias de redacción a la vez.

Auth: Clave de API (token Bearer)

Parameter

Name Typ Pflicht Beschreibung
id string Ja ID del documento

Request Body

[
  { "id": "sug_xyz789", "status": "accepted" },
  { "id": "sug_abc456", "status": "rejected" }
]

Response

{
  "updated": 2
}

Envíe un arreglo JSON con el ID de sugerencia y el estado deseado.

POST /api/v1/documents/{id}/report

Obtener un informe de redacción JSON de un documento con resumen y desglose por tipo.

Auth: Clave de API (token Bearer)

Parameter

Name Typ Pflicht Beschreibung
id string Ja ID del documento

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
}

Incluye la suma de comprobación SHA-256 del documento original y el estado de verificación.

GET /api/v1/account

Obtener la información de la cuenta, el plan actual y el uso mensual.

Auth: Clave de API (token 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 significa ilimitado (plan Business).

GET /api/v1/audit

Obtener los registros de auditoría de todas las acciones de la API. Solo disponible en el plan Business.

Auth: Clave de API (token Bearer — se requiere plan Business)

Parameter

Name Typ Pflicht Beschreibung
limit integer Nein Número de entradas (predeterminado: 20, máx: 100)
documentId string Nein Filtrar por ID de documento

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"
    }
  ]
}

Devuelve 403 para los planes Professional y Starter.

GET /api/v1

Obtener el estado de la API y los endpoints disponibles.

Auth: Clave de API (token Bearer)

Response

{
  "status": "ok",
  "service": "datenmaske-api",
  "version": "v1",
  "endpoints": { ... }
}

Flujo de trabajo de ejemplo

# 1. Subir el PDF
curl -X POST https://datenmaske.de/api/v1/documents \
  -H "Authorization: Bearer dm_live_ihr_schluessel" \
  -F "file=@vertrag.pdf"

# Respuesta: { "id": "doc_abc123", "pageCount": 5, "suggestionsCount": 12, "status": "review" }

# 2. Mostrar los datos personales detectados
curl https://datenmaske.de/api/v1/documents/doc_abc123/suggestions \
  -H "Authorization: Bearer dm_live_ihr_schluessel"

# 3. Aceptar/rechazar sugerencias
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. Aplicar la redacción y exportar el 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. Eliminar el documento
curl -X DELETE https://datenmaske.de/api/v1/documents/doc_abc123 \
  -H "Authorization: Bearer dm_live_ihr_schluessel"
              

Empezar con la API

Cree una clave de API en Ajustes y comience con la redacción programática de PDF. Desde 29 €/mes.