Overview
Set up your own S3-compatible storage for uploaded videos. Credentials are verified before saving.
Your API key for authentication
Request Body
S3 endpoint URL (e.g., https://s3.us-east-1.amazonaws.com or https://ACCOUNT_ID.r2.cloudflarestorage.com)
AWS region (e.g., us-east-1, auto for R2)
AWS Access Key ID or equivalent
AWS Secret Access Key or equivalent
Optional folder prefix for organizing uploads (e.g., downloads/2024/)
Base folder name for uploaded files. Defaults to videos if not specified. Set to a custom value to change the top-level folder where files are stored (e.g., downloads, media).
Response
Success confirmation message
Storage provider type: s3
The configured bucket name
The configured folder prefix (if provided)
Examples
AWS S3
Cloudflare R2
Python
Response
curl -X POST "https://api.tornadoapi.io/user/s3" \
-H "x-api-key: sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"endpoint": "https://s3.us-east-1.amazonaws.com",
"bucket": "my-tornado-downloads",
"region": "us-east-1",
"access_key": "AKIAIOSFODNN7EXAMPLE",
"secret_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"folder_prefix": "videos/"
}'
Success Response
{
"message" : "S3 storage configured successfully" ,
"provider" : "s3" ,
"container_or_bucket" : "my-tornado-downloads" ,
"folder_prefix" : "videos/"
}
Error Responses
400 Bad Request - Invalid Credentials
400 Bad Request - Bucket Not Found
401 Unauthorized
{
"error" : "Credential validation failed: Access Denied"
}
Verification Process
When you submit storage configuration, Tornado:
Validates the request format and required fields
Creates a storage client with your credentials
Attempts to upload a small test file (verify_credentials.txt)
Deletes the test file
If successful, saves the configuration encrypted
Ensure your credentials have both read and write permissions before configuring.
Required IAM Permissions
{
"Version" : "2012-10-17" ,
"Statement" : [
{
"Effect" : "Allow" ,
"Action" : [
"s3:PutObject" ,
"s3:GetObject" ,
"s3:DeleteObject" ,
"s3:ListBucket"
],
"Resource" : [
"arn:aws:s3:::your-bucket-name" ,
"arn:aws:s3:::your-bucket-name/*"
]
}
]
}
Supported S3-Compatible Providers
Provider Endpoint Format Region AWS S3 https://s3.{region}.amazonaws.comYour region Cloudflare R2 https://{account_id}.r2.cloudflarestorage.comautoDigitalOcean Spaces https://{region}.digitaloceanspaces.comYour region Backblaze B2 https://s3.{region}.backblazeb2.comYour region Wasabi https://s3.{region}.wasabisys.comYour region MinIO Your MinIO URL Your region OVH Object Storage https://s3.{region}.cloud.ovh.netYour region