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.
- Crea un token Bearer en Panel → Perfil → Tokens de API pública.
- Guarda el token de forma segura. El token en texto plano solo se muestra una vez.
- Envía solicitudes con `Authorization: Bearer {token}` y `Accept: application/json`.
- Asigna solo los permisos realmente necesarios (mínimo privilegio).
- 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
- 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.
- Authorization: Bearer {token}
- Accept: application/json
- Content-Type: application/json (con cuerpo JSON)
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.
- No se requiere cuerpo de solicitud.
- 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
- 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.
curl -X GET "https://cryptfiles.cloud/api/public/v1/account" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
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.
- 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)
- 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
- Sin filtro de estado se usa status=available por defecto.
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.
- fileId (uuid)
- 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
- 404 si el archivo no pertenece al propietario del token.
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.
- fileId (uuid)
- folder_id (uuid|null opcional)
- share_type (public|private opcional)
- is_video (boolean opcional)
- expires_at (date|null opcional)
- metadata (string|null opcional)
- Mismo objeto de archivo que en GET /files/{fileId}
- 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.
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.
- fileId (uuid)
- success
- message
- 404 para recursos no visibles o que no son propios.
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.
- fileId (uuid)
- password (string mín 4 opcional)
- max_downloads (entero >= 1 opcional)
- expires_in_days (entero 1-365 opcional)
- data.share_id, share_token, share_url
- data.expires_at, has_password
- message
- Endpoint exclusivo del propietario.
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}'
Crear y gestionar la estructura de carpetas del sistema existente.
GET
/folders
Permiso: folders:read
Listar carpetas
Devuelve carpetas en formato plano o árbol.
- format (flat|tree opcional
- por defecto flat)
- 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)
- Los resultados siempre están vinculados al propietario.
- Valores de formato inválidos devuelven error de validación 422.
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.
- folderId (uuid)
- 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
- 404 para carpetas que no son propias.
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.
- name (requerido
- cadena no vacía)
- parent_folder_id (uuid|null opcional)
- display_order (entero >= 0 opcional)
- data.id, parent_folder_id, name, display_order
- data.created_at, updated_at, deleted_at
- data.file_count, subfolder_count, object_count
- parent_folder_id debe pertenecer a la cuenta del propietario.
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.
- folderId (uuid)
- name (cadena no vacía opcional)
- parent_folder_id (uuid|null opcional)
- display_order (entero >= 0 opcional)
- data.id, parent_folder_id, name, display_order
- data.created_at, updated_at, deleted_at
- data.file_count, subfolder_count, object_count
- 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.
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.
- folderId (uuid)
- success
- message
- 404 para carpetas que no son propias.
curl -X DELETE "https://cryptfiles.cloud/api/public/v1/folders/{folder_id}" \
-H "Authorization: Bearer {token}"
Buscar en tus propios archivos y carpetas.
GET
/search
Permiso: search:read
Buscar archivos y carpetas
Busca en los recursos propios del propietario mediante consulta.
- q (requerido
- 1-200 caracteres)
- type (all|files|folders opcional)
- limit (entero 1-100 opcional)
- data.query
- data.files[] con los mismos campos de archivo que GET /files/{fileId}
- data.folders[] con los mismos campos de carpeta que GET /folders/{folderId}.data.folder
- La búsqueda siempre está limitada a los recursos del propietario del token.
curl -X GET "https://cryptfiles.cloud/api/public/v1/search?q=video&type=files&limit=20" \
-H "Authorization: Bearer {token}"