SDKs & tools
Anything that speaks S3 works. These are the clients we test against on every release.
AWS CLI
aws configure set default.s3.signature_version s3v4 aws s3 mb s3://media --endpoint-url https://api.objectbasin.com aws s3 sync ./assets s3://media/2026 --endpoint-url https://api.objectbasin.com
Python (boto3)
import boto3
s3 = boto3.client("s3", endpoint_url="https://api.objectbasin.com",
aws_access_key_id=KEY, aws_secret_access_key=SECRET)
s3.upload_file("hero.jpg", "media", "2026/hero.jpg",
ExtraArgs={"ContentType": "image/jpeg"})
Node.js
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
const s3 = new S3Client({ endpoint: "https://api.objectbasin.com", region: "eu-central-1" });
await s3.send(new PutObjectCommand({ Bucket: "media", Key: "2026/hero.jpg", Body: buf }));
rclone
rclone config create objb s3 provider Other \ endpoint https://api.objectbasin.com \ access_key_id $KEY secret_access_key $SECRET rclone check ./assets objb:media/2026 --checksum
Go and Rust
The AWS SDKs for Go and Rust work with a custom endpoint and path-style addressing. Set UsePathStyle (Go) or force_path_style (Rust) and disable the x-amz-checksum-* trailer if your build predates 2024.
Compatibility notes
| Feature | Status |
|---|---|
| SigV4 signing | Supported |
| Multipart upload | Supported (up to 10 000 parts) |
| Range requests | Supported, including multi-range |
| Bucket policies | Supported (JSON, S3 syntax) |
| Object lock / WORM | Not yet — on the roadmap for Q1 |
| S3 Select, Glacier tiers | Not supported by design |