buckets.ninja is a full S3-compatible object store. If your tool speaks the S3 API — rclone, aws-cli, Cyberduck, Veeam, Restic, or your own SDK — it works here. This page is the reference for the endpoint, which operations are supported, how requests are billed, and the few operations we deliberately do not expose.
Endpoint
| Endpoint | https://s3.buckets.ninja |
| Region | any value is accepted |
| Addressing | Virtual-host style (bucket.s3.buckets.ninja) and path style both work |
| TLS | Required — HTTPS only |
| Credentials | Access key + secret from Buckets → Access keys in the panel |
Buckets are created and deleted in the panel, not over the API — see "What is not exposed" below. Once a bucket exists, everything inside it is done over S3.
Billing classes
Requests fall into three classes. Writes are always free; reads and metadata have generous monthly free tiers that reset on the 1st of each month. You are only billed for overage beyond the free tier.
| Class | Operations | Free tier | Overage |
|---|---|---|---|
| A — Writes | PUT, POST, multipart uploads, bucket config | Unlimited | Always free |
| B — Reads | GET, HEAD, downloads | 100,000 / month | €0.40 per million |
| C — Metadata | LIST, COPY, bucket listings | 100,000 / month | €2.00 per million |
Storage is €7.99 per TB per month (1 TB minimum). Each TB you commit includes 1 TB of egress; egress beyond that is €3.00 per TB. Ingress (uploads) is always free.
Supported operations
Objects
| Operation | S3 action | Class |
|---|---|---|
| Upload object | PutObject | A |
| Multipart upload | CreateMultipartUpload, UploadPart, CompleteMultipartUpload, AbortMultipartUpload, ListParts | A |
| Download object | GetObject, GetObjectVersion | B |
| Object metadata | HeadObject | B |
| List objects | ListObjectsV2, ListObjectVersions | C |
| Copy object | CopyObject | C |
| Delete object | DeleteObject, DeleteObjectVersion | A |
| Object tags | GetObjectTagging, PutObjectTagging | B / A |
| Pre-signed URLs | signed GET / PUT | B / A |
Buckets (configuration only)
| Operation | S3 action | Class |
|---|---|---|
| Bucket location | GetBucketLocation | C |
| Versioning | GetBucketVersioning, PutBucketVersioning | C / A |
| Object lock config | GetObjectLockConfiguration | C |
| Lifecycle rules | GetLifecycleConfiguration, PutLifecycleConfiguration | C / A |
Versioning is toggled per bucket from the panel as well as over the API.
Immutability (object lock)
Object lock is supported in Governance mode: you can make an object immutable against accidental deletion, ransomware, and your own tooling.
-
✓
PutObjectRetentioninGOVERNANCEmode, and reading retention / legal-hold state. -
✗
COMPLIANCEmode retention andPutObjectLegalHoldare not available. Governance retention is available and gives you strong protection while keeping that guarantee intact.
What is not exposed, and why
- CreateBucket / DeleteBucket — buckets are managed in the panel, so provisioning and billing stay in one place. Your keys cannot create or delete buckets over S3; everything else inside them works normally.
If your client tries to list all buckets at startup (some do), point it directly at a known bucket name rather than relying on discovery, and it will work.
Tested clients
rclone, aws-cli, Cyberduck, Veeam, Restic, and anything built on the AWS SDKs. rclone needs three specific settings to handle our at-rest encryption correctly — the panel's downloadable rclone.conf includes them, and there is a separate guide explaining why.