API para desarrolladores
Documentación de API pública

Acceso programático a los metadatos de tus archivos y carpetas.

URL base

https://cryptfiles.cloud/api/public/v1

Todos los endpoints están vinculados al propietario. Un token solo puede leer/escribir recursos de la cuenta que lo creó. Nota: Las subidas no están disponibles en la API pública debido al modelo Zero-Knowledge.

Inicio rápido
  1. Crea un token Bearer en Panel → Perfil → Tokens de API pública.
  2. Guarda el token de forma segura. El token en texto plano solo se muestra una vez.
  3. Envía solicitudes con `Authorization: Bearer {token}` y `Accept: application/json`.
  4. Asigna solo los permisos realmente necesarios (mínimo privilegio).
Códigos de estado habituales
  • 200 OK - Solicitud correcta
  • 201 Created - Recurso creado
  • 401 Unauthorized - Token ausente/inválido
  • 403 Forbidden - Permiso ausente o cuenta restringida
  • 404 Not Found - Recurso no visible para este propietario
  • 422 Unprocessable Entity - Error de validación
  • 429 Too Many Requests - Límite de tasa alcanzado
Modelo de seguridad
  • Los secretos de los tokens nunca se almacenan en texto plano en el servidor.
  • Las estrictas verificaciones de propietario evitan accesos entre cuentas a archivos/carpetas.
  • Las cuentas suspendidas o bloqueadas son rechazadas en la API pública.
  • Debido al modelo Zero-Knowledge, los endpoints de subida no son posibles en la API pública.
Cabeceras obligatorias
  • Authorization: Bearer {token}
  • Accept: application/json
  • Content-Type: application/json (con cuerpo JSON)
Cuenta

Leer estadísticas de perfil, almacenamiento y uso.

GET /account Permiso: account:read Obtener datos de la cuenta

Devuelve el perfil, las cuotas/uso de almacenamiento y estadísticas agregadas del propietario del token.

Detalles de la solicitud
Request Notes
  • No se requiere cuerpo de solicitud.
Campos de respuesta
  • data.id: UUID de la cuenta
  • data.name: Nombre de visualización del perfil
  • data.email: Correo electrónico de la cuenta
  • data.account_type: Plan actual
  • data.storage.used_bytes: Bytes almacenados
  • data.storage.pending_bytes: Bytes reservados para subidas en curso
  • data.storage.quota_bytes: Bytes máximos permitidos
  • data.storage.available_bytes: Bytes restantes
  • data.storage.usage_percentage: Porcentaje de uso de almacenamiento
  • data.stats.uploads_count: Número total de subidas exitosas
  • data.stats.downloads_count: Número total de descargas exitosas
  • data.stats.views_count: Número total de eventos de visita/stream
  • data.stats.shares_count: Número total de enlaces compartidos creados
  • data.stats.files_count: Número total de archivos en estadísticas
  • data.stats.bandwidth_used_bytes: Ancho de banda total transferido en bytes
  • data.fair_use.daily_bandwidth_used_bytes: Contador de uso justo actual para hoy en bytes
  • data.fair_use.full_speed_limit_bytes: Límite diario a partir del cual comienza el throttling
  • data.fair_use.heavy_throttle_from_bytes: Límite diario a partir del cual empieza el throttling intenso
  • data.fair_use.moderate_delay_ms: Retraso de fragmento con throttling moderado
  • data.fair_use.heavy_delay_ms: Retraso de fragmento con throttling intenso
  • data.fair_use.current_delay_ms: Retraso de fragmento actualmente aplicado
  • data.fair_use.current_state: full_speed|moderate|heavy
Notas
  • Siempre vinculado al propietario. No es posible la búsqueda entre cuentas.
  • Todos los valores de ancho de banda están en bytes.
  • El throttling se basa en los bytes de uso justo diario y el nivel de cuenta.
  • El throttling moderado comienza cuando daily_bandwidth_used_bytes >= full_speed_limit_bytes; el throttling intenso cuando >= heavy_throttle_from_bytes.
Ejemplo
curl -X GET "https://cryptfiles.cloud/api/public/v1/account" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
Archivos

Listar, leer, actualizar, compartir y eliminar metadatos de archivos.

GET /files Permiso: files:read Listar metadatos de archivos

Devuelve metadatos de archivos paginados para la cuenta del propietario.

Detalles de la solicitud
Query Parameters
  • folder_id (uuid opcional)
  • status (uploading|processing|available|deleted opcional)
  • is_video (boolean opcional)
  • share_type (public|private opcional)
  • per_page (entero 1-200 opcional)
Campos de respuesta
  • data.items[].id
  • data.items[].folder_id, original_file_id, reference_count
  • data.items[].status, share_type, is_video, mime_type
  • data.items[].file_size, file_size_encrypted, chunk_size, chunk_count
  • data.items[].download_count, stream_count
  • data.items[].metadata, thumbnail_path, thumbnail_nonce
  • data.items[].created_at, updated_at, expires_at
  • data.pagination.current_page, last_page, per_page, total
Notas
  • Sin filtro de estado se usa status=available por defecto.
Ejemplo
curl -X GET "https://cryptfiles.cloud/api/public/v1/files?per_page=50" \
  -H "Authorization: Bearer {token}"
GET /files/{fileId} Permiso: files:read Leer metadatos de un archivo

Devuelve los metadatos de un único archivo del propietario.

Detalles de la solicitud
Path Parameters
  • fileId (uuid)
Campos de respuesta
  • data.id
  • data.folder_id, original_file_id, reference_count
  • data.status, share_type, is_video, mime_type
  • data.file_size, file_size_encrypted, chunk_size, chunk_count
  • data.download_count, stream_count
  • data.metadata, thumbnail_path, thumbnail_nonce
  • data.created_at, updated_at, expires_at
Notas
  • 404 si el archivo no pertenece al propietario del token.
Ejemplo
curl -X GET "https://cryptfiles.cloud/api/public/v1/files/{file_id}" \
  -H "Authorization: Bearer {token}"
PATCH /files/{fileId} Permiso: files:write Actualizar metadatos de archivo (sin contenido)

Actualiza metadatos visibles del propietario como asignación de carpeta, tipo de compartición, fecha de vencimiento y metadatos.

Detalles de la solicitud
Path Parameters
  • fileId (uuid)
Body Parameters (JSON)
  • folder_id (uuid|null opcional)
  • share_type (public|private opcional)
  • is_video (boolean opcional)
  • expires_at (date|null opcional)
  • metadata (string|null opcional)
Campos de respuesta
  • Mismo objeto de archivo que en GET /files/{fileId}
Notas
  • folder_id debe pertenecer al mismo propietario.
  • El contenido del archivo no se modifica con este endpoint.
  • Si no se pasa ningún campo modificable, el endpoint devuelve 422.
Ejemplo
curl -X PATCH "https://cryptfiles.cloud/api/public/v1/files/{file_id}" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"share_type":"private"}'
DELETE /files/{fileId} Permiso: files:write Eliminar archivo

Elimina un archivo con autorización del propietario y la lógica de eliminación segura existente.

Detalles de la solicitud
Path Parameters
  • fileId (uuid)
Campos de respuesta
  • success
  • message
Notas
  • 404 para recursos no visibles o que no son propios.
Ejemplo
curl -X DELETE "https://cryptfiles.cloud/api/public/v1/files/{file_id}" \
  -H "Authorization: Bearer {token}"
POST /files/{fileId}/share Permiso: files:write Crear enlace compartido de archivo

Crea un token de compartición para un archivo del propietario.

Detalles de la solicitud
Path Parameters
  • fileId (uuid)
Body Parameters (JSON)
  • password (string mín 4 opcional)
  • max_downloads (entero >= 1 opcional)
  • expires_in_days (entero 1-365 opcional)
Campos de respuesta
  • data.share_id, share_token, share_url
  • data.expires_at, has_password
  • message
Notas
  • Endpoint exclusivo del propietario.
Ejemplo
curl -X POST "https://cryptfiles.cloud/api/public/v1/files/{file_id}/share" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"max_downloads":25}'
Carpetas

Crear y gestionar la estructura de carpetas del sistema existente.

GET /folders Permiso: folders:read Listar carpetas

Devuelve carpetas en formato plano o árbol.

Detalles de la solicitud
Query Parameters
  • format (flat|tree opcional
  • por defecto flat)
Campos de respuesta
  • data[].id, parent_folder_id, name, display_order
  • data[].created_at, updated_at, deleted_at
  • data[].file_count, subfolder_count, object_count
  • data[].children[] (solo con format=tree, mismos campos recursivamente)
Notas
  • Los resultados siempre están vinculados al propietario.
  • Valores de formato inválidos devuelven error de validación 422.
Ejemplo
curl -X GET "https://cryptfiles.cloud/api/public/v1/folders?format=tree" \
  -H "Authorization: Bearer {token}"
GET /folders/{folderId} Permiso: folders:read Leer detalles de carpeta

Devuelve los metadatos de la carpeta más la ruta de navegación.

Detalles de la solicitud
Path Parameters
  • folderId (uuid)
Campos de respuesta
  • data.folder.id, parent_folder_id, name, display_order
  • data.folder.created_at, updated_at, deleted_at
  • data.folder.file_count, subfolder_count, object_count
  • data.breadcrumbs[] con los mismos campos de carpeta
Notas
  • 404 para carpetas que no son propias.
Ejemplo
curl -X GET "https://cryptfiles.cloud/api/public/v1/folders/{folder_id}" \
  -H "Authorization: Bearer {token}"
POST /folders Permiso: folders:write Crear carpeta

Crea una nueva carpeta en la jerarquía existente.

Detalles de la solicitud
Body Parameters (JSON)
  • name (requerido
  • cadena no vacía)
  • parent_folder_id (uuid|null opcional)
  • display_order (entero >= 0 opcional)
Campos de respuesta
  • data.id, parent_folder_id, name, display_order
  • data.created_at, updated_at, deleted_at
  • data.file_count, subfolder_count, object_count
Notas
  • parent_folder_id debe pertenecer a la cuenta del propietario.
Ejemplo
curl -X POST "https://cryptfiles.cloud/api/public/v1/folders" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"name":"Proyecto Alpha"}'
PATCH /folders/{folderId} Permiso: folders:write Actualizar metadatos de carpeta

Renombra, mueve o vuelve a ordenar una carpeta existente.

Detalles de la solicitud
Path Parameters
  • folderId (uuid)
Body Parameters (JSON)
  • name (cadena no vacía opcional)
  • parent_folder_id (uuid|null opcional)
  • display_order (entero >= 0 opcional)
Campos de respuesta
  • data.id, parent_folder_id, name, display_order
  • data.created_at, updated_at, deleted_at
  • data.file_count, subfolder_count, object_count
Notas
  • El destino al mover debe pertenecer al propietario.
  • Si no se pasa ningún campo modificable, el endpoint devuelve 422.
  • Los movimientos inválidos (a sí mismo/descendiente) devuelven 422.
Ejemplo
curl -X PATCH "https://cryptfiles.cloud/api/public/v1/folders/{folder_id}" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"display_order":3}'
DELETE /folders/{folderId} Permiso: folders:write Eliminar carpeta

Elimina una carpeta.

Detalles de la solicitud
Path Parameters
  • folderId (uuid)
Campos de respuesta
  • success
  • message
Notas
  • 404 para carpetas que no son propias.
Ejemplo
curl -X DELETE "https://cryptfiles.cloud/api/public/v1/folders/{folder_id}" \
  -H "Authorization: Bearer {token}"

Usamos cookies técnicamente necesarias para la seguridad y funcionalidad de la plataforma. Más información en nuestra Política de privacidad.