Skip to content

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.

Connect a Box backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
access_tokenstringNo""Box App Primary Access Token. Leave blank normally.
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
box_config_filestringNo""Box App config.json location. Leading ~ is expanded.
box_sub_typestringNo"user"One of user, enterprise.
client_credentialsbooleanNofalseUse the OAuth2 client credentials 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 JWT service account.
list_chunkintegerNo1000Size of listing chunk 1-1000.
owned_bystringNo""Only show items owned by the supplied email address.
root_folder_idstringNo"0"Use a non-root folder as the 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 (≥ 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"
}
Terminal window
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"
}'

Connect a Google Drive backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
acknowledge_abusebooleanNofalseAllow downloading files flagged with cannotDownloadAbusiveFile.
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 ≥ 256 KiB.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
client_idstringNo""Google Application Client Id (recommended for performance).
client_secretstringNo""OAuth Client Secret. Leave blank normally.
copy_shortcut_contentbooleanNofalseServer-side copy contents of shortcuts instead of the shortcut itself.
descriptionstringNo""Description of the remote.
disable_http2booleanNotrueDisable HTTP/2 (workaround for an unresolved issue with Google Drive).
encodingstringNo"16777216"The encoding for the backend.
env_authbooleanNofalseGet IAM credentials from runtime (environment or instance metadata).
export_formatsstringNo"docx,xlsx,pptx,svg"Comma-separated list of preferred export formats for Google docs.
fast_list_bug_fixbooleanNotrueWork around a bug in Google Drive listing with --fast-list.
formatsstringNo""Deprecated: see export_formats.
impersonatestringNo""Impersonate this user when using a service account.
import_formatsstringNo""Comma-separated list of preferred import formats for Google docs.
keep_revision_foreverbooleanNofalseKeep new head revision of each file forever.
list_chunkintegerNo1000Size of listing chunk (100-1000, 0 to disable).
metadata_labelsstringNo"0"Control label read/write: off, read, write, failok, or read,write.
metadata_ownerstringNo"1"Control owner read/write: off, read, write, failok, or read,write.
metadata_permissionsstringNo"0"Control permissions read/write: off, read, write, failok, or read,write.
pacer_burstintegerNo100Number of API calls to allow without sleeping.
pacer_min_sleepintegerNo0Minimum time to sleep between API calls, in seconds.
resource_keystringNo""Resource key for accessing a link-shared file.
root_folder_idstringNo""ID of the root folder. Leave blank normally.
scopestringNo""Scopes to request: drive, drive.readonly, drive.file, drive.appfolder, or drive.metadata.readonly.
server_side_across_configsbooleanNofalseDeprecated: use --server-side-across-configs instead.
service_account_credentialsstringNo""Service Account Credentials JSON blob.
service_account_filestringNo""Service Account Credentials JSON file path.
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_shortcutsbooleanNofalseSkip dangling shortcut files.
skip_gdocsbooleanNofalseSkip Google documents in all listings.
skip_shortcutsbooleanNofalseSkip shortcut files.
starred_onlybooleanNofalseOnly show files that are starred.
stop_on_download_limitbooleanNofalseMake download limit errors fatal.
stop_on_upload_limitbooleanNofalseMake upload limit errors 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.
{
"client_id": "your-google-client-id.apps.googleusercontent.com",
"client_secret": "your-google-client-secret",
"scope": "drive",
"description": "Work Google Drive"
}
Terminal window
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"
}'

Connect a Dropbox backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
batch_commit_timeoutintegerNo600Max time to wait for a batch to finish committing, in seconds.
batch_modestringNo"sync"Upload file batching: sync, async, or off.
batch_sizeintegerNo0Max number of files in upload batch (must be < 1000).
batch_timeoutintegerNo0Max time to allow an idle upload batch before uploading, in seconds.
chunk_sizestringNo"50331648"Upload chunk size (< 150 MiB).
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
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.
impersonatestringNo""Impersonate this user when using a business account.
pacer_min_sleepintegerNo0Minimum time to sleep between API calls, in seconds.
root_namespacestringNo""Specify a different Dropbox namespace ID as the root.
shared_filesbooleanNofalseWork on individual shared files (read-only mode).
shared_foldersbooleanNofalseWork on shared folders.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""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"
}
Terminal window
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"
}'

Connect a Google Photos backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
batch_commit_timeoutintegerNo600Max time to wait for a batch to finish committing, in seconds.
batch_modestringNo"sync"Upload file batching: sync, async, or off.
batch_sizeintegerNo0Max number of files in upload batch (must be < 50).
batch_timeoutintegerNo0Max time to allow an idle upload batch before uploading, in seconds.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
client_idstringNo""OAuth Client Id. Leave blank normally.
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""Use the gphotosdl proxy for downloading full resolution images.
read_onlybooleanNofalseRequest read-only access to your photos.
read_sizebooleanNofalseRead the size of media items.
start_yearintegerNo2000Limit photos to those uploaded after the given year.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""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
}
Terminal window
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
}'

Connect a Microsoft OneDrive backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
access_scopesstringNo"Files.Read Files.ReadWrite Files.Read.All Files.ReadWrite.All Sites.Read.All offline_access"Space-separated list of scopes 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 320 KiB.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
deltabooleanNofalseUse 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"Hash type: auto, quickxor, sha1, sha256, crc32, or none.
link_passwordstringNo""Password for links created by the link command.
link_scopestringNo"anonymous"Scope of links: anonymous or organization.
link_typestringNo"view"Type of links: view, edit, or embed.
list_chunkintegerNo1000Size of listing chunk.
metadata_permissionsstringNo"0"Control permissions metadata: off, read, write, read,write, or failok.
no_versionsbooleanNofalseRemove all versions on modifying operations.
regionstringNo"global"National cloud region: global, us, de, or cn.
root_folder_idstringNo""ID of the root folder. Leave blank normally.
server_side_across_configsbooleanNofalseDeprecated: use --server-side-across-configs.
tenantstringNo""ID of the service principal’s tenant.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""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"
}
Terminal window
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"
}'

Connect an iCloud Drive backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
apple_idstringYes""Apple ID.
client_idstringNo"d39ba9916b7251055b22c7f910e2ea796ee65e98b2ddecea8f5dde8d9d1a815d"Client id.
cookiesstringNo""Cookies (internal use only).
descriptionstringNo""Description of the remote.
encodingstringNo"50438146"The encoding for the backend.
passwordstringYes""Password.
trust_tokenstringNo""Trust token (internal use).
{
"apple_id": "user@icloud.com",
"password": "app-specific-password"
}
Terminal window
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"
}'

Connect a pCloud backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
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. Set to api.pcloud.com or eapi.pcloud.com.
passwordstringNo""Your pCloud password.
root_folder_idstringNo"d0"Use a non-root folder as the 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. Required only for the cleanup command.
{
"username": "user@pcloud.com",
"password": "pcloud-password",
"hostname": "api.pcloud.com"
}
Terminal window
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"
}'

Connect a Yandex Disk backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
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 the official Yandex Disk client.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""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
}
Terminal window
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"
}'

Connect a HiDrive backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
chunk_sizestringNo"50331648"Chunk size for chunked uploads.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
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 the number of objects in directories unless necessary.
encodingstringNo"33554434"The encoding for the backend.
endpointstringNo"https://api.hidrive.strato.com/2.1"Endpoint for the service.
root_prefixstringNo"/"Root/parent folder for all paths: /, root, or empty.
scope_accessstringNo"rw"Access permissions: rw or ro.
scope_rolestringNo"user"User-level: user, admin, or 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.
{
"client_id": "your-hidrive-client-id",
"client_secret": "your-hidrive-client-secret",
"scope_access": "rw",
"scope_role": "user"
}
Terminal window
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"
}'

Connect a Jottacloud backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
client_idstringNo""OAuth Client Id. Leave blank normally.
client_secretstringNo""OAuth Client Secret. Leave blank normally.
descriptionstringNo""Description of the remote.
encodingstringNo"50431886"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 MD5.
no_versionsbooleanNofalseAvoid server-side versioning by deleting and recreating files.
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.
{
"client_id": "your-jottacloud-client-id",
"client_secret": "your-jottacloud-client-secret"
}
Terminal window
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"
}'

Connect an OpenDrive backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
chunk_sizestringNo"10485760"Files will be uploaded in chunks this size.
descriptionstringNo""Description of the remote.
encodingstringNo"62007182"The encoding for the backend.
passwordstringYes""Password.
usernamestringYes""Username.
{
"username": "openuser",
"password": "openpassword"
}
Terminal window
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"
}'

Connect a Mail.ru Cloud backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
check_hashbooleanNotrueWhat copy should do if file checksum is mismatched or invalid.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
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""Password — must be an app password.
quirksstringNo""Comma-separated list of internal maintenance flags.
speedup_enablebooleanNotrueSkip full upload if another file has the same data hash.
speedup_file_patternsstringNo"*.mkv,*.avi,*.mp4,*.mp3,*.zip,*.gz,*.rar,*.pdf"File name patterns eligible for speedup (put by hash).
speedup_max_diskstringNo"3221225472"Disable speedup (put by hash) for large files to save memory/disk.
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 client.
{
"user": "user@mail.ru",
"pass": "app-password"
}
Terminal window
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"
}'

Connect a Mega backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
debugbooleanNofalseOutput more debug from Mega (requires -vv).
descriptionstringNo""Description of the remote.
encodingstringNo"50331650"The encoding for the backend.
hard_deletebooleanNofalseDelete files permanently rather than putting them into the trash.
passstringYes""Password.
use_httpsbooleanNofalseUse HTTPS for transfers (may help when ISPs throttle HTTP).
userstringYes""User name.
{
"user": "user@mega.nz",
"pass": "mega-password",
"use_https": true
}
Terminal window
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
}'

Connect a PikPak backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
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.
no_media_linkbooleanNofalseUse original file links instead of media links.
passstringYes""PikPak password.
root_folder_idstringNo""ID of the root folder. Leave blank normally.
trashed_onlybooleanNofalseOnly show files that are in the trash.
upload_concurrencyintegerNo5Concurrency for multipart uploads.
use_trashbooleanNotrueSend files to the trash instead of deleting permanently.
userstringYes""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.
{
"user": "user@pikpak.com",
"pass": "pikpak-password",
"use_trash": true
}
Terminal window
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"
}'

Connect a Proton Drive backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
2fastringNo""The 2FA code if the account has two-factor authentication enabled.
app_versionstringNo"macos-drive@1.0.0-alpha.1+hoody-vfs"The app version string sent with every API request.
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 file and folder 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.
passwordstringYes""The password of your Proton account.
replace_existing_draftbooleanNofalseCreate a new revision when a filename conflict is detected.
usernamestringYes""The username of your Proton account.
{
"username": "user@proton.me",
"password": "proton-password",
"2fa": "123456"
}
Terminal window
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"
}'

Connect a Put.io backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
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.
{
"client_id": "your-putio-client-id",
"client_secret": "your-putio-client-secret"
}
Terminal window
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"
}'

Connect a Sugarsync backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
access_key_idstringNo""Sugarsync Access Key Id. Leave blank to use hoody-vfs’s.
app_idstringNo""Sugarsync App Id. Leave blank to use hoody-vfs’s.
authorizationstringNo""Sugarsync authorization. Auto-configured by hoody-vfs.
authorization_expirystringNo""Sugarsync authorization expiry. Auto-configured.
deleted_idstringNo""Sugarsync deleted folder id. Auto-configured.
descriptionstringNo""Description of the remote.
encodingstringNo"50397186"The encoding for the backend.
hard_deletebooleanNofalsePermanently delete files instead of moving to deleted files.
private_access_keystringNo""Sugarsync Private Access Key. Leave blank to use hoody-vfs’s.
refresh_tokenstringNo""Sugarsync refresh token. Auto-configured by hoody-vfs.
root_idstringNo""Sugarsync root id. Auto-configured by hoody-vfs.
userstringNo""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"
}
Terminal window
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"
}'

Connect a Files.com backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
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 or custom domain.
usernamestringNo""The username used to authenticate with Files.com.
{
"site": "mysite",
"username": "filesuser",
"password": "files-password"
}
Terminal window
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"
}'

Connect an Enterprise File Fabric backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
descriptionstringNo""Description of the remote.
encodingstringNo"50429954"The encoding for the backend.
permanent_tokenstringNo""Permanent Authentication Token from the Enterprise File Fabric.
root_folder_idstringNo""ID of the root folder. Leave blank normally.
tokenstringNo""Session Token. Set automatically by hoody-vfs.
token_expirystringNo""Token expiry time. Set automatically by hoody-vfs.
urlstringYes""URL of the Enterprise File Fabric to connect to.
versionstringNo""Version read from the file fabric. Set automatically.

The url field accepts one of three values:

  • https://storagemadeeasy.com
  • https://eu.storagemadeeasy.com
  • https://yourfabric.smestorage.com
{
"url": "https://storagemadeeasy.com",
"permanent_token": "your-permanent-token"
}
Terminal window
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"
}'

Connect a Quatrix by Maytech backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
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.
minimal_chunk_sizestringNo"10000000"The minimal size for one chunk.
skip_project_foldersbooleanNofalseSkip project folders in operations.
{
"host": "yourorg.quatrix.it",
"api_key": "your-quatrix-api-key"
}
Terminal window
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"
}'

Connect a Seafile backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
2fabooleanNofalseTwo-factor authentication (true if the account has 2FA enabled).
auth_tokenstringNo""Authentication token.
create_librarybooleanNofalseShould hoody-vfs create a library if it doesn’t exist.
descriptionstringNo""Description of the remote.
encodingstringNo"16850954"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).
passstringNo""Password.
urlstringYes""URL of Seafile host to connect to.
userstringYes""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"
}
Terminal window
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"
}'

Connect a Citrix Sharefile backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
chunk_sizestringNo"67108864"Upload chunk size. Must be a power of 2 ≥ 256 KiB.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
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 (e.g. https://XXX.sharefile.com).
root_folder_idstringNo""ID of the root folder. Set to one of favorites, allshared, connectors, top, or a folder ID.
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.
{
"client_id": "your-sharefile-client-id",
"client_secret": "your-sharefile-client-secret",
"endpoint": "https://yourorg.sharefile.com",
"root_folder_id": ""
}
Terminal window
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"
}'

Connect a Zoho backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
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.
regionstringNo""Zoho region: com, eu, in, jp, com.cn, or com.au.
tokenstringNo""OAuth Access Token as a JSON blob.
token_urlstringNo""Token server URL. Leave blank to use the provider defaults.
upload_cutoffstringNo"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"
}
Terminal window
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"
}'

Connect a 1Fichier backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
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""Password for password-protected shared files.
folder_passwordstringNo""Password for password-protected shared folders.
shared_folderstringNo""ID of the shared folder to download.
{
"api_key": "your-1fichier-api-key"
}
Terminal window
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" }'

Connect a Gofile backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
access_tokenstringNo""API Access token from the web control panel.
account_idstringNo""Account ID. Auto-filled by hoody-vfs normally.
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.
{
"access_token": "your-gofile-access-token"
}
Terminal window
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" }'

Connect a Koofr, Digi Storage, or other Koofr-compatible storage provider.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
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-vfs (generate one at your service’s settings page).
providerstringNo""Storage provider: koofr, digistorage, or other.
setmtimebooleanNotrueWhether the backend supports setting modification time.
userstringYes""Your user name.
{
"endpoint": "https://app.koofr.net",
"user": "koofr-user",
"password": "app-password",
"provider": "koofr"
}
Terminal window
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"
}'

Connect a Linkbox backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
descriptionstringNo""Description of the remote.
tokenstringYes""Token from https://www.linkbox.to/admin/account.
{
"token": "your-linkbox-token"
}
Terminal window
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" }'

Connect a Pixeldrain Filesystem backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
api_keystringNo""API key for your pixeldrain account (https://pixeldrain.com/user/api_keys).
api_urlstringYes"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 or a shared directory ID.
{
"api_url": "https://pixeldrain.com/api",
"api_key": "your-pixeldrain-api-key",
"root_folder_id": "me"
}
Terminal window
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"
}'

Connect a premiumize.me backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
api_keystringNo""API Key. Not normally used — use OAuth instead.
auth_urlstringNo""Auth server URL. Leave blank to use the provider defaults.
client_credentialsbooleanNofalseUse the OAuth2 client credentials flow.
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.
{
"client_id": "your-premiumize-client-id",
"client_secret": "your-premiumize-client-secret"
}
Terminal window
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"
}'

Connect a Uloz.to backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
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-vfs will use this folder as the root folder for all operations.
usernamestringNo""The username of the principal to operate as.
{
"username": "ulozuser",
"password": "uloz-password",
"app_token": "your-uloz-app-token"
}
Terminal window
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"
}'

Connect an Uptobox backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
access_tokenstringNo""Your access token from https://uptobox.com/my_account.
descriptionstringNo""Description of the remote.
encodingstringNo"50561070"The encoding for the backend.
privatebooleanNofalseSet to make uploaded files private.
{
"access_token": "your-uptobox-access-token",
"private": false
}
Terminal window
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"
}'