S3 API Compatibility
This page documents S3 APIs supported by MinIO Object Storage. For reference documentation on any given API, see the corresponding documentation for Amazon S3.
Warning
Important
MinIO strongly recommends using an S3-Compatible SDK for performing object storage operations.
Object APIs
- CopyObject
- DeleteObject
- DeleteObjects
- Conditional DELETE: published Server 20260903 ignores
If-Match. Current main supports nonemptyIf-Matchon singleDeleteObject(#145/#178), including addressed-version comparison. BatchDeleteObjectsstill ignores<Object><ETag>and provides no per-item conditional guard. See scope and limitations.
- Conditional DELETE: published Server 20260903 ignores
- DeleteObjectTagging
- GetObject
- GetObjectAttributes
- GetObjectTagging
- HeadObject
- ListObjects
- ListObjectsV2
- ListObjectVersions
- PutObject
- PutObjectTagging
- RestoreObject
- SelectObjectContent
Object Locking
- GetObjectRetention
- PutObjectRetention
- GetObjectLegalHold
- PutObjectLegalHold
- GetObjectLockConfiguration
- PutObjectLockConfiguration
Unsupported API Object Endpoints
Multipart Uploads
- AbortMultipartUpload
- CompleteMultipartUpload
- CreateMultipartUpload
- ListMultipartUploads
- ListParts
- UploadPart
- UploadPartCopy
Differences from S3 APIs for Multipart Uploads
- Published Server 20260903 treats a non-empty
ListMultipartUploadsprefix as an exact object name. An empty prefix uses node-local volatile state without complete pagination, marker or delimiter semantics. - PR #198 adds durable discovery, global pagination and continuation after a native marker upload is deleted. The pre-release compatibility follow-up defaults to
legacy, retaining the old limitations; strict mode requires an explicitMINIO_API_MULTIPART_LISTING=strictenvironment setting. Before enabling strict mode, upgrade all writers, drain legacy uploads and validate both the read-only preflight and scan capacity. Strict mode returns 503 for insufficient coverage, legacy records or resource limits. An ordinary upgrade requires neither a mode switch nor forced upload drain. See the implementation and upgrade contract for ordering, scan capacity and the cancellation boundary for delayed creation writes. This is not a release or production-acceptance claim. - The
AbortIncompleteMultipartUploadlifecycle action is not supported withPutBucketLifecycle.
Bucket APIs
- CreateBucket
- DeleteBucket
- DeleteBucketEncryption
- DeleteBucketTagging
- GetBucketEncryption
- GetBucketLocation
- GetBucketTagging
- GetBucketVersioning
- HeadBucket
- ListBuckets
- ListDirectoryBuckets
- PutBucketEncryption
- PutBucketTagging
- PutBucketVersioning
Bucket Replication
Bucket Lifecycle
- GetBucketLifecycle
- GetBucketLifecycleConfiguration
- PutBucketLifecycle
- PutBucketLifecycleConfiguration
- DeleteBucketLifecycle
Bucket Notifications
- GetBucketNotification
- GetBucketNotificationConfiguration
- PutBucketNotification
- PutBucketNotificationConfiguration
Bucket Policies
- GetBucketPolicy
- GetBucketPolicyStatus
- PutBucketPolicy
- DeleteBucketPolicy
- GetBucketCors
- PutBucketCors
- DeleteBucketCors
Unsupported API Bucket Operations
MinIO alternatives for unsupported Bucket resources
- For calls to
BucketACLorObjectACLoperations, use Policies. BucketCORSoperations are supported sinceRELEASE.2026-09-03T13-18-01Z. A bucket with its own CORS configuration is served only by that configuration; buckets without one use the server-wideMINIO_API_CORS_ALLOW_ORIGINpolicy, which allows every origin by default.- For calls to
BucketWebsiteoperations, usecaddyornginx. - For calls to
BucketAnalytics,BucketMetrics, orBucketLoggingoperations, use Bucket Notifications.