Skip to content
Hoody.com

Connect a cloud storage provider as a backend so it can be mounted on a Hoody container. Each endpoint creates one backend connection for a specific provider (Google Drive, Dropbox, iCloud, and so on). The returned backend id is later passed as backend_id when creating a mount.

All endpoints share the same response shape: a data object carrying the new backend’s id, type, vfs_backend_type, config, and mount_paths; plus a success flag and a message. Errors follow the standard error format (success, error, optional code).

Connect a Box.

Box supports user and enterprise OAuth accounts. The token, client id, and client secret are usually supplied by the OAuth flow; leave them blank unless a custom client is in use.

NameTypeRequiredDefaultDescription
access_tokenstringNo""Box App Primary Access Token. Leave blank normally.
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
box_sub_typestringNo"user"One of "user", "enterprise".
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
commit_retriesintegerNo100Max number of times to try committing a multipart file.
descriptionstringNo""Description of the remote.
encodingstringNo"52535298"The encoding for the backend.
impersonatestringNo""Impersonate this user ID when using a service account.
list_chunkintegerNo1000Size of listing chunk 1-1000.
owned_bystringNo""Only show items owned by the login (email address) passed in.
root_folder_idstringNo"0"Fill in for Hoody to use a non root folder as its starting point.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
upload_cutoffstringNo"52428800"Cutoff for switching to multipart upload (min 50 MiB).
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "box",
"vfs_backend_type": "box",
"mount_paths": [],
"config": {
"root_folder_id": "0",
"list_chunk": 1000
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/box" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"box_sub_type": "user",
"client_id": "",
"client_secret": "",
"token": ""
}'

Connect a Google Drive.

NameTypeRequiredDefaultDescription
acknowledge_abusebooleanNofalseSet to allow files flagged as cannotDownloadAbusiveFile to be downloaded.
allow_import_name_changebooleanNofalseAllow the filetype to change when uploading Google docs.
alternate_exportbooleanNofalseDeprecated. No longer needed.
auth_owner_onlybooleanNofalseOnly consider files owned by the authenticated user.
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
chunk_sizestringNo"8388608"Upload chunk size. Must be a power of 2 >= 256k.
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""Google Application Client Id. Leave blank to use Hoody’s shared client id.
client_secretstringNo""Google Application Client Secret.
copy_shortcut_contentbooleanNofalseServer side copy contents of shortcuts instead of the shortcut.
descriptionstringNo""Description of the remote.
disable_http2booleanNotrueDisable drive using HTTP/2.
encodingstringNo"16777216"The encoding for the backend.
env_authboolean (enum: false)NofalseGet IAM credentials from runtime. Only false is accepted.
export_formatsstringNo"docx,xlsx,pptx,svg"Comma separated list of preferred formats for downloading Google docs.
fast_list_bug_fixbooleanNotrueWork around a bug in Google Drive listing.
formatsstringNo""Deprecated. See export_formats.
impersonatestringNo""Impersonate this user when using a service account.
import_formatsstringNo""Comma separated list of preferred formats for uploading Google docs.
keep_revision_foreverbooleanNofalseKeep new head revision of each file forever.
list_chunkintegerNo1000Size of listing chunk 100-1000, 0 to disable.
metadata_enforce_expansive_accessbooleanNofalseWhether the request should enforce expansive access rules.
metadata_labelsstringNo"0"Control whether labels should be read or written in metadata. One of "off", "read", "write", "failok", "read,write".
metadata_ownerstringNo"1"Control whether owner should be read or written in metadata. One of "off", "read", "write", "failok", "read,write".
metadata_permissionsstringNo"0"Control whether permissions should be read or written in metadata. One of "off", "read", "write", "failok", "read,write".
pacer_burstintegerNo100Number of API calls to allow without sleeping.
pacer_min_sleepintegerNo0Minimum time to sleep between API calls (seconds).
resource_keystringNo""Resource key for accessing a link-shared file.
root_folder_idstringNo""ID of the root folder. Leave blank normally.
scopestringNo""Comma separated list of scopes. One of "drive", "drive.readonly", "drive.file", "drive.appfolder", "drive.metadata.readonly".
server_side_across_configsbooleanNofalseDeprecated. Allow server-side operations across different drive configs.
service_account_credentialsstringNo""Service Account Credentials JSON blob.
shared_with_mebooleanNofalseOnly show files that are shared with me.
show_all_gdocsbooleanNofalseShow all Google Docs including non-exportable ones in listings.
size_as_quotabooleanNofalseShow sizes as storage quota usage, not actual size.
skip_checksum_gphotosbooleanNofalseSkip checksums on Google photos and videos only.
skip_dangling_shortcutsbooleanNofalseIf set, skip dangling shortcut files.
skip_gdocsbooleanNofalseSkip google documents in all listings.
skip_shortcutsbooleanNofalseIf set, skip shortcut files.
starred_onlybooleanNofalseOnly show files that are starred.
stop_on_download_limitbooleanNofalseMake download limit errors be fatal.
stop_on_upload_limitbooleanNofalseMake upload limit errors be fatal.
team_drivestringNo""ID of the Shared Drive (Team Drive).
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
trashed_onlybooleanNofalseOnly show files that are in the trash.
upload_cutoffstringNo"8388608"Cutoff for switching to chunked upload.
use_created_datebooleanNofalseUse file created date instead of modified date.
use_shared_datebooleanNofalseUse date file was shared instead of modified date.
use_trashbooleanNotrueSend files to the trash instead of deleting permanently.
v2_download_min_sizestringNo"-1"If objects are greater, use drive v2 API to download.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "drive",
"vfs_backend_type": "drive",
"mount_paths": [],
"config": {
"scope": "drive",
"root_folder_id": ""
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/drive" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"scope": "drive",
"client_id": "",
"client_secret": "",
"token": ""
}'

Connect a Dropbox.

NameTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
batch_commit_timeoutintegerNo600Max time to wait for a batch to finish committing (seconds).
batch_modestringNo"sync"Upload file batching: sync, async, or off.
batch_sizeintegerNo0Max number of files in upload batch. Must be less than 1000.
batch_timeoutintegerNo0Max time to allow an idle upload batch before uploading (seconds).
chunk_sizestringNo"50331648"Upload chunk size (< 150 MiB).
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"52469762"The encoding for the backend.
export_formatsstringNo"html,md"Comma separated list of preferred formats for exporting files.
impersonatestringNo""Impersonate this user when using a business account.
impersonate_adminstringNo""Team admin ID to use when performing actions as a team administrator.
pacer_min_sleepintegerNo0Minimum time to sleep between API calls (seconds).
root_namespacestringNo""Specify a different Dropbox namespace ID to use as the root for all paths.
shared_filesbooleanNofalseInstructs Hoody to work on individual shared files.
shared_foldersbooleanNofalseInstructs Hoody to work on shared folders.
show_all_exportsbooleanNofalseShow all exportable files in listings.
skip_exportsbooleanNofalseSkip exportable files in all listings.
skip_shared_foldersbooleanNofalseInstructs Hoody to skip all shared folders.
skip_unowned_foldersbooleanNofalseInstructs Hoody to skip shared folders not owned by the current user.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "dropbox",
"vfs_backend_type": "dropbox",
"mount_paths": [],
"config": {
"client_id": "",
"client_secret": "",
"token": ""
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/dropbox" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"client_id": "",
"client_secret": "",
"token": ""
}'

Connect a 1Fichier.

NameTypeRequiredDefaultDescription
api_keystringNo""Your API Key, from https://1fichier.com/console/params.pl.
cdnbooleanNofalseSet if you wish to use CDN download links.
descriptionstringNo""Description of the remote.
encodingstringNo"52666494"The encoding for the backend.
file_passwordstringNo""If you want to download a shared file that is password protected, add this parameter.
folder_passwordstringNo""If you want to list the files in a shared folder that is password protected, add this parameter.
shared_folderstringNo""If you want to download a shared folder, add this parameter.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "fichier",
"vfs_backend_type": "fichier",
"mount_paths": [],
"config": {
"api_key": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/fichier" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"api_key": "YOUR_API_KEY"
}'

Connect an Enterprise File Fabric.

NameTypeRequiredDefaultDescription
descriptionstringNo""Description of the remote.
encodingstringNo"50429954"The encoding for the backend.
permanent_tokenstringNo""Permanent Authentication Token, valid for several years.
root_folder_idstringNo""ID of the root folder. Leave blank normally.
tokenstringNo""Session Token. Don’t set this value. Hoody will set it automatically.
token_expirystringNo""Token expiry time. Don’t set this value. Hoody will set it automatically.
urlstringYes""URL of the Enterprise File Fabric to connect to. One of "https://storagemadeeasy.com", "https://eu.storagemadeeasy.com", "https://yourfabric.smestorage.com".
versionstringNo""Version read from the file fabric. Don’t set this value.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "filefabric",
"vfs_backend_type": "filefabric",
"mount_paths": [],
"config": {
"url": "https://storagemadeeasy.com",
"permanent_token": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/filefabric" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://storagemadeeasy.com",
"permanent_token": "YOUR_PERMANENT_TOKEN"
}'

Connect a Files.com.

NameTypeRequiredDefaultDescription
api_keystringNo""The API key used to authenticate with Files.com.
descriptionstringNo""Description of the remote.
encodingstringNo"60923906"The encoding for the backend.
passwordstringNo""The password used to authenticate with Files.com.
sitestringNo""Your site subdomain (e.g. mysite) or custom domain (e.g. myfiles.customdomain.com).
usernamestringNo""The username used to authenticate with Files.com.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "filescom",
"vfs_backend_type": "filescom",
"mount_paths": [],
"config": {
"site": "mysite",
"username": "alice",
"api_key": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/filescom" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"site": "mysite",
"username": "alice",
"api_key": "YOUR_API_KEY"
}'

Connect a Gofile.

NameTypeRequiredDefaultDescription
access_tokenstringNo""API Access token, from the web control panel.
account_idstringNo""Account ID. Leave blank normally, Hoody fills it in automatically.
descriptionstringNo""Description of the remote.
encodingstringNo"323331982"The encoding for the backend.
list_chunkintegerNo1000Number of items to list in each call.
root_folder_idstringNo""ID of the root folder. Leave blank normally.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "gofile",
"vfs_backend_type": "gofile",
"mount_paths": [],
"config": {
"access_token": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/gofile" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"access_token": "YOUR_ACCESS_TOKEN"
}'

Connect Google Photos.

NameTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
batch_commit_timeoutintegerNo600Max time to wait for a batch to finish committing (seconds).
batch_modestringNo"sync"Upload file batching: sync, async, or off.
batch_sizeintegerNo0Max number of files in upload batch. Must be less than 50.
batch_timeoutintegerNo0Max time to allow an idle upload batch before uploading (seconds).
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank to use Hoody’s shared client id.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"50348034"The encoding for the backend.
include_archivedbooleanNofalseAlso view and download archived media.
proxystringNo""URL of the gphotosdl proxy for downloading full resolution images.
read_onlybooleanNofalseMake Google Photos requests read only.
read_sizebooleanNofalseRead the size of media items. Recommended for Hoody mount.
start_yearintegerNo2000Year limit; photos uploaded after this year are eligible.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "google photos",
"vfs_backend_type": "google photos",
"mount_paths": [],
"config": {
"client_id": "",
"client_secret": "",
"token": "",
"start_year": 2000
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/google-photos" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"client_id": "",
"client_secret": "",
"token": ""
}'

Connect a HiDrive.

NameTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
chunk_sizestringNo"50331648"Chunk size for chunked uploads (max 2147483647 bytes).
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
disable_fetching_member_countbooleanNofalseDo not fetch number of objects in directories unless absolutely necessary.
encodingstringNo"33554434"The encoding for the backend.
endpointstringNo"https://api.hidrive.strato.com/2.1"Endpoint for the service. This is the URL that API-calls will be made to.
root_prefixstringNo"/"The root/parent folder for all paths. One of "/", "root", "".
scope_accessstringNo"rw"Access permissions that Hoody should use when requesting access from HiDrive. One of "rw", "ro".
scope_rolestringNo"user"User-level that Hoody should use when requesting access from HiDrive. One of "user", "admin", "owner".
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
upload_concurrencyintegerNo4Concurrency for chunked uploads.
upload_cutoffstringNo"100663296"Cutoff/threshold for chunked uploads (max 2147483647 bytes).
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "hidrive",
"vfs_backend_type": "hidrive",
"mount_paths": [],
"config": {
"endpoint": "https://api.hidrive.strato.com/2.1",
"scope_access": "rw",
"scope_role": "user"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/hidrive" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"client_id": "",
"client_secret": "",
"token": ""
}'

Connect iCloud Drive and Photos.

NameTypeRequiredDefaultDescription
apple_idstringYes""Apple ID.
client_idstringNo"d39ba9916b7251055b22c7f910e2ea796ee65e98b2ddecea8f5dde8d9d1a815d"Client ID for iCloud API access.
cookiesstringNo""Session cookies.
descriptionstringNo""Description of the remote.
encodingstringNo"50438146"The encoding for the backend.
passwordstringYes""Password.
servicestringNo"drive"iCloud service to use. One of "drive", "photos".
trust_tokenstringNo""Trust token for session authentication.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "iclouddrive",
"vfs_backend_type": "iclouddrive",
"mount_paths": [],
"config": {
"apple_id": "alice@example.com",
"service": "drive",
"password": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/iclouddrive" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"apple_id": "alice@example.com",
"password": "APPLE_ID_PASSWORD",
"service": "drive"
}'

Connect a Jottacloud.

NameTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"50435982"The encoding for the backend.
hard_deletebooleanNofalseDelete files permanently rather than putting them into the trash.
md5_memory_limitstringNo"10485760"Files bigger than this will be cached on disk to calculate the MD5.
no_versionsbooleanNofalseAvoid server side versioning by deleting files and recreating files instead of overwriting them.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
trashed_onlybooleanNofalseOnly show files that are in the trash.
upload_resume_limitstringNo"10485760"Files bigger than this can be resumed if the upload fails.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "jottacloud",
"vfs_backend_type": "jottacloud",
"mount_paths": [],
"config": {
"client_id": "",
"client_secret": "",
"token": ""
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/jottacloud" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"client_id": "",
"client_secret": "",
"token": ""
}'

Connect Koofr, Digi Storage, and other Koofr-compatible storage providers.

NameTypeRequiredDefaultDescription
descriptionstringNo""Description of the remote.
encodingstringNo"50438146"The encoding for the backend.
endpointstringYes""The Koofr API endpoint to use.
mountidstringNo""Mount ID of the mount to use. If omitted, the primary mount is used.
passwordstringYes""Your password for Hoody (generate one at your service’s settings page).
providerstringNo""Choose your storage provider. One of "koofr", "digistorage", "other".
setmtimebooleanNotrueDoes the backend support setting modification time. Set this to false if you use a mount ID that points to a Dropbox or Amazon Drive backend.
userstringYes""Your user name.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "koofr",
"vfs_backend_type": "koofr",
"mount_paths": [],
"config": {
"endpoint": "https://app.koofr.net",
"user": "alice",
"password": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/koofr" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"endpoint": "https://app.koofr.net",
"user": "alice",
"password": "KOOFR_PASSWORD"
}'

Connect a Linkbox.

NameTypeRequiredDefaultDescription
descriptionstringNo""Description of the remote.
emailstringYes""Email for login.
passwordstringYes""Password for login.
tokenstringYes""Token from https://www.linkbox.to/admin/account.
web_tokenstringNo""Web API login token. Set automatically.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "linkbox",
"vfs_backend_type": "linkbox",
"mount_paths": [],
"config": {
"email": "alice@example.com",
"token": "***",
"password": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/linkbox" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "alice@example.com",
"password": "LINKBOX_PASSWORD",
"token": "LINKBOX_TOKEN"
}'

Connect a Mail.ru Cloud.

NameTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
check_hashbooleanNotrueWhat should copy do if file checksum is mismatched or invalid.
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"50440078"The encoding for the backend.
passstringYes""App password.
speedup_enablebooleanNotrueSkip full upload if there is another file with the same data hash.
speedup_file_patternsstringNo"*.mkv,*.avi,*.mp4,*.mp3,*.zip,*.gz,*.rar,*.pdf"Comma separated list of file name patterns eligible for speedup (put by hash).
speedup_max_diskstringNo"3221225472"Disable speedup (put by hash) for large files.
speedup_max_memorystringNo"33554432"Files larger than this will always be hashed on disk.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
userstringYes""User name (usually email).
user_agentstringNo""HTTP user agent used internally by the client.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "mailru",
"vfs_backend_type": "mailru",
"mount_paths": [],
"config": {
"user": "alice@example.com",
"pass": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/mailru" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"user": "alice@example.com",
"pass": "MAILRU_APP_PASSWORD"
}'

Connect a Mega.

The request accepts either pass or password as the credential. password is an alias for pass: an empty value is ignored, and a non-empty value that differs from pass is refused with 400.

NameTypeRequiredDefaultDescription
2fastringNo""The 2FA code of your MEGA account if the account is set up with one.
debugbooleanNofalseOutput more debug from Mega.
descriptionstringNo""Description of the remote.
encodingstringNo"50331650"The encoding for the backend.
hard_deletebooleanNofalseDelete files permanently rather than putting them into the trash.
master_keystringNo""Master key (internal use only).
passstringConditional""Password. Required if password is not set.
passwordstringConditional(none)Alias for pass. Required if pass is not set.
session_idstringNo""Session (internal use only).
use_httpsbooleanNofalseUse HTTPS for transfers.
userstringYes""User name.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "mega",
"vfs_backend_type": "mega",
"mount_paths": [],
"config": {
"user": "alice@example.com",
"pass": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/mega" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"user": "alice@example.com",
"pass": "MEGA_PASSWORD"
}'

Connect Microsoft OneDrive.

NameTypeRequiredDefaultDescription
access_scopesstringNo"Files.Read Files.ReadWrite Files.Read.All Files.ReadWrite.All Sites.Read.All offline_access"Space separated list of scopes for Hoody to request.
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
av_overridebooleanNofalseAllow download of files the server thinks has a virus.
chunk_sizestringNo"10485760"Chunk size to upload files with. Must be a multiple of 320k.
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
deltabooleanNofalseIf set, Hoody will use delta listing to implement recursive listings.
descriptionstringNo""Description of the remote.
disable_site_permissionbooleanNofalseDisable the request for Sites.Read.All permission.
drive_idstringNo""The ID of the drive to use.
drive_typestringNo""The type of the drive: personal, business, or documentLibrary.
encodingstringNo"57386894"The encoding for the backend.
expose_onenote_filesbooleanNofalseMake OneNote files show up in directory listings.
hard_deletebooleanNofalsePermanently delete files on removal.
hash_typestringNo"auto"Specify the hash in use. One of "auto", "quickxor", "sha1", "sha256", "crc32", "none".
link_passwordstringNo""Set the password for links created by the link command.
link_scopestringNo"anonymous"Set the scope of the links created by the link command. One of "anonymous", "organization".
link_typestringNo"view"Set the type of the links created by the link command. One of "view", "edit", "embed".
list_chunkintegerNo1000Size of listing chunk.
metadata_permissionsstringNo"0"Control whether permissions should be read or written in metadata. One of "off", "read", "write", "read,write", "failok".
no_versionsbooleanNofalseRemove all versions on modifying operations.
regionstringNo"global"Choose national cloud region. One of "global", "us", "de", "cn".
root_folder_idstringNo""ID of the root folder. Leave blank normally.
server_side_across_configsbooleanNofalseAllow server-side operations across different OneDrive configs.
tenantstringNo""ID of the service principal’s tenant.
tenant_urlstringNo""The tenant URL for non-admin OneDrive access.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
upload_cutoffstringNo"-1"Cutoff for switching to chunked upload.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "onedrive",
"vfs_backend_type": "onedrive",
"mount_paths": [],
"config": {
"region": "global",
"drive_type": "personal"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/onedrive" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"client_id": "",
"client_secret": "",
"token": "",
"region": "global"
}'

Connect an OpenDrive.

NameTypeRequiredDefaultDescription
accessstringNo"private"Access permission for uploads. One of "private", "public", "hidden".
chunk_sizestringNo"10485760"Upload chunk size. Chunks are buffered in memory.
descriptionstringNo""Description of the remote.
encodingstringNo"62007182"The encoding for the backend.
passwordstringYes""Password.
usernamestringYes""Username.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "opendrive",
"vfs_backend_type": "opendrive",
"mount_paths": [],
"config": {
"username": "alice",
"password": "***",
"access": "private"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/opendrive" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"username": "alice",
"password": "OPENDRIVE_PASSWORD"
}'

Connect a Pcloud.

NameTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"50438146"The encoding for the backend.
hostnamestringNo"api.pcloud.com"Hostname to connect to. One of "api.pcloud.com", "eapi.pcloud.com".
passwordstringNo""Your pcloud password.
root_folder_idstringNo"d0"Fill in for Hoody to use a non root folder as its starting point.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
usernamestringNo""Your pcloud username.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "pcloud",
"vfs_backend_type": "pcloud",
"mount_paths": [],
"config": {
"hostname": "api.pcloud.com",
"username": "alice",
"root_folder_id": "d0"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/pcloud" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"hostname": "api.pcloud.com",
"username": "alice",
"password": "PCLOUD_PASSWORD"
}'

Connect a PikPak.

NameTypeRequiredDefaultDescription
chunk_sizestringNo"5242880"Chunk size for multipart uploads.
descriptionstringNo""Description of the remote.
device_idstringNo""Device ID used for authorization.
encodingstringNo"56829838"The encoding for the backend.
hash_memory_limitstringNo"10485760"Files bigger than this will be cached on disk to calculate hash if required.
no_media_linkbooleanNofalseUse original file links instead of media links.
passstringNo""PikPak password.
root_folder_idstringNo""ID of the root folder. Leave blank normally.
trashed_onlybooleanNofalseOnly show files that are in the trash.
upload_concurrencyintegerNo4Concurrency for multipart uploads.
upload_cutoffstringNo"209715200"Cutoff for switching to chunked upload. Minimum 0, maximum 5 GiB.
use_trashbooleanNotrueSend files to the trash instead of deleting permanently.
userstringNo""PikPak username.
user_agentstringNo"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0"HTTP user agent for PikPak.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "pikpak",
"vfs_backend_type": "pikpak",
"mount_paths": [],
"config": {
"user": "alice@example.com",
"pass": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/pikpak" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"user": "alice@example.com",
"pass": "PIKPAK_PASSWORD"
}'

Connect the Pixeldrain Filesystem.

NameTypeRequiredDefaultDescription
api_keystringNo""API key for your pixeldrain account, from https://pixeldrain.com/user/api_keys.
api_urlstringNo"https://pixeldrain.com/api"The API endpoint to connect to.
descriptionstringNo""Description of the remote.
root_folder_idstringNo"me"Root of the filesystem to use. Set to "me" for your personal filesystem, or a shared directory ID.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "pixeldrain",
"vfs_backend_type": "pixeldrain",
"mount_paths": [],
"config": {
"api_url": "https://pixeldrain.com/api",
"root_folder_id": "me",
"api_key": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/pixeldrain" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"api_url": "https://pixeldrain.com/api",
"root_folder_id": "me",
"api_key": "PIXELDRAIN_API_KEY"
}'

Connect premiumize.me.

NameTypeRequiredDefaultDescription
api_keystringNo""API Key. This is not normally used; use OAuth instead.
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"50438154"The encoding for the backend.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "premiumizeme",
"vfs_backend_type": "premiumizeme",
"mount_paths": [],
"config": {
"client_id": "",
"client_secret": "",
"token": ""
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/premiumizeme" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"client_id": "",
"client_secret": "",
"token": ""
}'

Connect Proton Drive.

NameTypeRequiredDefaultDescription
2fastringNo""The 2FA code, if the account is set up with 2FA.
app_versionstringNo""App version string. Third-party integrations should use external-drive-<project>@<version>.
client_access_tokenstringNo""Client access token key (internal use only).
client_refresh_tokenstringNo""Client refresh token key (internal use only).
client_salted_key_passstringNo""Client salted key pass key (internal use only).
client_uidstringNo""Client uid key (internal use only).
descriptionstringNo""Description of the remote.
enable_cachingbooleanNotrueCache files and folders metadata to reduce API calls.
encodingstringNo"52559874"The encoding for the backend.
mailbox_passwordstringNo""Mailbox password for two-password Proton accounts.
original_file_sizebooleanNotrueReturn the file size before encryption.
otp_secret_keystringNo""The OTP secret key, if the account is set up with 2FA.
passwordstringNo""The password of your Proton account.
replace_existing_draftbooleanNofalseCreate a new revision when filename conflict is detected.
usernamestringNo""The username of your Proton account.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "protondrive",
"vfs_backend_type": "protondrive",
"mount_paths": [],
"config": {
"username": "alice",
"password": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/protondrive" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"username": "alice",
"password": "PROTON_PASSWORD"
}'

Connect Put.io.

NameTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"50438146"The encoding for the backend.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "putio",
"vfs_backend_type": "putio",
"mount_paths": [],
"config": {
"client_id": "",
"client_secret": "",
"token": ""
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/putio" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"client_id": "",
"client_secret": "",
"token": ""
}'

Connect Quatrix by Maytech.

NameTypeRequiredDefaultDescription
api_keystringYes""API key for accessing Quatrix account.
descriptionstringNo""Description of the remote.
effective_upload_timestringNo"4s"Wanted upload time for one chunk.
encodingstringNo"50438146"The encoding for the backend.
hard_deletebooleanNofalseDelete files permanently rather than putting them into the trash.
hoststringYes""Host name of Quatrix account.
maximal_summary_chunk_sizestringNo"100000000"The maximal summary for all chunks. It should not be less than ‘transfers’*‘minimal_chunk_size’.
minimal_chunk_sizestringNo"10000000"The minimal size for one chunk.
skip_project_foldersbooleanNofalseSkip project folders in operations.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "quatrix",
"vfs_backend_type": "quatrix",
"mount_paths": [],
"config": {
"host": "quatrix.example.com",
"api_key": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/quatrix" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"host": "quatrix.example.com",
"api_key": "YOUR_API_KEY"
}'

Connect a seafile.

NameTypeRequiredDefaultDescription
2fabooleanNofalseTwo-factor authentication (true if the account has 2FA enabled).
auth_tokenstringNo""Authentication token.
create_librarybooleanNofalseShould Hoody create a library if it doesn’t exist.
descriptionstringNo""Description of the remote.
encodingstringNo"50405386"The encoding for the backend.
librarystringNo""Name of the library. Leave blank to access all non-encrypted libraries.
library_keystringNo""Library password (for encrypted libraries only). Leave blank if you pass it through the command line.
passstringNo""Password.
urlstringYes""URL of seafile host to connect to. One of "https://cloud.seafile.com/".
userstringNo""User name (usually email address).
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "seafile",
"vfs_backend_type": "seafile",
"mount_paths": [],
"config": {
"url": "https://cloud.seafile.com/",
"user": "alice@example.com",
"pass": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/seafile" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://cloud.seafile.com/",
"user": "alice@example.com",
"pass": "SEAFILE_PASSWORD"
}'

Connect Citrix Sharefile.

NameTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
chunk_sizestringNo"67108864"Upload chunk size. Must be a power of 2 >= 256k.
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"57091982"The encoding for the backend.
endpointstringNo""Endpoint for API calls. Usually auto discovered during OAuth.
root_folder_idstringNo""ID of the root folder. One of "", "favorites", "allshared", "connectors", "top".
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
upload_cutoffstringNo"134217728"Cutoff for switching to multipart upload.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "sharefile",
"vfs_backend_type": "sharefile",
"mount_paths": [],
"config": {
"endpoint": "https://XXX.sharefile.com",
"root_folder_id": ""
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/sharefile" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"endpoint": "https://XXX.sharefile.com",
"client_id": "",
"client_secret": "",
"token": ""
}'

Connect a Sugarsync.

NameTypeRequiredDefaultDescription
access_key_idstringNo""Sugarsync Access Key ID. Leave blank to use Hoody’s.
app_idstringNo""Sugarsync App ID. Leave blank to use Hoody’s.
authorizationstringNo""Sugarsync authorization. Leave blank normally.
authorization_expirystringNo""Sugarsync authorization expiry. Leave blank normally.
deleted_idstringNo""Sugarsync deleted folder id. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"50397186"The encoding for the backend.
hard_deletebooleanNofalsePermanently delete files. Otherwise put them in the deleted files folder.
private_access_keystringNo""Sugarsync Private Access Key. Leave blank to use Hoody’s.
refresh_tokenstringNo""Sugarsync refresh token. Leave blank normally.
root_idstringNo""Sugarsync root id. Leave blank normally.
userstringNo""Sugarsync user. Leave blank normally.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "sugarsync",
"vfs_backend_type": "sugarsync",
"mount_paths": [],
"config": {
"access_key_id": "***",
"app_id": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/sugarsync" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'

Connect Uloz.to.

NameTypeRequiredDefaultDescription
app_tokenstringNo""The application token identifying the app.
descriptionstringNo""Description of the remote.
encodingstringNo"50438146"The encoding for the backend.
list_page_sizeintegerNo500The size of a single page for list commands, 1-500.
passwordstringNo""The password for the user.
root_folder_slugstringNo""If set, Hoody uses this folder as the root folder for all operations.
usernamestringNo""The username of the principal to operate as.
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "ulozto",
"vfs_backend_type": "ulozto",
"mount_paths": [],
"config": {
"app_token": "***",
"username": "alice",
"password": "***"
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/ulozto" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"app_token": "YOUR_APP_TOKEN",
"username": "alice",
"password": "ULOZTO_PASSWORD"
}'

Connect Yandex Disk.

NameTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"50429954"The encoding for the backend.
hard_deletebooleanNofalseDelete files permanently rather than putting them into the trash.
spoof_uabooleanNotrueSet the user agent to match an official version of the Yandex Disk client.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
upload_waitintegerNo0Wait this long after an upload before setting the modification time (seconds).
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "yandex",
"vfs_backend_type": "yandex",
"mount_paths": [],
"config": {
"client_id": "",
"client_secret": "",
"token": ""
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/yandex" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"client_id": "",
"client_secret": "",
"token": ""
}'

Connect Zoho.

NameTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse client credentials OAuth flow (RFC 6749).
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"16875520"The encoding for the backend.
list_folder_burstintegerNo6Same-folder listings allowed back-to-back before --zoho-list-folder-limit paces them.
list_folder_limitintegerNo19Max listings of the same folder allowed per --zoho-list-folder-window.
list_folder_windowintegerNo60The window for --zoho-list-folder-limit (seconds).
regionstringNo""Zoho region to connect to. One of "com", "eu", "in", "jp", "com.cn", "com.au".
root_folder_idstringNo""ID of the root folder. Leave blank normally.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
tpslimitstringNo"6"Max number of API transactions per second.
tpslimit_burstintegerNo1Number of API calls to allow back-to-back without sleeping, for --zoho-tpslimit.
upload_cutoffstringNo"10485760"Cutoff for switching to large file upload API (min 10 MiB).
{
"success": true,
"message": "Backend connected successfully",
"data": {
"id": "0123456789abcdef",
"type": "zoho",
"vfs_backend_type": "zoho",
"mount_paths": [],
"config": {
"region": "com",
"client_id": "",
"client_secret": "",
"token": ""
}
}
}
Terminal window
curl -X POST "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/zoho" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"region": "com",
"client_id": "",
"client_secret": "",
"token": ""
}'