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.
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
/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.
/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
} /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
}
} /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".
/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.
/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
/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
} /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.
/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.
/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).
/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.
/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.