API
API
Marca y detecta archivos con la API de Markedfile. Disponible solo en el plan Enterprise.
Claves de API
El propietario de un espacio Enterprise crea y revoca las claves en los ajustes del espacio. Una clave se muestra una sola vez. Markedfile guarda un hash SHA-256, un prefijo corto y el nombre. No guarda el secreto.
Una clave pertenece a un solo espacio. Solo actúa ahí, con los límites de plan de ese espacio. Los espacios personales no tienen claves. Un miembro que no es el propietario no puede crearlas ni revocarlas.
Si el espacio pierde el plan Enterprise activo, todas las claves dejan de funcionar de inmediato, también durante los 30 días en los que los archivos existentes todavía se pueden detectar en la aplicación. Al volver a Enterprise, las claves que no revocaste vuelven a funcionar.
Autenticación
Envía el secreto en la cabecera Authorization como token Bearer. Estas rutas no usan la cookie de sesión. Un navegador en otro sitio es rechazado.
Auditoría
Crear, revocar, marcar y detectar escriben una fila de auditoría que el propietario del espacio puede leer. La fila no incluye el archivo.
Rutas
POST/api/v1/mark
Marca un archivo y devuelve la copia marcada. El cuerpo es multipart/form-data.
Autenticación
Authorization: Bearer mf_…Envía esta cabecera. No hay cookie de sesión. curl y otros clientes de servidor se aceptan. Un navegador en otro sitio es rechazado.
Parámetros
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| file | file | Sí | El archivo que quieres marcar. Enterprise admite hasta 100 MB y 500 páginas de PDF. El tamaño y las páginas siguen el plan del espacio. |
| identifier | string | Sí | De 1 a 32 caracteres, sin caracteres de control. Es la etiqueta que verás si esa copia se detecta más tarde. No se escribe en el archivo como texto legible. |
Solicitud
curl -X POST https://markedfile.com/api/v1/mark \
-H "Authorization: Bearer mf_…" \
-F "file=@contract.pdf" \
-F "identifier=northwind"Respuesta
{
"file": "JVBERi0xLjQK…",
"mime": "application/pdf",
"name": "contract.pdf",
"kind": "pdf",
"layers": [
{
"name": "Opaque PDF fields",
"detail": "Three authenticated copies; no identifier text",
"screenshot": "No",
"crop": "No",
"reencode": "No"
}
],
"remaining": 1
}file son los bytes marcados en base64. mime, name y kind describen la descarga. layers lista las capas que se aplicaron. Si el plan no tiene tope de archivos activos, remaining es el número de archivos activos después de esta marca. Si tiene tope, es cuántas marcas nuevas quedan. Enterprise no tiene tope. Borrar un archivo es lo que acaba con la detección.
Errores
El texto del campo error en el cuerpo JSON está en inglés.
| Estado | Descripción |
|---|---|
| 400 | El archivo está vacío, o el identificador está vacío, pasa de 32 caracteres o contiene un carácter de control. |
| 401 | La clave falta, está revocada o no se reconoce. El cuerpo JSON incluye "code": "api-key". |
| 403 | El espacio ya no tiene un plan Enterprise activo (el cuerpo incluye "code": "enterprise"), o el navegador envió una petición cross-site o same-site. |
| 413 | El archivo supera el límite de subida del plan, o el PDF tiene más páginas de las que el plan admite. |
| 422 | No se pudo procesar el archivo. |
| 429 | Esta clave marcó más de 40 archivos en el minuto en curso. |
Límite
40 solicitudes por minuto para esta clave. El contador se guarda en la base de datos del producto y sobrevive a un reinicio.
POST/api/v1/detect
Comprueba un archivo en el espacio de esta clave. El cuerpo es multipart/form-data.
Autenticación
Authorization: Bearer mf_…Envía esta cabecera. No hay cookie de sesión. curl y otros clientes de servidor se aceptan. Un navegador en otro sitio es rechazado.
Parámetros
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| file | file | Sí | El archivo que quieres comprobar. La búsqueda usa solo el espacio de esta clave. Un archivo marcado en otro espacio no se resuelve. |
Solicitud
curl -X POST https://markedfile.com/api/v1/detect \
-H "Authorization: Bearer mf_…" \
-F "file=@leaked.pdf"Respuesta
{
"id": "northwind",
"confidence": 0.9,
"layers": [
{
"name": "Opaque PDF fields",
"hit": true,
"detail": "1 authenticated field(s) recovered",
"screenshot": "No",
"crop": "No",
"reencode": "No"
}
],
"notes": [
"Confidence is a heuristic for validated layer matches, not a measured forensic probability."
]
}id es el identificador que asignaste cuando se marcó esa copia, o null si este espacio no tiene coincidencia. confidence es una heurística de las capas validadas, no una probabilidad medida. layers lista las capas, y hit es verdadero en las que coincidieron. notes describe lo que la comprobación hizo. Un archivo borrado no se resuelve.
Errores
El texto del campo error en el cuerpo JSON está en inglés.
| Estado | Descripción |
|---|---|
| 400 | El archivo está vacío. |
| 401 | La clave falta, está revocada o no se reconoce. El cuerpo JSON incluye "code": "api-key". |
| 403 | El espacio ya no tiene un plan Enterprise activo (el cuerpo incluye "code": "enterprise"), o el navegador envió una petición cross-site o same-site. |
| 413 | El archivo supera el límite de subida del plan, o el PDF tiene más páginas de las que el plan admite. |
| 422 | No se pudo procesar el archivo. |
| 429 | Esta clave hizo más de 80 detecciones en el minuto en curso. |
Límite
80 solicitudes por minuto para esta clave. El contador se guarda en la base de datos del producto y sobrevive a un reinicio.