Cloud Storage Backends
Section titled “Cloud Storage Backends”Use these endpoints to connect a cloud storage backend to your Hoody Files container. Each endpoint registers a specific provider — Google Drive, Dropbox, OneDrive, iCloud, Proton Drive, and others — so you can mount the remote storage as a virtual filesystem path inside your project. After connecting, the returned id can be attached to a mount path via the filesystem mount endpoints.
All requests are sent as POST to the files container and accept a JSON configuration body. Successful connections return 201 Created; configuration or credential errors return 400 Bad Request.
POST /api/v1/backends/box
Section titled “POST /api/v1/backends/box”Connect a Box backend (user or enterprise account).
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
access_token | string | No | "" | Box App Primary Access Token. Leave blank normally. |
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
box_config_file | string | No | "" | Box App config.json location. Leading ~ and env vars such as ${RCLONE_CONFIG_DIR} are expanded. |
box_sub_type | string | No | "user" | One of user, enterprise. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow (RFC 6749). |
client_id | string | No | "" | OAuth Client Id. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
commit_retries | integer | No | 100 | Max number of times to try committing a multipart file. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "52535298" | Backend encoding. |
impersonate | string | No | "" | Box user ID to impersonate when using a JWT service account. |
list_chunk | integer | No | 1000 | Size of listing chunk (1-1000). |
owned_by | string | No | "" | Only show items owned by the supplied email address. |
root_folder_id | string | No | "0" | Folder ID to use as the root for Hoody. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. Leave blank to use the provider defaults. |
upload_cutoff | string | No | "52428800" | Cutoff for switching to multipart upload (at least 50 MiB). |
Response
Section titled “Response”{ "data": { "backend_type": "box", "id": "backend_box_8a4f2c", "mount_paths": [], "type": "cloud" }, "message": "Box backend connected successfully", "success": true}{ "error": "Invalid Box access token", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/box" \ -H "Content-Type: application/json" \ -d '{ "access_token": "box_app_access_token", "box_sub_type": "user", "description": "Personal Box account" }'await client.files.backends.connectBox({ access_token: "box_app_access_token", box_sub_type: "user", description: "Personal Box account"});POST /api/v1/backends/drive
Section titled “POST /api/v1/backends/drive”Connect a Google Drive backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
acknowledge_abuse | boolean | No | false | Allow download of files flagged with cannotDownloadAbusiveFile. |
allow_import_name_change | boolean | No | false | Allow Google docs to change filetype on upload. |
alternate_export | boolean | No | false | Deprecated. No longer needed. |
auth_owner_only | boolean | No | false | Only consider files owned by the authenticated user. |
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
chunk_size | string | No | "8388608" | Upload chunk size. Must be a power of 2, at least 256k. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | Google Application Client Id. Recommended. |
client_secret | string | No | "" | OAuth Client Secret. |
copy_shortcut_content | boolean | No | false | Server-side copy shortcut contents instead of the shortcut itself. |
description | string | No | "" | Description of the remote. |
disable_http2 | boolean | No | true | Disable HTTP/2 (workaround for a Drive issue). |
encoding | string | No | "16777216" | Backend encoding. |
env_auth | boolean | No | false | Get IAM credentials from runtime (env vars or instance metadata). One of false, true. |
export_formats | string | No | "docx,xlsx,pptx,svg" | Comma-separated preferred formats for downloading Google docs. |
fast_list_bug_fix | boolean | No | true | Work around a Drive listing bug when using --fast-list. |
formats | string | No | "" | Deprecated. See export_formats. |
impersonate | string | No | "" | User to impersonate when using a service account. |
import_formats | string | No | "" | Comma-separated preferred formats for uploading Google docs. |
keep_revision_forever | boolean | No | false | Keep new head revision of each file forever. |
list_chunk | integer | No | 1000 | Size of listing chunk (100-1000, 0 to disable). |
metadata_labels | string | No | "0" | Label metadata access. One of off, read, write, failok, read,write. |
metadata_owner | string | No | "1" | Owner metadata access. One of off, read, write, failok, read,write. |
metadata_permissions | string | No | "0" | Permissions metadata access. One of off, read, write, failok, read,write. |
pacer_burst | integer | No | 100 | Number of API calls to allow without sleeping. |
pacer_min_sleep | integer | No | 0 | Minimum sleep between API calls (seconds). |
resource_key | string | No | "" | Resource key for accessing a link-shared file. |
root_folder_id | string | No | "" | ID of the root folder. Leave blank normally. |
scope | string | No | "" | Comma-separated scopes. One of drive, drive.readonly, drive.file, drive.appfolder, drive.metadata.readonly. |
server_side_across_configs | boolean | No | false | Deprecated. Allow server-side operations across Drive configs. |
service_account_credentials | string | No | "" | Service account credentials JSON blob. |
service_account_file | string | No | "" | Service account credentials JSON file path. |
shared_with_me | boolean | No | false | Only show files shared with me. |
show_all_gdocs | boolean | No | false | Show all Google Docs including non-exportable ones. |
size_as_quota | boolean | No | false | Show sizes as storage quota usage, not actual size. |
skip_checksum_gphotos | boolean | No | false | Skip checksums on Google photos and videos. |
skip_dangling_shortcuts | boolean | No | false | Skip dangling shortcut files. |
skip_gdocs | boolean | No | false | Skip Google docs in all listings. |
skip_shortcuts | boolean | No | false | Skip shortcut files. |
starred_only | boolean | No | false | Only show files that are starred. |
stop_on_download_limit | boolean | No | false | Make download limit errors fatal. |
stop_on_upload_limit | boolean | No | false | Make upload limit errors fatal. |
team_drive | string | No | "" | ID of the Shared Drive (Team Drive). |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
trashed_only | boolean | No | false | Only show files in the trash. |
upload_cutoff | string | No | "8388608" | Cutoff for switching to chunked upload. |
use_created_date | boolean | No | false | Use file created date instead of modified date. |
use_shared_date | boolean | No | false | Use date file was shared instead of modified date. |
use_trash | boolean | No | true | Send files to trash instead of deleting permanently. |
v2_download_min_size | string | No | "-1" | If objects are greater, use Drive v2 API to download. |
Response
Section titled “Response”{ "data": { "backend_type": "drive", "id": "backend_drive_9d7e1a", "mount_paths": [], "type": "cloud" }, "message": "Google Drive backend connected successfully", "success": true}{ "error": "Google Drive OAuth token is invalid or expired", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/drive" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-google-client-id.apps.googleusercontent.com", "client_secret": "your-google-client-secret", "description": "Team Google Drive", "scope": "drive" }'await client.files.backends.connectDrive({ client_id: "your-google-client-id.apps.googleusercontent.com", client_secret: "your-google-client-secret", description: "Team Google Drive", scope: "drive"});POST /api/v1/backends/dropbox
Section titled “POST /api/v1/backends/dropbox”Connect a Dropbox backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
batch_commit_timeout | integer | No | 600 | Max time to wait for a batch to finish committing (seconds). |
batch_mode | string | No | "sync" | Upload file batching mode. One of sync, async, off. |
batch_size | integer | No | 0 | Max number of files in upload batch (less than 1000). |
batch_timeout | integer | No | 0 | Max idle time for an upload batch before uploading (seconds). |
chunk_size | string | No | "50331648" | Upload chunk size (less than 150 MiB). |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "52469762" | Backend encoding. |
impersonate | string | No | "" | Dropbox user to impersonate (business accounts). |
pacer_min_sleep | integer | No | 0 | Minimum sleep between API calls (seconds). |
root_namespace | string | No | "" | Dropbox namespace ID to use as the root for all paths. |
shared_files | boolean | No | false | Work on individual shared files (list/read only). |
shared_folders | boolean | No | false | Work on shared folders. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
Response
Section titled “Response”{ "data": { "backend_type": "dropbox", "id": "backend_dropbox_2f8c1b", "mount_paths": [], "type": "cloud" }, "message": "Dropbox backend connected successfully", "success": true}{ "error": "Invalid Dropbox OAuth token", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/dropbox" \ -H "Content-Type: application/json" \ -d '{ "client_id": "dropbox-app-key", "client_secret": "dropbox-app-secret", "description": "Personal Dropbox" }'await client.files.backends.connectDropbox({ client_id: "dropbox-app-key", client_secret: "dropbox-app-secret", description: "Personal Dropbox"});POST /api/v1/backends/fichier
Section titled “POST /api/v1/backends/fichier”Connect a 1Fichier backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
api_key | string | No | "" | Your API Key from https://1fichier.com/console/params.pl. |
cdn | boolean | No | false | Use CDN download links. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "52666494" | Backend encoding. |
file_password | string | No | "" | Password for a shared password-protected file. |
folder_password | string | No | "" | Password for a shared password-protected folder. |
shared_folder | string | No | "" | If you want to download a shared folder. |
Response
Section titled “Response”{ "data": { "backend_type": "fichier", "id": "backend_fichier_5e0a3c", "mount_paths": [], "type": "cloud" }, "message": "1Fichier backend connected successfully", "success": true}{ "error": "Invalid 1Fichier API key", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/fichier" \ -H "Content-Type: application/json" \ -d '{ "api_key": "your-1fichier-api-key", "description": "1Fichier account" }'await client.files.backends.connectFichier({ api_key: "your-1fichier-api-key", description: "1Fichier account"});POST /api/v1/backends/filefabric
Section titled “POST /api/v1/backends/filefabric”Connect an Enterprise File Fabric backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
description | string | No | "" | Description of the remote. |
encoding | string | No | "50429954" | Backend encoding. |
permanent_token | string | No | "" | Permanent authentication token (created in the Enterprise File Fabric dashboard). |
root_folder_id | string | No | "" | ID of the root folder. Leave blank normally. |
token | string | No | "" | Session token. Set automatically by Hoody. |
token_expiry | string | No | "" | Token expiry time. Set automatically by Hoody. |
url | string | Yes | "" | URL of the Enterprise File Fabric to connect to. One of https://storagemadeeasy.com, https://eu.storagemadeeasy.com, https://yourfabric.smestorage.com. |
version | string | No | "" | Version read from the file fabric. Set automatically by Hoody. |
Response
Section titled “Response”{ "data": { "backend_type": "filefabric", "id": "backend_filefabric_4d6f8a", "mount_paths": [], "type": "cloud" }, "message": "Enterprise File Fabric backend connected successfully", "success": true}{ "error": "url is required", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/filefabric" \ -H "Content-Type: application/json" \ -d '{ "url": "https://storagemadeeasy.com", "permanent_token": "your-permanent-token", "description": "Corporate File Fabric" }'await client.files.backends.connectFilefabric({ url: "https://storagemadeeasy.com", permanent_token: "your-permanent-token", description: "Corporate File Fabric"});POST /api/v1/backends/filescom
Section titled “POST /api/v1/backends/filescom”Connect a Files.com backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
api_key | string | No | "" | API key for Files.com. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "60923906" | Backend encoding. |
password | string | No | "" | Files.com account password. |
site | string | No | "" | Site subdomain or custom domain. |
username | string | No | "" | Files.com username. |
Response
Section titled “Response”{ "data": { "backend_type": "filescom", "id": "backend_filescom_7c1b09", "mount_paths": [], "type": "cloud" }, "message": "Files.com backend connected successfully", "success": true}{ "error": "Files.com authentication failed", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/filescom" \ -H "Content-Type: application/json" \ -d '{ "site": "mysite", "username": "user@example.com", "password": "files-com-password", "description": "Files.com workspace" }'await client.files.backends.connectFilescom({ site: "mysite", username: "user@example.com", password: "files-com-password", description: "Files.com workspace"});POST /api/v1/backends/gofile
Section titled “POST /api/v1/backends/gofile”Connect a Gofile backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
access_token | string | No | "" | API access token from the Gofile web control panel. |
account_id | string | No | "" | Account ID. Filled in automatically by Hoody. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "323331982" | Backend encoding. |
list_chunk | integer | No | 1000 | Number of items to list in each call. |
root_folder_id | string | No | "" | ID of the root folder. Filled in automatically by Hoody. |
Response
Section titled “Response”{ "data": { "backend_type": "gofile", "id": "backend_gofile_3a82f1", "mount_paths": [], "type": "cloud" }, "message": "Gofile backend connected successfully", "success": true}{ "error": "Invalid Gofile access token", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/gofile" \ -H "Content-Type: application/json" \ -d '{ "access_token": "gofile-access-token", "description": "Gofile account" }'await client.files.backends.connectGofile({ access_token: "gofile-access-token", description: "Gofile account"});POST /api/v1/backends/google-photos
Section titled “POST /api/v1/backends/google-photos”Connect a Google Photos backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
batch_commit_timeout | integer | No | 600 | Max time to wait for a batch to finish committing (seconds). |
batch_mode | string | No | "sync" | Upload batching mode. One of sync, async, off. |
batch_size | integer | No | 0 | Max number of files in upload batch (less than 50). |
batch_timeout | integer | No | 0 | Max idle time for an upload batch (seconds). |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50348034" | Backend encoding. |
include_archived | boolean | No | false | Also view and download archived media. |
proxy | string | No | "" | Use the gphotosdl proxy URL (e.g. http://localhost:8282). |
read_only | boolean | No | false | Request read-only access. |
read_size | boolean | No | false | Read the size of media items (recommended for VFS). |
start_year | integer | No | 2000 | Earliest upload year to include. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
Response
Section titled “Response”{ "data": { "backend_type": "google photos", "id": "backend_gphotos_b21e04", "mount_paths": [], "type": "cloud" }, "message": "Google Photos backend connected successfully", "success": true}{ "error": "Google Photos OAuth token is invalid", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/google-photos" \ -H "Content-Type: application/json" \ -d '{ "client_id": "google-photos-client-id", "client_secret": "google-photos-client-secret", "read_size": true, "description": "Family photos" }'await client.files.backends.connectGooglePhotos({ client_id: "google-photos-client-id", client_secret: "google-photos-client-secret", read_size: true, description: "Family photos"});POST /api/v1/backends/hidrive
Section titled “POST /api/v1/backends/hidrive”Connect a HiDrive backend (STRATO).
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
chunk_size | string | No | "50331648" | Chunk size for chunked uploads. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
description | string | No | "" | Description of the remote. |
disable_fetching_member_count | boolean | No | false | Do not fetch number of objects in directories unless necessary. |
encoding | string | No | "33554434" | Backend encoding. |
endpoint | string | No | "https://api.hidrive.strato.com/2.1" | API endpoint URL. |
root_prefix | string | No | "/" | Root/parent folder for all paths. One of /, root, "". |
scope_access | string | No | "rw" | Access permissions. One of rw, ro. |
scope_role | string | No | "user" | User-level. One of user, admin, owner. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
upload_concurrency | integer | No | 4 | Concurrency for chunked uploads. |
upload_cutoff | string | No | "100663296" | Cutoff/threshold for chunked uploads. |
Response
Section titled “Response”{ "data": { "backend_type": "hidrive", "id": "backend_hidrive_8f2a31", "mount_paths": [], "type": "cloud" }, "message": "HiDrive backend connected successfully", "success": true}{ "error": "HiDrive authentication failed", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/hidrive" \ -H "Content-Type: application/json" \ -d '{ "client_id": "hidrive-client-id", "client_secret": "hidrive-client-secret", "scope_access": "rw", "scope_role": "user", "description": "STRATO HiDrive" }'await client.files.backends.connectHidrive({ client_id: "hidrive-client-id", client_secret: "hidrive-client-secret", scope_access: "rw", scope_role: "user", description: "STRATO HiDrive"});POST /api/v1/backends/iclouddrive
Section titled “POST /api/v1/backends/iclouddrive”Connect an iCloud Drive backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
apple_id | string | Yes | "" | Apple ID. |
client_id | string | No | "d39ba9916b7251055b22c7f910e2ea796ee65e98b2ddecea8f5dde8d9d1a815d" | Client id. |
cookies | string | No | "" | Cookies (internal use only). |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50438146" | Backend encoding. |
password | string | Yes | "" | Password. |
trust_token | string | No | "" | Trust token. |
Response
Section titled “Response”{ "data": { "backend_type": "iclouddrive", "id": "backend_icloud_6c14de", "mount_paths": [], "type": "cloud" }, "message": "iCloud Drive backend connected successfully", "success": true}{ "error": "Apple ID and password are required", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/iclouddrive" \ -H "Content-Type: application/json" \ -d '{ "apple_id": "user@icloud.com", "password": "app-specific-password", "description": "Personal iCloud" }'await client.files.backends.connectIclouddrive({ apple_id: "user@icloud.com", password: "app-specific-password", description: "Personal iCloud"});POST /api/v1/backends/jottacloud
Section titled “POST /api/v1/backends/jottacloud”Connect a Jottacloud backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50431886" | Backend encoding. |
hard_delete | boolean | No | false | Delete files permanently instead of putting them in trash. |
md5_memory_limit | string | No | "10485760" | Files larger than this are cached on disk for MD5 calculation. |
no_versions | boolean | No | false | Avoid server-side versioning by recreating files instead of overwriting. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
trashed_only | boolean | No | false | Only show files in the trash. |
upload_resume_limit | string | No | "10485760" | Files larger than this can be resumed if upload fails. |
Response
Section titled “Response”{ "data": { "backend_type": "jottacloud", "id": "backend_jotta_1ab9d2", "mount_paths": [], "type": "cloud" }, "message": "Jottacloud backend connected successfully", "success": true}{ "error": "Invalid Jottacloud OAuth token", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/jottacloud" \ -H "Content-Type: application/json" \ -d '{ "client_id": "jottacloud-client-id", "client_secret": "jottacloud-client-secret", "description": "Personal Jottacloud" }'await client.files.backends.connectJottacloud({ client_id: "jottacloud-client-id", client_secret: "jottacloud-client-secret", description: "Personal Jottacloud"});POST /api/v1/backends/koofr
Section titled “POST /api/v1/backends/koofr”Connect a Koofr, Digi Storage, or other Koofr-compatible provider.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
description | string | No | "" | Description of the remote. |
encoding | string | No | "50438146" | Backend encoding. |
endpoint | string | Yes | "" | The Koofr API endpoint to use. |
mountid | string | No | "" | Mount ID (uses primary mount if omitted). |
password | string | Yes | "" | Your account password. |
provider | string | No | "" | Storage provider. One of koofr, digistorage, other. |
setmtime | boolean | No | true | Whether the backend supports setting modification time. |
user | string | Yes | "" | Your username. |
Response
Section titled “Response”{ "data": { "backend_type": "koofr", "id": "backend_koofr_44a8b1", "mount_paths": [], "type": "cloud" }, "message": "Koofr backend connected successfully", "success": true}{ "error": "user, password, and endpoint are required", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/koofr" \ -H "Content-Type: application/json" \ -d '{ "endpoint": "https://app.koofr.net", "provider": "koofr", "user": "user@example.com", "password": "koofr-app-password", "description": "Personal Koofr" }'await client.files.backends.connectKoofr({ endpoint: "https://app.koofr.net", provider: "koofr", user: "user@example.com", password: "koofr-app-password", description: "Personal Koofr"});POST /api/v1/backends/linkbox
Section titled “POST /api/v1/backends/linkbox”Connect a Linkbox backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
description | string | No | "" | Description of the remote. |
token | string | Yes | "" | Token from https://www.linkbox.to/admin/account. |
Response
Section titled “Response”{ "data": { "backend_type": "linkbox", "id": "backend_linkbox_9e3d20", "mount_paths": [], "type": "cloud" }, "message": "Linkbox backend connected successfully", "success": true}{ "error": "token is required", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/linkbox" \ -H "Content-Type: application/json" \ -d '{ "token": "your-linkbox-token", "description": "Linkbox account" }'await client.files.backends.connectLinkbox({ token: "your-linkbox-token", description: "Linkbox account"});POST /api/v1/backends/mailru
Section titled “POST /api/v1/backends/mailru”Connect a Mail.ru Cloud backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
check_hash | boolean | No | true | What to do if file checksum is mismatched. One of true, false. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50440078" | Backend encoding. |
pass | string | Yes | "" | App password (a normal password will not work). |
quirks | string | No | "" | Comma-separated internal maintenance flags (do not use). |
speedup_enable | boolean | No | true | Skip full upload if another file has the same hash. One of true, false. |
speedup_file_patterns | string | No | "*.mkv,*.avi,*.mp4,*.mp3,*.zip,*.gz,*.rar,*.pdf" | Comma-separated glob patterns eligible for speedup. One of "", *, *.mkv,*.avi,*.mp4,*.mp3, *.zip,*.gz,*.rar,*.pdf. |
speedup_max_disk | string | No | "3221225472" | Disable speedup for files larger than this. One of 0, 1G, 3G. |
speedup_max_memory | string | No | "33554432" | Files larger than this are always hashed on disk. One of 0, 32M, 256M. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
user | string | Yes | "" | User name (usually email). |
user_agent | string | No | "" | HTTP user agent. Defaults to Hoody/VERSION. |
Response
Section titled “Response”{ "data": { "backend_type": "mailru", "id": "backend_mailru_2c7f88", "mount_paths": [], "type": "cloud" }, "message": "Mail.ru Cloud backend connected successfully", "success": true}{ "error": "Mail.ru Cloud authentication failed", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/mailru" \ -H "Content-Type: application/json" \ -d '{ "user": "user@mail.ru", "pass": "mailru-app-password", "description": "Mail.ru Cloud" }'await client.files.backends.connectMailru({ user: "user@mail.ru", pass: "mailru-app-password", description: "Mail.ru Cloud"});POST /api/v1/backends/mega
Section titled “POST /api/v1/backends/mega”Connect a Mega backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
debug | boolean | No | false | Output more debug from Mega (requires -vv). |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50331650" | Backend encoding. |
hard_delete | boolean | No | false | Permanently delete files instead of trashing them. |
pass | string | Yes | "" | Password. |
use_https | boolean | No | false | Use HTTPS for transfers. |
user | string | Yes | "" | User name. |
Response
Section titled “Response”{ "data": { "backend_type": "mega", "id": "backend_mega_77c4a1", "mount_paths": [], "type": "cloud" }, "message": "Mega backend connected successfully", "success": true}{ "error": "Invalid Mega credentials", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/mega" \ -H "Content-Type: application/json" \ -d '{ "user": "user@mega.nz", "pass": "mega-password", "description": "Personal Mega" }'await client.files.backends.connectMega({ user: "user@mega.nz", pass: "mega-password", description: "Personal Mega"});POST /api/v1/backends/onedrive
Section titled “POST /api/v1/backends/onedrive”Connect a Microsoft OneDrive backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
access_scopes | string | No | ["Files.Read","Files.ReadWrite","Files.Read.All","Files.ReadWrite.All","Sites.Read.All","offline_access"] | Scopes requested by Hoody. One of Files.Read Files.ReadWrite Files.Read.All Files.ReadWrite.All Sites.Read.All offline_access, Files.Read Files.Read.All Sites.Read.All offline_access, Files.Read Files.ReadWrite Files.Read.All Files.ReadWrite.All offline_access. |
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
av_override | boolean | No | false | Allow download of files flagged as infected by the server’s anti-virus check. |
chunk_size | string | No | "10485760" | Chunk size for uploads. Must be a multiple of 320 KiB. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
delta | boolean | No | false | Use delta listing for recursive listings (faster at the drive root). |
description | string | No | "" | Description of the remote. |
disable_site_permission | boolean | No | false | Disable request for Sites.Read.All permission. |
drive_id | string | No | "" | The ID of the drive to use. |
drive_type | string | No | "" | Drive type: personal, business, or documentLibrary. |
encoding | string | No | "57386894" | Backend encoding. |
expose_onenote_files | boolean | No | false | Make OneNote files visible in directory listings. |
hard_delete | boolean | No | false | Permanently delete files on removal (OneDrive for Business / SharePoint only). |
hash_type | string | No | "auto" | Hash type in use. One of auto, quickxor, sha1, sha256, crc32, none. |
link_password | string | No | "" | Password for created links (OneDrive personal paid only). |
link_scope | string | No | "anonymous" | Scope of created links. One of anonymous, organization. |
link_type | string | No | "view" | Type of created links. One of view, edit, embed. |
list_chunk | integer | No | 1000 | Size of listing chunk. |
metadata_permissions | string | No | "0" | Permissions metadata access. One of off, read, write, read,write, failok. |
no_versions | boolean | No | false | Remove all versions on modifying operations. |
region | string | No | "global" | National cloud region. One of global, us, de, cn. |
root_folder_id | string | No | "" | ID of the root folder. |
server_side_across_configs | boolean | No | false | Deprecated. Allow server-side operations across OneDrive configs. |
tenant | string | No | "" | Service principal’s tenant (directory) ID. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
Response
Section titled “Response”{ "data": { "backend_type": "onedrive", "id": "backend_onedrive_55f0a2", "mount_paths": [], "type": "cloud" }, "message": "Microsoft OneDrive backend connected successfully", "success": true}{ "error": "Invalid OneDrive OAuth token", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/onedrive" \ -H "Content-Type: application/json" \ -d '{ "client_id": "azure-app-client-id", "client_secret": "azure-app-client-secret", "region": "global", "description": "Work OneDrive" }'await client.files.backends.connectOnedrive({ client_id: "azure-app-client-id", client_secret: "azure-app-client-secret", region: "global", description: "Work OneDrive"});POST /api/v1/backends/opendrive
Section titled “POST /api/v1/backends/opendrive”Connect an OpenDrive backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
chunk_size | string | No | "10485760" | Chunk size for uploads (buffered in memory). |
description | string | No | "" | Description of the remote. |
encoding | string | No | "62007182" | Backend encoding. |
password | string | Yes | "" | Password. |
username | string | Yes | "" | Username. |
Response
Section titled “Response”{ "data": { "backend_type": "opendrive", "id": "backend_opendrive_64c09f", "mount_paths": [], "type": "cloud" }, "message": "OpenDrive backend connected successfully", "success": true}{ "error": "username and password are required", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/opendrive" \ -H "Content-Type: application/json" \ -d '{ "username": "opendrive-user", "password": "opendrive-password", "description": "OpenDrive account" }'await client.files.backends.connectOpendrive({ username: "opendrive-user", password: "opendrive-password", description: "OpenDrive account"});POST /api/v1/backends/pcloud
Section titled “POST /api/v1/backends/pcloud”Connect a Pcloud backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50438146" | Backend encoding. |
hostname | string | No | "api.pcloud.com" | Pcloud hostname. One of api.pcloud.com, eapi.pcloud.com. |
password | string | No | "" | Your pcloud password. |
root_folder_id | string | No | "d0" | Folder ID to use as the root for Hoody. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
username | string | No | "" | Your pcloud username (required only for the cleanup command). |
Response
Section titled “Response”{ "data": { "backend_type": "pcloud", "id": "backend_pcloud_19b6cc", "mount_paths": [], "type": "cloud" }, "message": "Pcloud backend connected successfully", "success": true}{ "error": "Invalid Pcloud OAuth token", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/pcloud" \ -H "Content-Type: application/json" \ -d '{ "client_id": "pcloud-client-id", "client_secret": "pcloud-client-secret", "hostname": "api.pcloud.com", "description": "Personal Pcloud" }'await client.files.backends.connectPcloud({ client_id: "pcloud-client-id", client_secret: "pcloud-client-secret", hostname: "api.pcloud.com", description: "Personal Pcloud"});POST /api/v1/backends/pikpak
Section titled “POST /api/v1/backends/pikpak”Connect a PikPak backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
chunk_size | string | No | "5242880" | Chunk size for multipart uploads. |
description | string | No | "" | Description of the remote. |
device_id | string | No | "" | Device ID used for authorization. |
encoding | string | No | "56829838" | Backend encoding. |
hash_memory_limit | string | No | "10485760" | Files larger than this are cached on disk for hashing. |
no_media_link | boolean | No | false | Use original file links instead of media links. |
pass | string | Yes | "" | PikPak password. |
root_folder_id | string | No | "" | ID of the root folder. Leave blank normally. |
trashed_only | boolean | No | false | Only show files in the trash. |
upload_concurrency | integer | No | 5 | Concurrency for multipart uploads. |
use_trash | boolean | No | true | Send files to trash instead of deleting permanently. |
user | string | Yes | "" | PikPak username. |
user_agent | string | No | "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0" | HTTP user agent for PikPak. |
Response
Section titled “Response”{ "data": { "backend_type": "pikpak", "id": "backend_pikpak_d0e5f3", "mount_paths": [], "type": "cloud" }, "message": "PikPak backend connected successfully", "success": true}{ "error": "PikPak authentication failed", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/pikpak" \ -H "Content-Type: application/json" \ -d '{ "user": "user@pikpak.com", "pass": "pikpak-password", "description": "Personal PikPak" }'await client.files.backends.connectPikpak({ user: "user@pikpak.com", pass: "pikpak-password", description: "Personal PikPak"});POST /api/v1/backends/pixeldrain
Section titled “POST /api/v1/backends/pixeldrain”Connect a Pixeldrain Filesystem backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
api_key | string | No | "" | API key from https://pixeldrain.com/user/api_keys. |
api_url | string | Yes | "https://pixeldrain.com/api" | Pixeldrain API endpoint. |
description | string | No | "" | Description of the remote. |
root_folder_id | string | No | "me" | Root of the filesystem. Set to me for personal or a shared directory ID. |
Response
Section titled “Response”{ "data": { "backend_type": "pixeldrain", "id": "backend_pixeldrain_39ad71", "mount_paths": [], "type": "cloud" }, "message": "Pixeldrain Filesystem backend connected successfully", "success": true}{ "error": "Invalid Pixeldrain API key", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/pixeldrain" \ -H "Content-Type: application/json" \ -d '{ "api_url": "https://pixeldrain.com/api", "api_key": "your-pixeldrain-api-key", "description": "Personal Pixeldrain" }'await client.files.backends.connectPixeldrain({ api_url: "https://pixeldrain.com/api", api_key: "your-pixeldrain-api-key", description: "Personal Pixeldrain"});POST /api/v1/backends/premiumizeme
Section titled “POST /api/v1/backends/premiumizeme”Connect a premiumize.me backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
api_key | string | No | "" | API key. Not normally used (OAuth is preferred). |
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50438154" | Backend encoding. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
Response
Section titled “Response”{ "data": { "backend_type": "premiumizeme", "id": "backend_premiumizeme_b2c4ee", "mount_paths": [], "type": "cloud" }, "message": "premiumize.me backend connected successfully", "success": true}{ "error": "Invalid premiumize.me credentials", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/premiumizeme" \ -H "Content-Type: application/json" \ -d '{ "client_id": "premiumizeme-client-id", "client_secret": "premiumizeme-client-secret", "description": "premiumize.me" }'await client.files.backends.connectPremiumizeme({ client_id: "premiumizeme-client-id", client_secret: "premiumizeme-client-secret", description: "premiumize.me"});POST /api/v1/backends/protondrive
Section titled “POST /api/v1/backends/protondrive”Connect a Proton Drive backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
2fa | string | No | "" | 2FA code if the Proton account has 2FA enabled. |
app_version | string | No | "macos-drive@1.0.0-alpha.1+hoody-vfs" | App version string sent with every API request. |
client_access_token | string | No | "" | Client access token (internal use only). |
client_refresh_token | string | No | "" | Client refresh token (internal use only). |
client_salted_key_pass | string | No | "" | Client salted key pass (internal use only). |
client_uid | string | No | "" | Client UID (internal use only). |
description | string | No | "" | Description of the remote. |
enable_caching | boolean | No | true | Cache files/folders metadata to reduce API calls. Disable for VFS use. |
encoding | string | No | "52559874" | Backend encoding. |
mailbox_password | string | No | "" | Mailbox password (for two-password Proton accounts). |
original_file_size | boolean | No | true | Return the file size before encryption. |
password | string | Yes | "" | Your Proton account password. |
replace_existing_draft | boolean | No | false | Replace an existing draft when filename conflict is detected. |
username | string | Yes | "" | Your Proton username. |
Response
Section titled “Response”{ "data": { "backend_type": "protondrive", "id": "backend_proton_a83f0e", "mount_paths": [], "type": "cloud" }, "message": "Proton Drive backend connected successfully", "success": true}{ "error": "Proton Drive authentication failed", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/protondrive" \ -H "Content-Type: application/json" \ -d '{ "username": "user@proton.me", "password": "proton-password", "enable_caching": true, "description": "Personal Proton Drive" }'await client.files.backends.connectProtondrive({ username: "user@proton.me", password: "proton-password", enable_caching: true, description: "Personal Proton Drive"});POST /api/v1/backends/putio
Section titled “POST /api/v1/backends/putio”Connect a Put.io backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50438146" | Backend encoding. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
Response
Section titled “Response”{ "data": { "backend_type": "putio", "id": "backend_putio_4f7d12", "mount_paths": [], "type": "cloud" }, "message": "Put.io backend connected successfully", "success": true}{ "error": "Invalid Put.io OAuth token", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/putio" \ -H "Content-Type: application/json" \ -d '{ "client_id": "putio-client-id", "client_secret": "putio-client-secret", "description": "Personal Put.io" }'await client.files.backends.connectPutio({ client_id: "putio-client-id", client_secret: "putio-client-secret", description: "Personal Put.io"});POST /api/v1/backends/quatrix
Section titled “POST /api/v1/backends/quatrix”Connect a Quatrix by Maytech backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
api_key | string | Yes | "" | API key for accessing the Quatrix account. |
description | string | No | "" | Description of the remote. |
effective_upload_time | string | No | "4s" | Wanted upload time for one chunk. |
encoding | string | No | "50438146" | Backend encoding. |
hard_delete | boolean | No | false | Delete files permanently instead of trashing them. |
host | string | Yes | "" | Host name of the Quatrix account. |
maximal_summary_chunk_size | string | No | "100000000" | Max summary size for all chunks. |
minimal_chunk_size | string | No | "10000000" | Minimal size for one chunk. |
skip_project_folders | boolean | No | false | Skip project folders in operations. |
Response
Section titled “Response”{ "data": { "backend_type": "quatrix", "id": "backend_quatrix_6b91c3", "mount_paths": [], "type": "cloud" }, "message": "Quatrix backend connected successfully", "success": true}{ "error": "api_key and host are required", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/quatrix" \ -H "Content-Type: application/json" \ -d '{ "api_key": "your-quatrix-api-key", "host": "your-account.quatrix.com", "description": "Quatrix workspace" }'await client.files.backends.connectQuatrix({ api_key: "your-quatrix-api-key", host: "your-account.quatrix.com", description: "Quatrix workspace"});POST /api/v1/backends/seafile
Section titled “POST /api/v1/backends/seafile”Connect a Seafile backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
2fa | boolean | No | false | Set to true if the account has 2FA enabled. |
auth_token | string | No | "" | Authentication token. |
create_library | boolean | No | false | Create a library if it does not exist. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "16850954" | Backend encoding. |
library | string | No | "" | Name of the library. Leave blank for all non-encrypted libraries. |
library_key | string | No | "" | Library password (encrypted libraries only). |
pass | string | No | "" | Password. |
url | string | Yes | "" | URL of the Seafile host. One of https://cloud.seafile.com/. |
user | string | Yes | "" | User name (usually email address). |
Response
Section titled “Response”{ "data": { "backend_type": "seafile", "id": "backend_seafile_d52e87", "mount_paths": [], "type": "cloud" }, "message": "seafile backend connected successfully", "success": true}{ "error": "url and user are required", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/seafile" \ -H "Content-Type: application/json" \ -d '{ "url": "https://cloud.seafile.com/", "user": "user@example.com", "pass": "seafile-password", "description": "Personal Seafile" }'await client.files.backends.connectSeafile({ url: "https://cloud.seafile.com/", user: "user@example.com", pass: "seafile-password", description: "Personal Seafile"});POST /api/v1/backends/sharefile
Section titled “POST /api/v1/backends/sharefile”Connect a Citrix Sharefile backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
chunk_size | string | No | "67108864" | Upload chunk size. Must be a power of 2, at least 256k. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "57091982" | Backend encoding. |
endpoint | string | No | "" | Endpoint for API calls. Auto-discovered during OAuth. |
root_folder_id | string | No | "" | ID of the root folder. One of "", favorites, allshared, connectors, top. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
upload_cutoff | string | No | "134217728" | Cutoff for switching to multipart upload. |
Response
Section titled “Response”{ "data": { "backend_type": "sharefile", "id": "backend_sharefile_e71c44", "mount_paths": [], "type": "cloud" }, "message": "Citrix Sharefile backend connected successfully", "success": true}{ "error": "Invalid Citrix Sharefile credentials", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/sharefile" \ -H "Content-Type: application/json" \ -d '{ "client_id": "sharefile-client-id", "client_secret": "sharefile-client-secret", "root_folder_id": "top", "description": "Sharefile workspace" }'await client.files.backends.connectSharefile({ client_id: "sharefile-client-id", client_secret: "sharefile-client-secret", root_folder_id: "top", description: "Sharefile workspace"});POST /api/v1/backends/sugarsync
Section titled “POST /api/v1/backends/sugarsync”Connect a Sugarsync backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
access_key_id | string | No | "" | Sugarsync Access Key ID. Leave blank to use Hoody’s. |
app_id | string | No | "" | Sugarsync App ID. Leave blank to use Hoody’s. |
authorization | string | No | "" | Sugarsync authorization. Auto-configured by Hoody. |
authorization_expiry | string | No | "" | Sugarsync authorization expiry. Auto-configured by Hoody. |
deleted_id | string | No | "" | Sugarsync deleted folder id. Auto-configured by Hoody. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50397186" | Backend encoding. |
hard_delete | boolean | No | false | Permanently delete files; otherwise put them in the deleted files folder. |
private_access_key | string | No | "" | Sugarsync Private Access Key. Leave blank to use Hoody’s. |
refresh_token | string | No | "" | Sugarsync refresh token. Auto-configured by Hoody. |
root_id | string | No | "" | Sugarsync root id. Auto-configured by Hoody. |
user | string | No | "" | Sugarsync user. Auto-configured by Hoody. |
Response
Section titled “Response”{ "data": { "backend_type": "sugarsync", "id": "backend_sugarsync_1d8b3f", "mount_paths": [], "type": "cloud" }, "message": "Sugarsync backend connected successfully", "success": true}{ "error": "Invalid Sugarsync credentials", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/sugarsync" \ -H "Content-Type: application/json" \ -d '{ "access_key_id": "your-access-key", "private_access_key": "your-private-key", "app_id": "your-app-id", "description": "Personal Sugarsync" }'await client.files.backends.connectSugarsync({ access_key_id: "your-access-key", private_access_key: "your-private-key", app_id: "your-app-id", description: "Personal Sugarsync"});POST /api/v1/backends/ulozto
Section titled “POST /api/v1/backends/ulozto”Connect a Uloz.to backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
app_token | string | No | "" | Application token identifying the app (API key). |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50438146" | Backend encoding. |
list_page_size | integer | No | 500 | Size of a single page for list commands (1-500). |
password | string | No | "" | Password for the user. |
root_folder_slug | string | No | "" | Folder slug to use as the root for all operations. |
username | string | No | "" | Username of the principal to operate as. |
Response
Section titled “Response”{ "data": { "backend_type": "ulozto", "id": "backend_ulozto_22fbb0", "mount_paths": [], "type": "cloud" }, "message": "Uloz.to backend connected successfully", "success": true}{ "error": "Invalid Uloz.to credentials", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/ulozto" \ -H "Content-Type: application/json" \ -d '{ "app_token": "your-ulozto-app-token", "username": "uloz-user", "password": "uloz-password", "description": "Uloz.to account" }'await client.files.backends.connectUlozto({ app_token: "your-ulozto-app-token", username: "uloz-user", password: "uloz-password", description: "Uloz.to account"});POST /api/v1/backends/uptobox
Section titled “POST /api/v1/backends/uptobox”Connect an Uptobox backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
access_token | string | No | "" | Access token from https://uptobox.com/my_account. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50561070" | Backend encoding. |
private | boolean | No | false | Make uploaded files private. |
Response
Section titled “Response”{ "data": { "backend_type": "uptobox", "id": "backend_uptobox_c44a17", "mount_paths": [], "type": "cloud" }, "message": "Uptobox backend connected successfully", "success": true}{ "error": "Invalid Uptobox access token", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/uptobox" \ -H "Content-Type: application/json" \ -d '{ "access_token": "your-uptobox-access-token", "private": false, "description": "Uptobox account" }'await client.files.backends.connectUptobox({ access_token: "your-uptobox-access-token", private: false, description: "Uptobox account"});POST /api/v1/backends/yandex
Section titled “POST /api/v1/backends/yandex”Connect a Yandex Disk backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50429954" | Backend encoding. |
hard_delete | boolean | No | false | Delete files permanently instead of trashing them. |
spoof_ua | boolean | No | true | Spoof the user agent to match an official Yandex Disk client. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
Response
Section titled “Response”{ "data": { "backend_type": "yandex", "id": "backend_yandex_9c2d65", "mount_paths": [], "type": "cloud" }, "message": "Yandex Disk backend connected successfully", "success": true}{ "error": "Invalid Yandex Disk OAuth token", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/yandex" \ -H "Content-Type: application/json" \ -d '{ "client_id": "yandex-client-id", "client_secret": "yandex-client-secret", "description": "Personal Yandex Disk" }'await client.files.backends.connectYandex({ client_id: "yandex-client-id", client_secret: "yandex-client-secret", description: "Personal Yandex Disk"});POST /api/v1/backends/zoho
Section titled “POST /api/v1/backends/zoho”Connect a Zoho backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank for defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "16875520" | Backend encoding. |
region | string | No | "" | Zoho region. One of com, eu, in, jp, com.cn, com.au. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. |
upload_cutoff | string | No | "10485760" | Cutoff for switching to the large file upload API (at least 10 MiB). |
Response
Section titled “Response”{ "data": { "backend_type": "zoho", "id": "backend_zoho_3f0ab9", "mount_paths": [], "type": "cloud" }, "message": "Zoho backend connected successfully", "success": true}{ "error": "Invalid Zoho OAuth token", "success": false}curl -X POST "https://prj-abc123-cnt-xyz789-files-1.us-east-1.containers.hoody.icu/api/v1/backends/zoho" \ -H "Content-Type: application/json" \ -d '{ "client_id": "zoho-client-id", "client_secret": "zoho-client-secret", "region": "com", "description": "Work Zoho WorkDrive" }'await client.files.backends.connectZoho({ client_id: "zoho-client-id", client_secret: "zoho-client-secret", region: "com", description: "Work Zoho WorkDrive"});