Skip to content
Hoody.com

Connect storage backends through the encryption layer to wrap any existing remote with crypt (transparent encryption) or compression. The crypt overlay encrypts filenames and file data using a user-supplied password, while the compress overlay applies gzip compression on read and write. Both return a new backend identifier that you can mount like any other remote.

POST /api/v1/backends/crypt

Wrap an existing remote with transparent AES encryption. The crypt overlay encrypts filenames (by default), directory names, and file data using the password you provide, then forwards reads and writes to the underlying remote. The encrypted remote behaves like a normal backend once mounted.

This endpoint takes no parameters.

NameTypeRequiredDefaultDescription
descriptionstringNo""Description of the remote.
directory_name_encryptionbooleanNotrueEncrypt directory names. Has no effect when filename_encryption is off.
filename_encodingstringNo"base32"Encoding for encrypted filenames. Allowed values: base32, base64, base32768.
filename_encryptionstringNo"standard"Filename encryption mode. Allowed values: standard, obfuscate, off.
no_data_encryptionbooleanNofalseWhen true, file data is left unencrypted. Filename encryption still applies.
pass_bad_blocksbooleanNofalsePass unreadable blocks through as zeros. Only set this when recovering a damaged encrypted file.
passwordstringYes""Password or pass phrase for encryption.
password2stringNo""Optional salt password. Recommended and should differ from password.
remotestringYes""Remote to encrypt or decrypt, in the form myremote:path/to/dir or myremote:bucket.
server_side_across_configsbooleanNofalseAllow server-side operations to work across different crypt configs pointing at the same backend.
show_mappingbooleanNofalseLog decrypted-to-encrypted filename mappings at info level. Useful for debugging.
strict_namesbooleanNofalseRaise an error when a filename cannot be decrypted, instead of logging a notice.
suffixstringNo".bin"Suffix appended to encrypted files. Use none to disable.
Terminal window
curl -X POST https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/crypt \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"remote": "s3-archive:private",
"password": "correct horse battery staple",
"password2": "a-different-salt-value",
"filename_encryption": "standard",
"filename_encoding": "base32",
"directory_name_encryption": true,
"suffix": ".bin"
}'
{
"success": true,
"message": "Backend connected successfully",
"data": {
"backend_type": "crypt",
"id": "c2f7a9b1e3d6",
"type": "crypt",
"mount_paths": []
}
}

POST /api/v1/backends/compress

Wrap an existing remote with gzip compression. Compressed reads and writes are forwarded to the underlying remote, reducing bandwidth and storage at the cost of CPU. The compression level is configurable; the default (-1) is equivalent to level 5.

This endpoint takes no parameters.

NameTypeRequiredDefaultDescription
descriptionstringNo""Description of the remote.
levelintegerNo-1GZIP compression level. -2 is Huffman only, -1 is the default (equivalent to 5), 0 disables compression, 1-9 trade speed for size (past 6 returns diminish).
modestringNo"gzip"Compression mode. Allowed value: gzip.
ram_cache_limitstringNo"20971520"Size threshold in bytes. Files smaller than this are cached in RAM to determine their size before upload; larger files are cached on disk. Only relevant for remotes that do not accept uploads of unknown size.
remotestringYes""Remote to compress.
Terminal window
curl -X POST https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/backends/compress \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"remote": "s3-cold:logs/2026",
"mode": "gzip",
"level": 5,
"ram_cache_limit": "20971520",
"description": "Compressed archive of 2026 logs"
}'
{
"success": true,
"message": "Backend connected successfully",
"data": {
"backend_type": "compress",
"id": "8d4e2c1f7a90",
"type": "compress",
"mount_paths": []
}
}