Connect cloud storage backends — Google Drive, Dropbox, OneDrive, iCloud, and more. Use these endpoints to register a cloud storage provider with Hoody so it can be mounted into the virtual filesystem. Each provider exposes its own POST /api/v1/backends/{provider} endpoint that accepts a provider-specific configuration object in the request body.
Productivity & Document Storage
Section titled “Productivity & Document Storage”POST /api/v1/backends/box
Section titled “POST /api/v1/backends/box”Connect a Box backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Field | 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 ~ is 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" | The encoding for the backend. |
impersonate | string | No | "" | Impersonate this user ID 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" | Use a non-root folder as the starting point. |
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 (≥ 50 MiB). |
{ "client_id": "your-box-client-id", "client_secret": "your-box-client-secret", "box_sub_type": "user", "description": "Personal Box account", "root_folder_id": "0"}curl -X POST https://api.hoody.com/api/v1/backends/box \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-box-client-id", "client_secret": "your-box-client-secret", "box_sub_type": "user" }'await client.files.backends.connectBox({ client_id: "your-box-client-id", client_secret: "your-box-client-secret", box_sub_type: "user"});{ "data": { "backend_type": "box", "id": "bk_8a3f2c1d4e5b6789", "mount_paths": [], "type": "cloud" }, "message": "Box backend connected successfully", "success": true}{ "error": "Invalid Box credentials", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
acknowledge_abuse | boolean | No | false | Allow downloading files flagged with cannotDownloadAbusiveFile. |
allow_import_name_change | boolean | No | false | Allow the filetype to change when uploading Google docs. |
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 to use the provider defaults. |
chunk_size | string | No | "8388608" | Upload chunk size. Must be a power of 2 ≥ 256 KiB. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | Google Application Client Id (recommended for performance). |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
copy_shortcut_content | boolean | No | false | Server-side copy contents of shortcuts instead of the shortcut itself. |
description | string | No | "" | Description of the remote. |
disable_http2 | boolean | No | true | Disable HTTP/2 (workaround for an unresolved issue with Google Drive). |
encoding | string | No | "16777216" | The encoding for the backend. |
env_auth | boolean | No | false | Get IAM credentials from runtime (environment or instance metadata). |
export_formats | string | No | "docx,xlsx,pptx,svg" | Comma-separated list of preferred export formats for Google docs. |
fast_list_bug_fix | boolean | No | true | Work around a bug in Google Drive listing with --fast-list. |
formats | string | No | "" | Deprecated: see export_formats. |
impersonate | string | No | "" | Impersonate this user when using a service account. |
import_formats | string | No | "" | Comma-separated list of preferred import formats for 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" | Control label read/write: off, read, write, failok, or read,write. |
metadata_owner | string | No | "1" | Control owner read/write: off, read, write, failok, or read,write. |
metadata_permissions | string | No | "0" | Control permissions read/write: off, read, write, failok, or read,write. |
pacer_burst | integer | No | 100 | Number of API calls to allow without sleeping. |
pacer_min_sleep | integer | No | 0 | Minimum time to sleep between API calls, in 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 | "" | Scopes to request: drive, drive.readonly, drive.file, drive.appfolder, or drive.metadata.readonly. |
server_side_across_configs | boolean | No | false | Deprecated: use --server-side-across-configs instead. |
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 that are shared with me. |
show_all_gdocs | boolean | No | false | Show all Google Docs including non-exportable ones in listings. |
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 only. |
skip_dangling_shortcuts | boolean | No | false | Skip dangling shortcut files. |
skip_gdocs | boolean | No | false | Skip Google documents 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. Leave blank to use the provider defaults. |
trashed_only | boolean | No | false | Only show files that are 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 the trash instead of deleting permanently. |
v2_download_min_size | string | No | "-1" | If objects are greater, use Drive v2 API to download. |
{ "client_id": "your-google-client-id.apps.googleusercontent.com", "client_secret": "your-google-client-secret", "scope": "drive", "description": "Work Google Drive"}curl -X POST https://api.hoody.com/api/v1/backends/drive \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-google-client-id.apps.googleusercontent.com", "client_secret": "your-google-client-secret", "scope": "drive" }'await client.files.backends.connectDrive({ client_id: "your-google-client-id.apps.googleusercontent.com", client_secret: "your-google-client-secret", scope: "drive"});{ "data": { "backend_type": "drive", "id": "bk_9b4d3e2f5a6c7890", "mount_paths": [], "type": "cloud" }, "message": "Google Drive backend connected successfully", "success": true}{ "error": "OAuth flow failed: invalid_client", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
batch_commit_timeout | integer | No | 600 | Max time to wait for a batch to finish committing, in seconds. |
batch_mode | string | No | "sync" | Upload file batching: sync, async, or off. |
batch_size | integer | No | 0 | Max number of files in upload batch (must be < 1000). |
batch_timeout | integer | No | 0 | Max time to allow an idle upload batch before uploading, in seconds. |
chunk_size | string | No | "50331648" | Upload chunk size (< 150 MiB). |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "52469762" | The encoding for the backend. |
impersonate | string | No | "" | Impersonate this user when using a business account. |
pacer_min_sleep | integer | No | 0 | Minimum time to sleep between API calls, in seconds. |
root_namespace | string | No | "" | Specify a different Dropbox namespace ID as the root. |
shared_files | boolean | No | false | Work on individual shared files (read-only mode). |
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. Leave blank to use the provider defaults. |
{ "client_id": "your-dropbox-app-key", "client_secret": "your-dropbox-app-secret", "batch_mode": "sync", "description": "Personal Dropbox"}curl -X POST https://api.hoody.com/api/v1/backends/dropbox \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-dropbox-app-key", "client_secret": "your-dropbox-app-secret", "batch_mode": "sync" }'await client.files.backends.connectDropbox({ client_id: "your-dropbox-app-key", client_secret: "your-dropbox-app-secret", batch_mode: "sync"});{ "data": { "backend_type": "dropbox", "id": "bk_0c5e4f3a6b7d8901", "mount_paths": [], "type": "cloud" }, "message": "Dropbox backend connected successfully", "success": true}{ "error": "Invalid Dropbox app credentials", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
batch_commit_timeout | integer | No | 600 | Max time to wait for a batch to finish committing, in seconds. |
batch_mode | string | No | "sync" | Upload file batching: sync, async, or off. |
batch_size | integer | No | 0 | Max number of files in upload batch (must be < 50). |
batch_timeout | integer | No | 0 | Max time to allow an idle upload batch before uploading, in seconds. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50348034" | The encoding for the backend. |
include_archived | boolean | No | false | Also view and download archived media. |
proxy | string | No | "" | Use the gphotosdl proxy for downloading full resolution images. |
read_only | boolean | No | false | Request read-only access to your photos. |
read_size | boolean | No | false | Read the size of media items. |
start_year | integer | No | 2000 | Limit photos to those uploaded after the given year. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. Leave blank to use the provider defaults. |
{ "client_id": "your-google-client-id.apps.googleusercontent.com", "read_only": true, "start_year": 2020}curl -X POST https://api.hoody.com/api/v1/backends/google-photos \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-google-client-id.apps.googleusercontent.com", "read_only": true, "start_year": 2020 }'await client.files.backends.connectGooglePhotos({ client_id: "your-google-client-id.apps.googleusercontent.com", read_only: true, start_year: 2020});{ "data": { "backend_type": "google photos", "id": "bk_1d6f5a4b7c8e9012", "mount_paths": [], "type": "cloud" }, "message": "Google Photos backend connected successfully", "success": true}{ "error": "Google Photos scope not granted", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
access_scopes | string | No | "Files.Read Files.ReadWrite Files.Read.All Files.ReadWrite.All Sites.Read.All offline_access" | Space-separated list of scopes to request. |
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
av_override | boolean | No | false | Allow download of files the server thinks has a virus. |
chunk_size | string | No | "10485760" | Chunk size to upload files with — 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. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
delta | boolean | No | false | Use delta listing to implement recursive listings. |
description | string | No | "" | Description of the remote. |
disable_site_permission | boolean | No | false | Disable the request for Sites.Read.All permission. |
drive_id | string | No | "" | The ID of the drive to use. |
drive_type | string | No | "" | The type of the drive (personal, business, or documentLibrary). |
encoding | string | No | "57386894" | The encoding for the backend. |
expose_onenote_files | boolean | No | false | Make OneNote files show up in directory listings. |
hard_delete | boolean | No | false | Permanently delete files on removal. |
hash_type | string | No | "auto" | Hash type: auto, quickxor, sha1, sha256, crc32, or none. |
link_password | string | No | "" | Password for links created by the link command. |
link_scope | string | No | "anonymous" | Scope of links: anonymous or organization. |
link_type | string | No | "view" | Type of links: view, edit, or embed. |
list_chunk | integer | No | 1000 | Size of listing chunk. |
metadata_permissions | string | No | "0" | Control permissions metadata: off, read, write, read,write, or failok. |
no_versions | boolean | No | false | Remove all versions on modifying operations. |
region | string | No | "global" | National cloud region: global, us, de, or cn. |
root_folder_id | string | No | "" | ID of the root folder. Leave blank normally. |
server_side_across_configs | boolean | No | false | Deprecated: use --server-side-across-configs. |
tenant | string | No | "" | ID of the service principal’s tenant. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. Leave blank to use the provider defaults. |
{ "client_id": "your-azure-app-id", "client_secret": "your-azure-app-secret", "region": "global", "drive_type": "personal"}curl -X POST https://api.hoody.com/api/v1/backends/onedrive \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-azure-app-id", "client_secret": "your-azure-app-secret", "region": "global", "drive_type": "personal" }'await client.files.backends.connectOnedrive({ client_id: "your-azure-app-id", client_secret: "your-azure-app-secret", region: "global", drive_type: "personal"});{ "data": { "backend_type": "onedrive", "id": "bk_2e7a6b5c8d9f0123", "mount_paths": [], "type": "cloud" }, "message": "OneDrive backend connected successfully", "success": true}{ "error": "Microsoft Graph authorization failed", "success": false}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”| Field | 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" | The encoding for the backend. |
password | string | Yes | "" | Password. |
trust_token | string | No | "" | Trust token (internal use). |
{ "apple_id": "user@icloud.com", "password": "app-specific-password"}curl -X POST https://api.hoody.com/api/v1/backends/iclouddrive \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "apple_id": "user@icloud.com", "password": "app-specific-password" }'await client.files.backends.connectIclouddrive({ apple_id: "user@icloud.com", password: "app-specific-password"});{ "data": { "backend_type": "iclouddrive", "id": "bk_3f8b7c6d9e0a1234", "mount_paths": [], "type": "cloud" }, "message": "iCloud Drive backend connected successfully", "success": true}{ "error": "Apple ID authentication failed (verification code required)", "success": false}Cloud Drives
Section titled “Cloud Drives”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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50438146" | The encoding for the backend. |
hostname | string | No | "api.pcloud.com" | Hostname to connect to. Set to api.pcloud.com or eapi.pcloud.com. |
password | string | No | "" | Your pCloud password. |
root_folder_id | string | No | "d0" | Use a non-root folder as the starting point. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. Leave blank to use the provider defaults. |
username | string | No | "" | Your pCloud username. Required only for the cleanup command. |
{ "username": "user@pcloud.com", "password": "pcloud-password", "hostname": "api.pcloud.com"}curl -X POST https://api.hoody.com/api/v1/backends/pcloud \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "username": "user@pcloud.com", "password": "pcloud-password", "hostname": "api.pcloud.com" }'await client.files.backends.connectPcloud({ username: "user@pcloud.com", password: "pcloud-password", hostname: "api.pcloud.com"});{ "data": { "backend_type": "pcloud", "id": "bk_4a9c8d7e0f1b2345", "mount_paths": [], "type": "cloud" }, "message": "pCloud backend connected successfully", "success": true}{ "error": "pCloud authentication failed", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50429954" | The encoding for the backend. |
hard_delete | boolean | No | false | Delete files permanently rather than putting them into the trash. |
spoof_ua | boolean | No | true | Set the user agent to match the official Yandex Disk client. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. Leave blank to use the provider defaults. |
{ "client_id": "your-yandex-client-id", "client_secret": "your-yandex-client-secret", "hard_delete": false}curl -X POST https://api.hoody.com/api/v1/backends/yandex \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-yandex-client-id", "client_secret": "your-yandex-client-secret" }'await client.files.backends.connectYandex({ client_id: "your-yandex-client-id", client_secret: "your-yandex-client-secret"});{ "data": { "backend_type": "yandex", "id": "bk_5b0d9e8f1a2c3456", "mount_paths": [], "type": "cloud" }, "message": "Yandex Disk backend connected successfully", "success": true}{ "error": "Yandex OAuth token invalid", "success": false}POST /api/v1/backends/hidrive
Section titled “POST /api/v1/backends/hidrive”Connect a HiDrive backend.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider 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. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
description | string | No | "" | Description of the remote. |
disable_fetching_member_count | boolean | No | false | Do not fetch the number of objects in directories unless necessary. |
encoding | string | No | "33554434" | The encoding for the backend. |
endpoint | string | No | "https://api.hidrive.strato.com/2.1" | Endpoint for the service. |
root_prefix | string | No | "/" | Root/parent folder for all paths: /, root, or empty. |
scope_access | string | No | "rw" | Access permissions: rw or ro. |
scope_role | string | No | "user" | User-level: user, admin, or owner. |
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_concurrency | integer | No | 4 | Concurrency for chunked uploads. |
upload_cutoff | string | No | "100663296" | Cutoff/threshold for chunked uploads. |
{ "client_id": "your-hidrive-client-id", "client_secret": "your-hidrive-client-secret", "scope_access": "rw", "scope_role": "user"}curl -X POST https://api.hoody.com/api/v1/backends/hidrive \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-hidrive-client-id", "client_secret": "your-hidrive-client-secret", "scope_access": "rw" }'await client.files.backends.connectHidrive({ client_id: "your-hidrive-client-id", client_secret: "your-hidrive-client-secret", scope_access: "rw"});{ "data": { "backend_type": "hidrive", "id": "bk_6c1e0f9a2b3d4567", "mount_paths": [], "type": "cloud" }, "message": "HiDrive backend connected successfully", "success": true}{ "error": "HiDrive authentication failed", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50431886" | The encoding for the backend. |
hard_delete | boolean | No | false | Delete files permanently rather than putting them into the trash. |
md5_memory_limit | string | No | "10485760" | Files bigger than this will be cached on disk to calculate MD5. |
no_versions | boolean | No | false | Avoid server-side versioning by deleting and recreating files. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. Leave blank to use the provider defaults. |
trashed_only | boolean | No | false | Only show files that are in the trash. |
upload_resume_limit | string | No | "10485760" | Files bigger than this can be resumed if the upload fails. |
{ "client_id": "your-jottacloud-client-id", "client_secret": "your-jottacloud-client-secret"}curl -X POST https://api.hoody.com/api/v1/backends/jottacloud \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-jottacloud-client-id", "client_secret": "your-jottacloud-client-secret" }'await client.files.backends.connectJottacloud({ client_id: "your-jottacloud-client-id", client_secret: "your-jottacloud-client-secret"});{ "data": { "backend_type": "jottacloud", "id": "bk_7d2f1a0b3c4e5678", "mount_paths": [], "type": "cloud" }, "message": "Jottacloud backend connected successfully", "success": true}{ "error": "Jottacloud login failed", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
chunk_size | string | No | "10485760" | Files will be uploaded in chunks this size. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "62007182" | The encoding for the backend. |
password | string | Yes | "" | Password. |
username | string | Yes | "" | Username. |
{ "username": "openuser", "password": "openpassword"}curl -X POST https://api.hoody.com/api/v1/backends/opendrive \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "username": "openuser", "password": "openpassword" }'await client.files.backends.connectOpendrive({ username: "openuser", password: "openpassword"});{ "data": { "backend_type": "opendrive", "id": "bk_8e3a2b1c4d5f6789", "mount_paths": [], "type": "cloud" }, "message": "OpenDrive backend connected successfully", "success": true}{ "error": "OpenDrive authentication failed", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
check_hash | boolean | No | true | What copy should do if file checksum is mismatched or invalid. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50440078" | The encoding for the backend. |
pass | string | Yes | "" | Password — must be an app password. |
quirks | string | No | "" | Comma-separated list of internal maintenance flags. |
speedup_enable | boolean | No | true | Skip full upload if another file has the same data hash. |
speedup_file_patterns | string | No | "*.mkv,*.avi,*.mp4,*.mp3,*.zip,*.gz,*.rar,*.pdf" | File name patterns eligible for speedup (put by hash). |
speedup_max_disk | string | No | "3221225472" | Disable speedup (put by hash) for large files to save memory/disk. |
speedup_max_memory | string | No | "33554432" | Files larger than this will always be hashed on disk. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. Leave blank to use the provider defaults. |
user | string | Yes | "" | User name (usually email). |
user_agent | string | No | "" | HTTP user agent used internally by client. |
{ "user": "user@mail.ru", "pass": "app-password"}curl -X POST https://api.hoody.com/api/v1/backends/mailru \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "user": "user@mail.ru", "pass": "app-password" }'await client.files.backends.connectMailru({ user: "user@mail.ru", pass: "app-password"});{ "data": { "backend_type": "mailru", "id": "bk_9f4b3c2d5e6a7890", "mount_paths": [], "type": "cloud" }, "message": "Mail.ru Cloud backend connected successfully", "success": true}{ "error": "Mail.ru requires an app password, not the account password", "success": false}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”| Field | 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" | The encoding for the backend. |
hard_delete | boolean | No | false | Delete files permanently rather than putting them into the trash. |
pass | string | Yes | "" | Password. |
use_https | boolean | No | false | Use HTTPS for transfers (may help when ISPs throttle HTTP). |
user | string | Yes | "" | User name. |
{ "user": "user@mega.nz", "pass": "mega-password", "use_https": true}curl -X POST https://api.hoody.com/api/v1/backends/mega \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "user": "user@mega.nz", "pass": "mega-password", "use_https": true }'await client.files.backends.connectMega({ user: "user@mega.nz", pass: "mega-password", use_https: true});{ "data": { "backend_type": "mega", "id": "bk_0a5c4d3e6f7b8901", "mount_paths": [], "type": "cloud" }, "message": "Mega backend connected successfully", "success": true}{ "error": "Mega login failed", "success": false}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”| Field | 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" | The encoding for the backend. |
hash_memory_limit | string | No | "10485760" | Files bigger than this will be cached on disk to calculate hash. |
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 that are in the trash. |
upload_concurrency | integer | No | 5 | Concurrency for multipart uploads. |
use_trash | boolean | No | true | Send files to the 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. |
{ "user": "user@pikpak.com", "pass": "pikpak-password", "use_trash": true}curl -X POST https://api.hoody.com/api/v1/backends/pikpak \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "user": "user@pikpak.com", "pass": "pikpak-password" }'await client.files.backends.connectPikpak({ user: "user@pikpak.com", pass: "pikpak-password"});{ "data": { "backend_type": "pikpak", "id": "bk_1b6d5e4f7a8c9012", "mount_paths": [], "type": "cloud" }, "message": "PikPak backend connected successfully", "success": true}{ "error": "PikPak authentication failed", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
2fa | string | No | "" | The 2FA code if the account has two-factor authentication enabled. |
app_version | string | No | "macos-drive@1.0.0-alpha.1+hoody-vfs" | The app version string sent with every API request. |
client_access_token | string | No | "" | Client access token key (internal use only). |
client_refresh_token | string | No | "" | Client refresh token key (internal use only). |
client_salted_key_pass | string | No | "" | Client salted key pass key (internal use only). |
client_uid | string | No | "" | Client uid key (internal use only). |
description | string | No | "" | Description of the remote. |
enable_caching | boolean | No | true | Cache file and folder metadata to reduce API calls. |
encoding | string | No | "52559874" | The encoding for the backend. |
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 | "" | The password of your Proton account. |
replace_existing_draft | boolean | No | false | Create a new revision when a filename conflict is detected. |
username | string | Yes | "" | The username of your Proton account. |
{ "username": "user@proton.me", "password": "proton-password", "2fa": "123456"}curl -X POST https://api.hoody.com/api/v1/backends/protondrive \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "username": "user@proton.me", "password": "proton-password", "2fa": "123456" }'await client.files.backends.connectProtondrive({ username: "user@proton.me", password: "proton-password", "2fa": "123456"});{ "data": { "backend_type": "protondrive", "id": "bk_2c7e6f5a8b9d0123", "mount_paths": [], "type": "cloud" }, "message": "Proton Drive backend connected successfully", "success": true}{ "error": "Proton Drive 2FA code invalid or expired", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50438146" | The encoding for the backend. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. Leave blank to use the provider defaults. |
{ "client_id": "your-putio-client-id", "client_secret": "your-putio-client-secret"}curl -X POST https://api.hoody.com/api/v1/backends/putio \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-putio-client-id", "client_secret": "your-putio-client-secret" }'await client.files.backends.connectPutio({ client_id: "your-putio-client-id", client_secret: "your-putio-client-secret"});{ "data": { "backend_type": "putio", "id": "bk_3d8a7b6c9e0f1234", "mount_paths": [], "type": "cloud" }, "message": "Put.io backend connected successfully", "success": true}{ "error": "Put.io OAuth token rejected", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
access_key_id | string | No | "" | Sugarsync Access Key Id. Leave blank to use hoody-vfs’s. |
app_id | string | No | "" | Sugarsync App Id. Leave blank to use hoody-vfs’s. |
authorization | string | No | "" | Sugarsync authorization. Auto-configured by hoody-vfs. |
authorization_expiry | string | No | "" | Sugarsync authorization expiry. Auto-configured. |
deleted_id | string | No | "" | Sugarsync deleted folder id. Auto-configured. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50397186" | The encoding for the backend. |
hard_delete | boolean | No | false | Permanently delete files instead of moving to deleted files. |
private_access_key | string | No | "" | Sugarsync Private Access Key. Leave blank to use hoody-vfs’s. |
refresh_token | string | No | "" | Sugarsync refresh token. Auto-configured by hoody-vfs. |
root_id | string | No | "" | Sugarsync root id. Auto-configured by hoody-vfs. |
user | string | No | "" | Sugarsync user. Auto-configured by hoody-vfs. |
{ "access_key_id": "your-sugarsync-access-key", "private_access_key": "your-sugarsync-private-key", "app_id": "your-sugarsync-app-id"}curl -X POST https://api.hoody.com/api/v1/backends/sugarsync \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "access_key_id": "your-sugarsync-access-key", "private_access_key": "your-sugarsync-private-key", "app_id": "your-sugarsync-app-id" }'await client.files.backends.connectSugarsync({ access_key_id: "your-sugarsync-access-key", private_access_key: "your-sugarsync-private-key", app_id: "your-sugarsync-app-id"});{ "data": { "backend_type": "sugarsync", "id": "bk_4e9b8c7d0a1f2345", "mount_paths": [], "type": "cloud" }, "message": "Sugarsync backend connected successfully", "success": true}{ "error": "Sugarsync credentials invalid", "success": false}Enterprise & Business
Section titled “Enterprise & Business”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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
api_key | string | No | "" | The API key used to authenticate with Files.com. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "60923906" | The encoding for the backend. |
password | string | No | "" | The password used to authenticate with Files.com. |
site | string | No | "" | Your site subdomain or custom domain. |
username | string | No | "" | The username used to authenticate with Files.com. |
{ "site": "mysite", "username": "filesuser", "password": "files-password"}curl -X POST https://api.hoody.com/api/v1/backends/filescom \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "site": "mysite", "username": "filesuser", "password": "files-password" }'await client.files.backends.connectFilescom({ site: "mysite", username: "filesuser", password: "files-password"});{ "data": { "backend_type": "filescom", "id": "bk_5f0c9d8e1b2a3456", "mount_paths": [], "type": "cloud" }, "message": "Files.com backend connected successfully", "success": true}{ "error": "Files.com login failed", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
description | string | No | "" | Description of the remote. |
encoding | string | No | "50429954" | The encoding for the backend. |
permanent_token | string | No | "" | Permanent Authentication Token from the Enterprise File Fabric. |
root_folder_id | string | No | "" | ID of the root folder. Leave blank normally. |
token | string | No | "" | Session Token. Set automatically by hoody-vfs. |
token_expiry | string | No | "" | Token expiry time. Set automatically by hoody-vfs. |
url | string | Yes | "" | URL of the Enterprise File Fabric to connect to. |
version | string | No | "" | Version read from the file fabric. Set automatically. |
The url field accepts one of three values:
https://storagemadeeasy.comhttps://eu.storagemadeeasy.comhttps://yourfabric.smestorage.com
{ "url": "https://storagemadeeasy.com", "permanent_token": "your-permanent-token"}curl -X POST https://api.hoody.com/api/v1/backends/filefabric \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "url": "https://storagemadeeasy.com", "permanent_token": "your-permanent-token" }'await client.files.backends.connectFilefabric({ url: "https://storagemadeeasy.com", permanent_token: "your-permanent-token"});{ "data": { "backend_type": "filefabric", "id": "bk_6a1d0e9f2c3b4567", "mount_paths": [], "type": "cloud" }, "message": "Enterprise File Fabric backend connected successfully", "success": true}{ "error": "File Fabric URL is required", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
api_key | string | Yes | "" | API key for accessing 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" | The encoding for the backend. |
hard_delete | boolean | No | false | Delete files permanently rather than putting them into the trash. |
host | string | Yes | "" | Host name of Quatrix account. |
maximal_summary_chunk_size | string | No | "100000000" | The maximal summary for all chunks. |
minimal_chunk_size | string | No | "10000000" | The minimal size for one chunk. |
skip_project_folders | boolean | No | false | Skip project folders in operations. |
{ "host": "yourorg.quatrix.it", "api_key": "your-quatrix-api-key"}curl -X POST https://api.hoody.com/api/v1/backends/quatrix \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "host": "yourorg.quatrix.it", "api_key": "your-quatrix-api-key" }'await client.files.backends.connectQuatrix({ host: "yourorg.quatrix.it", api_key: "your-quatrix-api-key"});{ "data": { "backend_type": "quatrix", "id": "bk_7b2e1f0a3d4c5678", "mount_paths": [], "type": "cloud" }, "message": "Quatrix backend connected successfully", "success": true}{ "error": "Quatrix API key invalid", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
2fa | boolean | No | false | Two-factor authentication (true if the account has 2FA enabled). |
auth_token | string | No | "" | Authentication token. |
create_library | boolean | No | false | Should hoody-vfs create a library if it doesn’t exist. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "16850954" | The encoding for the backend. |
library | string | No | "" | Name of the library. Leave blank to access all non-encrypted libraries. |
library_key | string | No | "" | Library password (for encrypted libraries only). |
pass | string | No | "" | Password. |
url | string | Yes | "" | URL of Seafile host to connect to. |
user | string | Yes | "" | User name (usually email address). |
The url field accepts https://cloud.seafile.com/.
{ "url": "https://cloud.seafile.com/", "user": "user@seafile.com", "pass": "seafile-password"}curl -X POST https://api.hoody.com/api/v1/backends/seafile \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "url": "https://cloud.seafile.com/", "user": "user@seafile.com", "pass": "seafile-password" }'await client.files.backends.connectSeafile({ url: "https://cloud.seafile.com/", user: "user@seafile.com", pass: "seafile-password"});{ "data": { "backend_type": "seafile", "id": "bk_8c3f2a1b4e5d6789", "mount_paths": [], "type": "cloud" }, "message": "Seafile backend connected successfully", "success": true}{ "error": "Seafile host unreachable or invalid credentials", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
chunk_size | string | No | "67108864" | Upload chunk size. Must be a power of 2 ≥ 256 KiB. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "57091982" | The encoding for the backend. |
endpoint | string | No | "" | Endpoint for API calls (e.g. https://XXX.sharefile.com). |
root_folder_id | string | No | "" | ID of the root folder. Set to one of favorites, allshared, connectors, top, or a folder ID. |
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 | "134217728" | Cutoff for switching to multipart upload. |
{ "client_id": "your-sharefile-client-id", "client_secret": "your-sharefile-client-secret", "endpoint": "https://yourorg.sharefile.com", "root_folder_id": ""}curl -X POST https://api.hoody.com/api/v1/backends/sharefile \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-sharefile-client-id", "client_secret": "your-sharefile-client-secret", "endpoint": "https://yourorg.sharefile.com" }'await client.files.backends.connectSharefile({ client_id: "your-sharefile-client-id", client_secret: "your-sharefile-client-secret", endpoint: "https://yourorg.sharefile.com"});{ "data": { "backend_type": "sharefile", "id": "bk_9d4a3b2c5f6e7890", "mount_paths": [], "type": "cloud" }, "message": "Citrix Sharefile backend connected successfully", "success": true}{ "error": "Sharefile endpoint unreachable", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "16875520" | The encoding for the backend. |
region | string | No | "" | Zoho region: com, eu, in, jp, com.cn, or com.au. |
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 | "10485760" | Cutoff for switching to large file upload api (≥ 10 MiB). |
{ "client_id": "your-zoho-client-id", "client_secret": "your-zoho-client-secret", "region": "com"}curl -X POST https://api.hoody.com/api/v1/backends/zoho \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-zoho-client-id", "client_secret": "your-zoho-client-secret", "region": "com" }'await client.files.backends.connectZoho({ client_id: "your-zoho-client-id", client_secret: "your-zoho-client-secret", region: "com"});{ "data": { "backend_type": "zoho", "id": "bk_0e5b4c3d6a7f8901", "mount_paths": [], "type": "cloud" }, "message": "Zoho backend connected successfully", "success": true}{ "error": "Zoho region not recognized", "success": false}File Hosting & Sharing
Section titled “File Hosting & Sharing”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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
api_key | string | No | "" | Your API Key from https://1fichier.com/console/params.pl. |
cdn | boolean | No | false | Set if you wish to use CDN download links. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "52666494" | The encoding for the backend. |
file_password | string | No | "" | Password for password-protected shared files. |
folder_password | string | No | "" | Password for password-protected shared folders. |
shared_folder | string | No | "" | ID of the shared folder to download. |
{ "api_key": "your-1fichier-api-key"}curl -X POST https://api.hoody.com/api/v1/backends/fichier \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "api_key": "your-1fichier-api-key" }'await client.files.backends.connectFichier({ api_key: "your-1fichier-api-key"});{ "data": { "backend_type": "fichier", "id": "bk_1f6c5d4e7b8a9012", "mount_paths": [], "type": "cloud" }, "message": "1Fichier backend connected successfully", "success": true}{ "error": "1Fichier API key rejected", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
access_token | string | No | "" | API Access token from the web control panel. |
account_id | string | No | "" | Account ID. Auto-filled by hoody-vfs normally. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "323331982" | The encoding for the backend. |
list_chunk | integer | No | 1000 | Number of items to list in each call. |
root_folder_id | string | No | "" | ID of the root folder. Leave blank normally. |
{ "access_token": "your-gofile-access-token"}curl -X POST https://api.hoody.com/api/v1/backends/gofile \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "access_token": "your-gofile-access-token" }'await client.files.backends.connectGofile({ access_token: "your-gofile-access-token"});{ "data": { "backend_type": "gofile", "id": "bk_2a7d6e5f8c9b0123", "mount_paths": [], "type": "cloud" }, "message": "Gofile backend connected successfully", "success": true}{ "error": "Gofile access token invalid", "success": false}POST /api/v1/backends/koofr
Section titled “POST /api/v1/backends/koofr”Connect a Koofr, Digi Storage, or other Koofr-compatible storage provider.
This endpoint takes no parameters.
Request Body
Section titled “Request Body”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
description | string | No | "" | Description of the remote. |
encoding | string | No | "50438146" | The encoding for the backend. |
endpoint | string | Yes | "" | The Koofr API endpoint to use. |
mountid | string | No | "" | Mount ID of the mount to use. If omitted, the primary mount is used. |
password | string | Yes | "" | Your password for hoody-vfs (generate one at your service’s settings page). |
provider | string | No | "" | Storage provider: koofr, digistorage, or other. |
setmtime | boolean | No | true | Whether the backend supports setting modification time. |
user | string | Yes | "" | Your user name. |
{ "endpoint": "https://app.koofr.net", "user": "koofr-user", "password": "app-password", "provider": "koofr"}curl -X POST https://api.hoody.com/api/v1/backends/koofr \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "endpoint": "https://app.koofr.net", "user": "koofr-user", "password": "app-password", "provider": "koofr" }'await client.files.backends.connectKoofr({ endpoint: "https://app.koofr.net", user: "koofr-user", password: "app-password", provider: "koofr"});{ "data": { "backend_type": "koofr", "id": "bk_3b8e7f6a9d0c1234", "mount_paths": [], "type": "cloud" }, "message": "Koofr backend connected successfully", "success": true}{ "error": "Koofr endpoint unreachable", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
description | string | No | "" | Description of the remote. |
token | string | Yes | "" | Token from https://www.linkbox.to/admin/account. |
{ "token": "your-linkbox-token"}curl -X POST https://api.hoody.com/api/v1/backends/linkbox \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "token": "your-linkbox-token" }'await client.files.backends.connectLinkbox({ token: "your-linkbox-token"});{ "data": { "backend_type": "linkbox", "id": "bk_4c9f8a7b0e1d2345", "mount_paths": [], "type": "cloud" }, "message": "Linkbox backend connected successfully", "success": true}{ "error": "Linkbox token is required", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
api_key | string | No | "" | API key for your pixeldrain account (https://pixeldrain.com/user/api_keys). |
api_url | string | Yes | "https://pixeldrain.com/api" | The API endpoint to connect to. |
description | string | No | "" | Description of the remote. |
root_folder_id | string | No | "me" | Root of the filesystem to use. Set to me or a shared directory ID. |
{ "api_url": "https://pixeldrain.com/api", "api_key": "your-pixeldrain-api-key", "root_folder_id": "me"}curl -X POST https://api.hoody.com/api/v1/backends/pixeldrain \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "api_url": "https://pixeldrain.com/api", "api_key": "your-pixeldrain-api-key", "root_folder_id": "me" }'await client.files.backends.connectPixeldrain({ api_url: "https://pixeldrain.com/api", api_key: "your-pixeldrain-api-key", root_folder_id: "me"});{ "data": { "backend_type": "pixeldrain", "id": "bk_5d0a9b8c1f2e3456", "mount_paths": [], "type": "cloud" }, "message": "Pixeldrain backend connected successfully", "success": true}{ "error": "Pixeldrain API key invalid", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
api_key | string | No | "" | API Key. Not normally used — use OAuth instead. |
auth_url | string | No | "" | Auth server URL. Leave blank to use the provider defaults. |
client_credentials | boolean | No | false | Use the OAuth2 client credentials flow. |
client_id | string | No | "" | OAuth Client Id. Leave blank normally. |
client_secret | string | No | "" | OAuth Client Secret. Leave blank normally. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50438154" | The encoding for the backend. |
token | string | No | "" | OAuth Access Token as a JSON blob. |
token_url | string | No | "" | Token server URL. Leave blank to use the provider defaults. |
{ "client_id": "your-premiumize-client-id", "client_secret": "your-premiumize-client-secret"}curl -X POST https://api.hoody.com/api/v1/backends/premiumizeme \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your-premiumize-client-id", "client_secret": "your-premiumize-client-secret" }'await client.files.backends.connectPremiumizeme({ client_id: "your-premiumize-client-id", client_secret: "your-premiumize-client-secret"});{ "data": { "backend_type": "premiumizeme", "id": "bk_6e1b0c9d2a3f4567", "mount_paths": [], "type": "cloud" }, "message": "premiumize.me backend connected successfully", "success": true}{ "error": "premiumize.me OAuth failed", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
app_token | string | No | "" | The application token identifying the app. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50438146" | The encoding for the backend. |
list_page_size | integer | No | 500 | The size of a single page for list commands (1-500). |
password | string | No | "" | The password for the user. |
root_folder_slug | string | No | "" | If set, hoody-vfs will use this folder as the root folder for all operations. |
username | string | No | "" | The username of the principal to operate as. |
{ "username": "ulozuser", "password": "uloz-password", "app_token": "your-uloz-app-token"}curl -X POST https://api.hoody.com/api/v1/backends/ulozto \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "username": "ulozuser", "password": "uloz-password", "app_token": "your-uloz-app-token" }'await client.files.backends.connectUlozto({ username: "ulozuser", password: "uloz-password", app_token: "your-uloz-app-token"});{ "data": { "backend_type": "ulozto", "id": "bk_7f2c1d0e3b4a5678", "mount_paths": [], "type": "cloud" }, "message": "Uloz.to backend connected successfully", "success": true}{ "error": "Uloz.to authentication failed", "success": false}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”| Field | Type | Required | Default | Description |
|---|---|---|---|---|
access_token | string | No | "" | Your access token from https://uptobox.com/my_account. |
description | string | No | "" | Description of the remote. |
encoding | string | No | "50561070" | The encoding for the backend. |
private | boolean | No | false | Set to make uploaded files private. |
{ "access_token": "your-uptobox-access-token", "private": false}curl -X POST https://api.hoody.com/api/v1/backends/uptobox \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "access_token": "your-uptobox-access-token" }'await client.files.backends.connectUptobox({ access_token: "your-uptobox-access-token"});{ "data": { "backend_type": "uptobox", "id": "bk_8a3d2e1f4c5b6789", "mount_paths": [], "type": "cloud" }, "message": "Uptobox backend connected successfully", "success": true}{ "error": "Uptobox access token invalid or expired", "success": false}