Home API & Billing Reference

API & Billing Reference

The S3 API surface, request classes and pricing.
Yvan
By Yvan
1 article

Full S3 operation reference

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. - ✓ PutObjectRetention in GOVERNANCE mode, and reading retention / legal-hold state. - ✗ COMPLIANCE mode retention and PutObjectLegalHold are 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.

Last updated on Aug 18, 2026