S3 Compatibility Matrix
Hippius S3 is S3-compatible with a focused feature set. If you already have S3 code, you only need to change three things: endpoint URL, region, and credentials. Everything else stays the same.
This page lists every S3 API operation and whether we support it.
Connection Parameters
| Parameter | Value |
|---|---|
| Endpoint | https://s3.hippius.com |
| Region | decentralized |
| Signature | AWS Signature V4 |
| Addressing | Path-style (s3.hippius.com/bucket/key) |
Same values as the S3 Quickstart. Always use https://s3.hippius.com.
Bucket Operations
| Operation | Status | Notes |
|---|---|---|
CreateBucket | ✅ Supported | |
DeleteBucket | ✅ Supported | Must be empty |
HeadBucket | ✅ Supported | |
ListBuckets | ✅ Supported | |
GetBucketLocation | ✅ Supported | Returns us-east-1. Clients still sign with region decentralized |
PutBucketAcl | ✅ Supported | private, public-read, public-read-write, authenticated-read |
GetBucketAcl | ✅ Supported | |
PutBucketPolicy | ⚠️ Partial | Accepts a standard public-read policy only, and marks the bucket public. Other statements are rejected |
GetBucketPolicy | ✅ Supported | Returns the policy for public buckets; 404 NoSuchBucketPolicy on private buckets |
DeleteBucketPolicy | ❌ Not supported | Returns 501 NotImplemented. Set the bucket ACL back to private instead |
PutBucketTagging | ✅ Supported | |
GetBucketTagging | ✅ Supported | |
DeleteBucketTagging | ✅ Supported | |
PutBucketLifecycleConfiguration | ⚠️ Accepted, not applied | The configuration is acknowledged but not stored. No objects expire |
GetBucketLifecycleConfiguration | ⚠️ Partial | Always 404 NoSuchLifecycleConfiguration |
PutBucketVersioning | ⚠️ Partial | Enabled only — Suspended returns 501 |
GetBucketVersioning | ✅ Supported | Omits Status when versioning was never enabled |
PutObjectLockConfiguration | ✅ Supported | Bucket default retention, Days or Years. Requires versioning — see Object Lock |
GetObjectLockConfiguration | ✅ Supported | 404 ObjectLockConfigurationNotFoundError when unset |
PutBucketCors | ❌ Not supported | Returns 200 and ignores the configuration. CORS is handled at the gateway level |
PutBucketNotificationConfiguration | ❌ Not supported | |
PutBucketReplication | ❌ Not supported | Data is replicated by the network automatically |
PutBucketLogging | ❌ Not supported |
Object Operations
| Operation | Status | Notes |
|---|---|---|
PutObject | ✅ Supported | Up to ~5 TiB via multipart |
GetObject | ✅ Supported | Range requests supported (video streaming) |
HeadObject | ✅ Supported | |
DeleteObject | ✅ Supported | |
DeleteObjects | ✅ Supported | Bulk delete |
CopyObject | ✅ Supported | |
ListObjectsV2 | ✅ Supported | Pagination, prefix, delimiter |
ListObjects | ✅ Supported | V1 — prefer ListObjectsV2 |
PutObjectAcl | ✅ Supported | Per-object ACLs |
GetObjectAcl | ✅ Supported | |
PutObjectTagging | ✅ Supported | |
GetObjectTagging | ✅ Supported | |
DeleteObjectTagging | ✅ Supported | |
ListObjectVersions | ✅ Supported | Versions and delete markers; prefix, delimiter, paging |
PutObjectRetention | ✅ Supported | Per version. Extend allowed, shorten refused — see Object Lock |
GetObjectRetention | ✅ Supported | |
PutObjectLegalHold | ✅ Supported | Indefinite lock, independent of retention |
GetObjectLegalHold | ✅ Supported | |
SelectObjectContent | ❌ Not supported | S3 Select |
PostObject | ❌ Not supported | Browser form uploads — use a presigned PutObject |
Versioning and Object Lock
Both are supported. Object Lock gives you write-once-read-many (WORM) retention with GOVERNANCE and COMPLIANCE modes, legal holds, and bucket-wide default retention — enforced below the API, so a locked version cannot be permanently deleted by anyone until it expires.
| Capability | Status | Notes |
|---|---|---|
| Bucket versioning | ✅ Supported | Enabled only; Suspended returns 501 |
Object Lock — GOVERNANCE | ✅ Supported | Bucket owner can bypass with an explicit header |
Object Lock — COMPLIANCE | ✅ Supported | Cannot be shortened, cleared, or bypassed by anyone |
| Legal holds | ✅ Supported | Indefinite; independent of retention |
| Bucket default retention | ✅ Supported | Days or Years; applies to PUT, multipart and copy |
| Enable Object Lock on an existing bucket | ✅ Supported | Requires versioning first; no x-amz-bucket-object-lock-token needed |
Lock headers on CompleteMultipartUpload | ❌ Not supported | Set them on CreateMultipartUpload instead |
Lock headers on GetObject responses | ❌ Not supported | Use HeadObject |
| S3 Batch Operations | ❌ Not supported | Apply locks per object |
| Replicating lock state | ❌ Not supported | Set the lock on the destination |
→ Full guide with examples: Object Lock (WORM)
Multipart Upload
| Operation | Status | Notes |
|---|---|---|
CreateMultipartUpload | ✅ Supported | Accepts x-amz-object-lock-* headers |
UploadPart | ✅ Supported | |
CompleteMultipartUpload | ✅ Supported | |
AbortMultipartUpload | ✅ Supported | |
ListMultipartUploads | ✅ Supported | |
ListParts | ✅ Supported |
Presigned URLs
| Operation | Status | Notes |
|---|---|---|
| Presigned GET | ✅ Supported | Max expiry: 7 days |
| Presigned PUT | ✅ Supported | Max expiry: 7 days |
| Presigned DELETE | ✅ Supported |
What's Different
Hippius S3 is S3-compatible but not a clone of any other provider. Here's what to keep in mind:
- Path-style only. Virtual-hosted style (
bucket.s3.hippius.com) is not supported. Always useforcePathStyle: trueoraddressing_style: "path". - Single region. There's no multi-region setup. The region is always
decentralized. - Versioning cannot be suspended. You can enable it, but
Suspendedreturns 501. Enable it deliberately. Standard S3 does not allow suspending versioning on a bucket with Object Lock either. - Object Lock bypass is owner-only. Standard S3 gates
BypassGovernanceRetentionon IAM; Hippius has no IAM, so the bucket owner is the only identity that can bypass a GOVERNANCE retention. - No S3 Select. You can't query inside objects. Download the object and process it locally.
- No event notifications. There's no equivalent of S3 Event Notifications.
- Lifecycle rules do nothing yet. The configuration is accepted so that clients don't fail, but no object is expired or transitioned.
- Bucket policies are a public-read switch. Only the standard public-read policy is accepted. Use ACLs and sub-tokens for everything else.
- Replication is automatic. The Hippius network handles data replication across miners. You don't need to configure cross-region replication.
Tested Clients
These S3 clients are tested and confirmed to work with Hippius S3:
| Client | Language | Guide |
|---|---|---|
| boto3 | Python | Python guide |
| minio-py | Python | Python guide |
| @aws-sdk/client-s3 | JavaScript | JavaScript guide |
| minio-js | JavaScript | JavaScript guide |
| AWS CLI | CLI | AWS CLI guide |
| rclone | CLI | rclone guide |
Further Reading
- S3 Quickstart: first upload
- Advanced Usage — presigned URLs, ACLs, public buckets, sub-tokens
- Object Lock (WORM) — retention and legal holds
- Hippius S3 Benchmarks — live performance benchmarks
- S3 API reference — any operation marked "Supported" above works identically
- hippius-s3 on GitHub — report issues or request features
- llms.txt — machine-readable docs for AI agents