Acesso programático aos metadados dos seus arquivos e pastas.
URL Base
https://cryptfiles.cloud/api/public/v1
Todos os endpoints são vinculados ao proprietário. Um token só pode ler/gravar recursos da conta que criou o token. Nota: Uploads não estão disponíveis na API Pública devido ao modelo Zero-Knowledge.
- Crie um Bearer Token em Dashboard -> Perfil -> Tokens de API Pública.
- Armazene o token com segurança. O token em texto puro é exibido apenas uma vez.
- Envie requests com `Authorization: Bearer {token}` e `Accept: application/json`.
- Conceda apenas os escopos realmente necessários (Privilégio Mínimo).
- 200 OK - Request bem-sucedido
- 201 Created - Recurso criado
- 401 Unauthorized - Token ausente/inválido
- 403 Forbidden - Escopo ausente ou conta restrita
- 404 Not Found - Recurso não visível para este proprietário
- 422 Unprocessable Entity - Erro de validação
- 429 Too Many Requests - Limite de taxa atingido
- Secrets dos tokens nunca são armazenados em texto puro no servidor.
- Verificações rigorosas de proprietário impedem acesso entre contas em arquivos/pastas.
- Contas suspensas ou banidas são bloqueadas para a API Pública.
- Devido ao modelo Zero-Knowledge, endpoints de upload não são possíveis na API Pública.
- Authorization: Bearer {token}
- Accept: application/json
- Content-Type: application/json (para body JSON)
Ler estatísticas de perfil, armazenamento e uso.
GET
/account
Escopo: account:read
Obter dados da conta
Retorna perfil, cotas/uso de armazenamento e estatísticas agregadas do proprietário do token.
- Nenhum body necessário.
- data.id: UUID da conta
- data.name: Nome de exibição do perfil
- data.email: E-mail da conta
- data.account_type: Plano atual
- data.storage.used_bytes: Bytes armazenados
- data.storage.pending_bytes: Bytes reservados para uploads em andamento
- data.storage.quota_bytes: Máximo de bytes permitidos
- data.storage.available_bytes: Bytes restantes
- data.storage.usage_percentage: Uso de armazenamento em porcentagem
- data.stats.uploads_count: Total de uploads bem-sucedidos
- data.stats.downloads_count: Total de downloads bem-sucedidos
- data.stats.views_count: Total de eventos de visualização/stream
- data.stats.shares_count: Total de links de compartilhamento criados
- data.stats.files_count: Total de arquivos nas estatísticas
- data.stats.bandwidth_used_bytes: Largura de banda total transferida em bytes
- data.fair_use.daily_bandwidth_used_bytes: Contador Fair-Use atual do dia em bytes
- data.fair_use.full_speed_limit_bytes: A partir deste limite diário, o throttling começa
- data.fair_use.heavy_throttle_from_bytes: A partir deste limite diário, o throttling intenso começa
- data.fair_use.moderate_delay_ms: Atraso por chunk no throttling moderado
- data.fair_use.heavy_delay_ms: Atraso por chunk no throttling intenso
- data.fair_use.current_delay_ms: Atraso por chunk atualmente aplicado
- data.fair_use.current_state: full_speed|moderate|heavy
- Sempre vinculado ao proprietário. Nenhuma consulta entre contas possível.
- Todos os valores de largura de banda são em bytes.
- O throttling é baseado nos bytes diários de Fair-Use e no nível da conta.
- Throttling moderado começa quando daily_bandwidth_used_bytes >= full_speed_limit_bytes; throttling intenso quando >= heavy_throttle_from_bytes.
curl -X GET "https://cryptfiles.cloud/api/public/v1/account" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"
Listar, ler, atualizar, compartilhar e excluir metadados de arquivos.
GET
/files
Escopo: files:read
Listar metadados de arquivos
Retorna metadados paginados de arquivos da conta do proprietário.
- folder_id (uuid opcional)
- status (uploading|processing|available|deleted opcional)
- is_video (boolean opcional)
- share_type (public|private opcional)
- per_page (integer 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
- Sem filtro de status, o padrão é status=available.
curl -X GET "https://cryptfiles.cloud/api/public/v1/files?per_page=50" \
-H "Authorization: Bearer {token}"
GET
/files/{fileId}
Escopo: files:read
Ler metadados de um arquivo
Retorna metadados de um único arquivo do proprietário.
- 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 se o arquivo não pertence ao proprietário do token.
curl -X GET "https://cryptfiles.cloud/api/public/v1/files/{file_id}" \
-H "Authorization: Bearer {token}"
PATCH
/files/{fileId}
Escopo: files:write
Atualizar metadados do arquivo (sem conteúdo)
Atualiza metadados visíveis ao proprietário, como atribuição de pasta, tipo de compartilhamento, data de expiração e metadados.
- 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)
- Mesmo objeto de arquivo que em GET /files/{fileId}
- folder_id deve pertencer ao mesmo proprietário.
- O conteúdo do arquivo não é alterado por este endpoint.
- Se nenhum campo editável for enviado, o endpoint retorna 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}
Escopo: files:write
Excluir arquivo
Exclui um arquivo com autorização do proprietário e lógica de exclusão segura existente.
- fileId (uuid)
- success
- message
- 404 para recursos não visíveis/que não pertencem ao proprietário.
curl -X DELETE "https://cryptfiles.cloud/api/public/v1/files/{file_id}" \
-H "Authorization: Bearer {token}"
POST
/files/{fileId}/share
Escopo: files:write
Criar link de compartilhamento do arquivo
Cria um token de compartilhamento para um arquivo do proprietário.
- fileId (uuid)
- password (string min 4 opcional)
- max_downloads (integer >= 1 opcional)
- expires_in_days (integer 1-365 opcional)
- data.share_id, share_token, share_url
- data.expires_at, has_password
- message
- Endpoint exclusivo do proprietário.
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}'
Criar e gerenciar a estrutura de pastas conforme o sistema existente.
GET
/folders
Escopo: folders:read
Listar pastas
Retorna pastas no formato plano ou em árvore.
- format (flat|tree opcional padrão 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[] (apenas com format=tree, mesmos campos recursivamente)
- Resultados são sempre vinculados ao proprietário.
- Valores inválidos de format retornam erro de validação 422.
curl -X GET "https://cryptfiles.cloud/api/public/v1/folders?format=tree" \
-H "Authorization: Bearer {token}"
GET
/folders/{folderId}
Escopo: folders:read
Ler detalhes da pasta
Retorna metadados da pasta mais o caminho de breadcrumb.
- 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[] com os mesmos campos de pasta
- 404 para pastas que não pertencem ao proprietário.
curl -X GET "https://cryptfiles.cloud/api/public/v1/folders/{folder_id}" \
-H "Authorization: Bearer {token}"
POST
/folders
Escopo: folders:write
Criar pasta
Cria uma nova pasta na hierarquia existente.
- name (obrigatório
- string não vazia)
- parent_folder_id (uuid|null opcional)
- display_order (integer >= 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 deve pertencer à conta do proprietário.
curl -X POST "https://cryptfiles.cloud/api/public/v1/folders" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"name":"Projeto Alpha"}'
PATCH
/folders/{folderId}
Escopo: folders:write
Atualizar metadados da pasta
Renomeia, move ou reordena uma pasta existente.
- folderId (uuid)
- name (string não vazia
- opcional)
- parent_folder_id (uuid|null opcional)
- display_order (integer >= 0 opcional)
- data.id, parent_folder_id, name, display_order
- data.created_at, updated_at, deleted_at
- data.file_count, subfolder_count, object_count
- O destino de movimentações deve pertencer ao proprietário.
- Se nenhum campo editável for enviado, o endpoint retorna 422.
- Movimentações inválidas (para si mesmo/descendentes) retornam 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}
Escopo: folders:write
Excluir pasta
Exclui uma pasta.
- folderId (uuid)
- success
- message
- 404 para pastas que não pertencem ao proprietário.
curl -X DELETE "https://cryptfiles.cloud/api/public/v1/folders/{folder_id}" \
-H "Authorization: Bearer {token}"
Pesquisar seus próprios arquivos e pastas.
GET
/search
Escopo: search:read
Buscar arquivos e pastas
Busca recursos do proprietário por consulta.
- q (obrigatório 1-200 caracteres)
- type (all|files|folders opcional)
- limit (integer 1-100 opcional)
- data.query
- data.files[] com os mesmos campos de arquivo que GET /files/{fileId}
- data.folders[] com os mesmos campos de pasta que GET /folders/{folderId}.data.folder
- A busca é sempre limitada aos recursos do proprietário do token.
curl -X GET "https://cryptfiles.cloud/api/public/v1/search?q=video&type=files&limit=20" \
-H "Authorization: Bearer {token}"