Object Storage
Section titled “Object Storage”Connect object storage backends to the Hoody platform. Each endpoint registers a new storage backend with the appropriate cloud provider credentials and configuration. Use these endpoints to integrate providers like AWS S3, Azure Blob Storage, Google Cloud Storage, Backblaze B2, and many more.
All endpoints follow the same pattern: POST /api/v1/backends/{provider} with a JSON configuration body. On success the backend is registered and an ID is returned; on failure a validation error is returned.
AWS S3 and S3-Compatible Storage
Section titled “AWS S3 and S3-Compatible Storage”POST /api/v1/backends/s3
Section titled “POST /api/v1/backends/s3”Connect to an Amazon S3 backend. This endpoint also covers S3-compatible providers including AWS, Alibaba, ArvanCloud, Ceph, ChinaMobile, Cloudflare, DigitalOcean, Dreamhost, GCS, HuaweiOBS, IBMCOS, IDrive, IONOS, LyveCloud, Leviia, Liara, Linode, Magalu, Minio, Netease, Outscale, Petabox, RackCorp, Scaleway, SeaweedFS, Selectel, StackPath, Storj, Synology, TencentCOS, Wasabi, and Qiniu.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
endpoint | string | Yes | "" | Endpoint for S3 API. Required when using an S3 clone. |
access_key_id | string | No | "" | AWS Access Key ID. Leave blank for anonymous access or runtime credentials. |
secret_access_key | string | No | "" | AWS Secret Access Key. Leave blank for anonymous access or runtime credentials. |
region | string | No | "" | Region to connect to. Leave blank if using an S3 clone without a region. |
provider | string | No | "" | Choose your S3 provider (e.g. AWS, Cloudflare, DigitalOcean, Minio, Wasabi, Other). |
bucket_acl | string | No | "" | Canned ACL used when creating buckets (private, public-read, public-read-write, authenticated-read). |
acl | string | No | "" | Canned ACL used when creating buckets and storing or copying objects. |
chunk_size | string | No | "5242880" | Chunk size used for multipart uploads (in bytes). |
upload_cutoff | string | No | "209715200" | Cutoff for switching to chunked upload. |
upload_concurrency | integer | No | 4 | Concurrency for multipart uploads and copies. |
copy_cutoff | string | No | "4999610368" | Cutoff for switching to multipart copy. |
max_upload_parts | integer | No | 10000 | Maximum number of parts in a multipart upload. |
force_path_style | boolean | No | true | If true use path style access; if false use virtual hosted style. |
env_auth | boolean | No | false | Get AWS credentials from runtime (environment variables or EC2/ECS metadata). |
v2_auth | boolean | No | false | If true use v2 authentication. Use only if v4 signatures do not work. |
use_accelerate_endpoint | boolean | No | false | If true use the AWS S3 accelerated endpoint. |
use_dual_stack | boolean | No | false | If true use the AWS S3 dual-stack endpoint (IPv6 support). |
requester_pays | boolean | No | false | Enables requester pays option when interacting with the S3 bucket. |
no_check_bucket | boolean | No | false | Don’t attempt to check the bucket exists or create it. |
disable_checksum | boolean | No | false | Don’t store MD5 checksum with object metadata. |
directory_markers | boolean | No | false | Upload an empty object with trailing slash for new directories. |
storage_class | string | No | "" | Storage class for new objects (STANDARD, LINE, GLACIER, DEEP_ARCHIVE). |
server_side_encryption | string | No | "" | Server-side encryption algorithm (AES256, aws:kms). |
sse_kms_key_id | string | No | "" | If using KMS, the ARN of the key. |
session_token | string | No | "" | An AWS session token. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/s3 \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "endpoint": "s3.us-east-1.amazonaws.com", "provider": "AWS", "region": "us-east-1", "access_key_id": "AKIAIOSFODNN7EXAMPLE", "secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "description": "Production AWS S3 bucket" }'await client.files.backends.connectS3({ endpoint: "s3.us-east-1.amazonaws.com", provider: "AWS", region: "us-east-1", access_key_id: "AKIAIOSFODNN7EXAMPLE", secret_access_key: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", description: "Production AWS S3 bucket"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "s3", "mount_paths": [] }}{ "success": false, "error": "endpoint is required when using an S3 clone"}Microsoft Azure
Section titled “Microsoft Azure”POST /api/v1/backends/azureblob
Section titled “POST /api/v1/backends/azureblob”Connect to a Microsoft Azure Blob Storage backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
account | string | No | "" | Azure Storage Account Name. Leave blank to use SAS URL or Emulator. |
key | string | No | "" | Storage Account Shared Key. Leave blank to use SAS URL or Emulator. |
sas_url | string | No | "" | SAS URL for container level access only. |
tenant | string | No | "" | ID of the service principal’s tenant. Required for service principal auth. |
client_id | string | No | "" | The ID of the client in use. Required for service principal auth. |
client_secret | string | No | "" | One of the service principal’s client secrets. |
client_certificate_path | string | No | "" | Path to a PEM or PKCS12 certificate file including the private key. |
client_certificate_password | string | No | "" | Password for the certificate file. |
endpoint | string | No | "" | Endpoint for the service. Leave blank normally. |
public_access | string | No | "" | Public access level of a container ("", blob, container). |
access_tier | string | No | "" | Access tier of blob (hot, cool, cold, archive). |
chunk_size | string | No | "4194304" | Upload chunk size. |
upload_concurrency | integer | No | 16 | Concurrency for multipart uploads. |
upload_cutoff | string | No | "" | Cutoff for switching to chunked upload. |
list_chunk | integer | No | 5000 | Size of blob list. |
env_auth | boolean | No | false | Read credentials from runtime. |
use_msi | boolean | No | false | Use a managed service identity to authenticate. |
use_az | boolean | No | false | Use the Azure CLI tool az for authentication. |
use_emulator | boolean | No | false | Use local storage emulator if provided as ‘true’. |
directory_markers | boolean | No | false | Upload empty directory marker objects. |
disable_checksum | boolean | No | false | Don’t store MD5 checksum with object metadata. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/azureblob \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "account": "mystorageaccount", "key": "base64encodedsharedkey==", "description": "Production blob storage" }'await client.files.backends.connectAzureblob({ account: "mystorageaccount", key: "base64encodedsharedkey==", description: "Production blob storage"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "azureblob", "mount_paths": [] }}{ "success": false, "error": "Either account/key, SAS URL, or emulator must be provided"}POST /api/v1/backends/azurefiles
Section titled “POST /api/v1/backends/azurefiles”Connect to a Microsoft Azure Files backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
share_name | string | No | "" | Azure Files Share Name. Required. |
account | string | No | "" | Azure Storage Account Name. |
key | string | No | "" | Storage Account Shared Key. |
connection_string | string | No | "" | Azure Files Connection String. |
sas_url | string | No | "" | SAS URL. |
tenant | string | No | "" | ID of the service principal’s tenant. |
client_id | string | No | "" | The ID of the client in use. |
client_secret | string | No | "" | One of the service principal’s client secrets. |
client_certificate_path | string | No | "" | Path to a PEM or PKCS12 certificate file. |
client_certificate_password | string | No | "" | Password for the certificate file. |
endpoint | string | No | "" | Endpoint for the service. |
chunk_size | string | No | "4194304" | Upload chunk size. |
upload_concurrency | integer | No | 16 | Concurrency for multipart uploads. |
max_stream_size | string | No | "10737418240" | Max size for streamed files. |
env_auth | boolean | No | false | Read credentials from runtime. |
use_msi | boolean | No | false | Use a managed service identity to authenticate. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/azurefiles \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "account": "mystorageaccount", "key": "base64encodedsharedkey==", "share_name": "myshare" }'await client.files.backends.connectAzurefiles({ account: "mystorageaccount", key: "base64encodedsharedkey==", share_name: "myshare"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "azurefiles", "mount_paths": [] }}{ "success": false, "error": "share_name is required"}Google Cloud Storage
Section titled “Google Cloud Storage”POST /api/v1/backends/google-cloud-storage
Section titled “POST /api/v1/backends/google-cloud-storage”Connect to a Google Cloud Storage backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
service_account_file | string | No | "" | Service Account Credentials JSON file path. |
service_account_credentials | string | No | "" | Service Account Credentials JSON blob. |
client_id | string | No | "" | OAuth Client Id. |
client_secret | string | No | "" | OAuth Client Secret. |
project_number | string | No | "" | Project number. Needed only for list/create/delete buckets. |
bucket_acl | string | No | "" | Access Control List for new buckets. |
object_acl | string | No | "" | Access Control List for new objects. |
storage_class | string | No | "" | Storage class for new objects. |
location | string | No | "" | Location for newly created buckets. |
endpoint | string | No | "" | Endpoint for the service. |
env_auth | boolean | No | false | Get GCP IAM credentials from runtime. |
anonymous | boolean | No | false | Access public buckets and objects without credentials. |
bucket_policy_only | boolean | No | false | Access checks should use bucket-level IAM policies. |
decompress | boolean | No | false | Decompress gzip encoded objects on download. |
directory_markers | boolean | No | false | Upload empty directory marker objects. |
no_check_bucket | boolean | No | false | Don’t attempt to check the bucket exists or create it. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/google-cloud-storage \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "service_account_file": "/path/to/service-account.json", "project_number": "123456789012", "description": "Production GCS bucket" }'await client.files.backends.connectGoogleCloudStorage({ service_account_file: "/path/to/service-account.json", project_number: "123456789012", description: "Production GCS bucket"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "google cloud storage", "mount_paths": [] }}{ "success": false, "error": "service_account_file, service_account_credentials, or env_auth must be provided"}Backblaze, Cloudinary, and ImageKit
Section titled “Backblaze, Cloudinary, and ImageKit”POST /api/v1/backends/b2
Section titled “POST /api/v1/backends/b2”Connect to a Backblaze B2 backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
account | string | Yes | "" | Account ID or Application Key ID. |
key | string | Yes | "" | Application Key. |
endpoint | string | No | "" | Endpoint for the service. |
download_url | string | No | "" | Custom endpoint for downloads (e.g. Cloudflare CDN). |
chunk_size | string | No | "100663296" | Upload chunk size. |
upload_cutoff | string | No | "209715200" | Cutoff for switching to chunked upload. |
upload_concurrency | integer | No | 4 | Concurrency for multipart uploads. |
copy_cutoff | string | No | "4294967296" | Cutoff for switching to multipart copy. |
download_auth_duration | integer | No | 604800 | Time before public link authorization token expires (seconds). |
lifecycle | integer | No | 0 | Days deleted files are kept when creating a bucket. |
hard_delete | boolean | No | false | Permanently delete files on remote removal. |
versions | boolean | No | false | Include old versions in directory listings. |
disable_checksum | boolean | No | false | Disable checksums for large files. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/b2 \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "account": "005a0b5d8c4e5f60000000001", "key": "K005abc123def456ghi789jkl012mno345pqr678stu", "description": "Production B2 bucket" }'await client.files.backends.connectB2({ account: "005a0b5d8c4e5f60000000001", key: "K005abc123def456ghi789jkl012mno345pqr678stu", description: "Production B2 bucket"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "b2", "mount_paths": [] }}{ "success": false, "error": "account and key are required"}POST /api/v1/backends/cloudinary
Section titled “POST /api/v1/backends/cloudinary”Connect to a Cloudinary backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
cloud_name | string | Yes | "" | Cloudinary Environment Name. |
api_key | string | Yes | "" | Cloudinary API Key. |
api_secret | string | Yes | "" | Cloudinary API Secret. |
upload_prefix | string | No | "" | API endpoint for environments outside the US. |
upload_preset | string | No | "" | Upload Preset to select asset manipulation on upload. |
eventually_consistent_delay | integer | No | 0 | Wait time in seconds for eventual consistency. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/cloudinary \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "cloud_name": "my-cloud", "api_key": "123456789012345", "api_secret": "abcdefghijklmnopqrstuvwxyz12", "upload_preset": "my-preset" }'await client.files.backends.connectCloudinary({ cloud_name: "my-cloud", api_key: "123456789012345", api_secret: "abcdefghijklmnopqrstuvwxyz12", upload_preset: "my-preset"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "cloudinary", "mount_paths": [] }}{ "success": false, "error": "cloud_name, api_key, and api_secret are required"}POST /api/v1/backends/imagekit
Section titled “POST /api/v1/backends/imagekit”Connect to an ImageKit.io backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
endpoint | string | Yes | "" | ImageKit.io URL endpoint from the developer dashboard. |
public_key | string | Yes | "" | ImageKit.io public key. |
private_key | string | Yes | "" | ImageKit.io private key. |
only_signed | boolean | No | false | Set to true if Restrict unsigned image URLs is enabled in the dashboard. |
upload_tags | string | No | "" | Tags to add to uploaded files (e.g. tag1,tag2). |
versions | boolean | No | false | Include old versions in directory listings. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/imagekit \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "endpoint": "https://ik.imagekit.io/myimagekitid", "public_key": "public_abc123", "private_key": "private_xyz789" }'await client.files.backends.connectImagekit({ endpoint: "https://ik.imagekit.io/myimagekitid", public_key: "public_abc123", private_key: "private_xyz789"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "imagekit", "mount_paths": [] }}{ "success": false, "error": "endpoint, public_key, and private_key are required"}Enterprise and Specialty Providers
Section titled “Enterprise and Specialty Providers”POST /api/v1/backends/netstorage
Section titled “POST /api/v1/backends/netstorage”Connect to an Akamai NetStorage backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
host | string | Yes | "" | Domain+path of NetStorage host. Format: <domain>/<internal folders>. |
account | string | Yes | "" | NetStorage account name. |
secret | string | Yes | "" | NetStorage account secret/G2O key. |
protocol | string | No | "https" | Protocol to use (http or https). |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/netstorage \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "host": "example-nsu.akamaihd.net/1234", "account": "myaccount", "secret": "my-secret-key" }'await client.files.backends.connectNetstorage({ host: "example-nsu.akamaihd.net/1234", account: "myaccount", secret: "my-secret-key"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "netstorage", "mount_paths": [] }}{ "success": false, "error": "host, account, and secret are required"}POST /api/v1/backends/oracleobjectstorage
Section titled “POST /api/v1/backends/oracleobjectstorage”Connect to an Oracle Cloud Infrastructure Object Storage backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
provider | string | Yes | "env_auth" | Choose your Auth Provider. |
namespace | string | Yes | "" | Object storage namespace. |
region | string | Yes | "" | Object storage Region. |
compartment | string | No | "" | Compartment OCID, needed for listing buckets. |
endpoint | string | No | "" | Endpoint for Object storage API. |
config_file | string | No | "~/.oci/config" | Path to OCI config file. |
config_profile | string | No | "Default" | Profile name inside the oci config file. |
chunk_size | string | No | "5242880" | Chunk size for uploading. |
upload_cutoff | string | No | "209715200" | Cutoff for switching to chunked upload. |
upload_concurrency | integer | No | 10 | Concurrency for multipart uploads. |
copy_cutoff | string | No | "4999610368" | Cutoff for switching to multipart copy. |
copy_timeout | integer | No | 60 | Timeout for copy operation in seconds. |
max_upload_parts | integer | No | 10000 | Maximum number of parts in a multipart upload. |
storage_tier | string | No | "Standard" | Storage class (Standard, InfrequentAccess, Archive). |
attempt_resume_upload | boolean | No | false | Attempt to resume previously started multipart upload. |
leave_parts_on_error | boolean | No | false | Avoid calling abort upload on failure. |
no_check_bucket | boolean | No | false | Don’t attempt to check the bucket exists or create it. |
disable_checksum | boolean | No | false | Don’t store MD5 checksum with object metadata. |
sse_customer_algorithm | string | No | "" | If using SSE-C, the encryption algorithm (AES256). |
sse_kms_key_id | string | No | "" | If using your own master key in vault, the OCID. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/oracleobjectstorage \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "provider": "user_principal_auth", "namespace": "my-namespace", "region": "us-ashburn-1", "compartment": "ocid1.compartment.oc1..example" }'await client.files.backends.connectOracleobjectstorage({ provider: "user_principal_auth", namespace: "my-namespace", region: "us-ashburn-1", compartment: "ocid1.compartment.oc1..example"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "oracleobjectstorage", "mount_paths": [] }}{ "success": false, "error": "provider, namespace, and region are required"}POST /api/v1/backends/qingstor
Section titled “POST /api/v1/backends/qingstor”Connect to a QingCloud Object Storage backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
access_key_id | string | No | "" | QingStor Access Key ID. Leave blank for anonymous access or runtime credentials. |
secret_access_key | string | No | "" | QingStor Secret Access Key. |
endpoint | string | No | "" | Endpoint URL for QingStor API. Defaults to https://qingstor.com:443. |
zone | string | No | "" | Zone to connect to (pek3a, sh1a, gd2a). |
chunk_size | string | No | "4194304" | Chunk size for uploading. |
upload_cutoff | string | No | "209715200" | Cutoff for switching to chunked upload. |
upload_concurrency | integer | No | 1 | Concurrency for multipart uploads. |
connection_retries | integer | No | 3 | Number of connection retries. |
env_auth | boolean | No | false | Get QingStor credentials from runtime. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/qingstor \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "access_key_id": "QINGSTOR_ACCESS_KEY", "secret_access_key": "QINGSTOR_SECRET_KEY", "zone": "pek3a" }'await client.files.backends.connectQingstor({ access_key_id: "QINGSTOR_ACCESS_KEY", secret_access_key: "QINGSTOR_SECRET_KEY", zone: "pek3a"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "qingstor", "mount_paths": [] }}{ "success": false, "error": "Invalid zone specified"}Internet Archive
Section titled “Internet Archive”POST /api/v1/backends/internetarchive
Section titled “POST /api/v1/backends/internetarchive”Connect to an Internet Archive backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
access_key_id | string | No | "" | IAS3 Access Key. Leave blank for anonymous access. |
secret_access_key | string | No | "" | IAS3 Secret Key. Leave blank for anonymous access. |
endpoint | string | No | "https://s3.us.archive.org" | IAS3 Endpoint. |
front_endpoint | string | No | "https://archive.org" | Host of InternetArchive Frontend. |
wait_archive | integer | No | 0 | Timeout for waiting on server’s processing tasks (seconds). |
disable_checksum | boolean | No | true | Don’t ask the server to test against MD5 checksum. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/internetarchive \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "access_key_id": "my-access-key", "secret_access_key": "my-secret-key", "description": "Archive.org collection" }'await client.files.backends.connectInternetarchive({ access_key_id: "my-access-key", secret_access_key: "my-secret-key", description: "Archive.org collection"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "internetarchive", "mount_paths": [] }}{ "success": false, "error": "Invalid Internet Archive credentials"}Decentralized Storage
Section titled “Decentralized Storage”POST /api/v1/backends/sia
Section titled “POST /api/v1/backends/sia”Connect to a Sia Decentralized Cloud backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
api_url | string | No | "http://127.0.0.1:9980" | Sia daemon API URL. |
api_password | string | No | "" | Sia Daemon API Password. |
user_agent | string | No | "Sia-Agent" | Siad User Agent. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/sia \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "api_url": "http://127.0.0.1:9980", "api_password": "my-sia-password" }'await client.files.backends.connectSia({ api_url: "http://127.0.0.1:9980", api_password: "my-sia-password"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "sia", "mount_paths": [] }}{ "success": false, "error": "Could not connect to Sia daemon at the provided api_url"}POST /api/v1/backends/storj
Section titled “POST /api/v1/backends/storj”Connect to a Storj Decentralized Cloud Storage backend.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
provider | string | No | "existing" | Choose an authentication method (existing or new). |
satellite_address | string | No | "us1.storj.io" | Satellite address (us1.storj.io, eu1.storj.io, ap1.storj.io). |
api_key | string | No | "" | API key. |
passphrase | string | No | "" | Encryption passphrase. |
access_grant | string | No | "" | Access grant. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/storj \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "provider": "existing", "satellite_address": "us1.storj.io", "api_key": "my-storj-api-key", "passphrase": "my-encryption-passphrase" }'await client.files.backends.connectStorj({ provider: "existing", satellite_address: "us1.storj.io", api_key: "my-storj-api-key", passphrase: "my-encryption-passphrase"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "storj", "mount_paths": [] }}{ "success": false, "error": "Invalid Storj credentials"}POST /api/v1/backends/tardigrade
Section titled “POST /api/v1/backends/tardigrade”Connect to a Tardigrade Decentralized Cloud Storage backend (legacy Storj branding).
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
provider | string | No | "existing" | Choose an authentication method (existing or new). |
satellite_address | string | No | "us1.storj.io" | Satellite address (us1.storj.io, eu1.storj.io, ap1.storj.io). |
api_key | string | No | "" | API key. |
passphrase | string | No | "" | Encryption passphrase. |
access_grant | string | No | "" | Access grant. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/tardigrade \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "provider": "existing", "satellite_address": "us1.storj.io", "api_key": "my-tardigrade-api-key", "passphrase": "my-encryption-passphrase" }'await client.files.backends.connectTardigrade({ provider: "existing", satellite_address: "us1.storj.io", api_key: "my-tardigrade-api-key", passphrase: "my-encryption-passphrase"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "tardigrade", "mount_paths": [] }}{ "success": false, "error": "Invalid Tardigrade credentials"}OpenStack Swift
Section titled “OpenStack Swift”POST /api/v1/backends/swift
Section titled “POST /api/v1/backends/swift”Connect to an OpenStack Swift backend. This endpoint covers Rackspace Cloud Files, Blomp Cloud Storage, Memset Memstore, and OVH.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
user | string | No | "" | User name to log in (OS_USERNAME). |
key | string | No | "" | API key or password (OS_PASSWORD). |
auth | string | No | "" | Authentication URL for server (OS_AUTH_URL). |
user_id | string | No | "" | User ID to log in (v3 auth). |
tenant | string | No | "" | Tenant name (OS_TENANT_NAME or OS_PROJECT_NAME). |
tenant_id | string | No | "" | Tenant ID (OS_TENANT_ID). |
tenant_domain | string | No | "" | Tenant domain (v3 auth). |
domain | string | No | "" | User domain (v3 auth). |
region | string | No | "" | Region name (OS_REGION_NAME). |
storage_url | string | No | "" | Storage URL (OS_STORAGE_URL). |
auth_token | string | No | "" | Auth Token from alternate authentication (OS_AUTH_TOKEN). |
application_credential_id | string | No | "" | Application Credential ID. |
application_credential_name | string | No | "" | Application Credential Name. |
application_credential_secret | string | No | "" | Application Credential Secret. |
auth_version | integer | No | 0 | AuthVersion (1, 2, or 3). |
endpoint_type | string | No | "public" | Endpoint type (public, internal, admin). |
storage_policy | string | No | "" | Storage policy for new containers ("", pcs, pca). |
chunk_size | string | No | "5368709120" | Files above this size will be chunked. |
env_auth | boolean | No | false | Get swift credentials from environment variables. |
no_chunk | boolean | No | false | Don’t chunk files during streaming upload. |
no_large_objects | boolean | No | false | Disable support for static and dynamic large objects. |
leave_parts_on_error | boolean | No | false | Avoid calling abort upload on failure. |
fetch_until_empty_page | boolean | No | false | When paginating, always fetch unless an empty page is received. |
partial_page_fetch_threshold | integer | No | 0 | Fetch if current page is within this percentage of the limit. |
description | string | No | "" | Description of the remote. |
curl -X POST https://api.hoody.com/api/v1/backends/swift \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "user": "myuser", "key": "mypassword", "auth": "https://auth.cloud.ovh.net/v3", "tenant": "mytenant", "region": "GRA1" }'await client.files.backends.connectSwift({ user: "myuser", key: "mypassword", auth: "https://auth.cloud.ovh.net/v3", tenant: "mytenant", region: "GRA1"});{ "success": true, "message": "Backend connected successfully", "data": { "id": "bk_01HXYZ123ABC456DEF", "type": "object_storage", "backend_type": "swift", "mount_paths": [] }}{ "success": false, "error": "Swift authentication failed: invalid credentials"}