S3 API compatibility

Last updated Oct 14, 2026 R2 implements the S3 API to allow users and their applications to migrate with ease. When comparing to AWS S3, Cloudflare has removed some API operations' features and added others. The S3 API operations are listed below with their current implementation status. Feature implementation is currently in progress. Refer back to this page for updates. The API is available via the https://<ACCOUNT_ID>.r2.cloudflarestorage.com endpoint. Find your account ID in the Cloudflare dashboard.

How to read this page

This page has two sections: bucket-level operations and object-level operations.

Each section will have two tables: a table of implemented APIs and a table of unimplemented APIs.

Refer the feature column of each table to review which features of an API have been implemented and which have not.

✅ Feature Implemented
🚧 Feature Implemented (Experimental)
❌ Feature Not Implemented

Bucket region

When using the S3 API, the region for an R2 bucket is auto. For compatibility with tools that do not allow you to specify a region, an empty value and us-east-1 will alias to the auto region.

This also applies to the LocationConstraint for the CreateBucket API.

Checksum Types

Checksums have an algorithm and a type ↗︎. Refer to the table below.

Checksum Algorithm FULL_OBJECT COMPOSITE
CRC-64/NVME (CRC64NVME) ✅ ❌
CRC-32 (CRC32) ❌ ✅
CRC-32C (CRC32C) ❌ ✅
SHA-1 (SHA1) ❌ ✅
SHA-256 (SHA256) ❌ ✅

Bucket-level operations

The following tables are related to bucket-level operations.

Implemented bucket-level operations

Below is a list of implemented bucket-level operations. Refer to the Feature column to review which features have been implemented (✅) and have not been implemented (❌).

API Name Feature
✅ ListBuckets ↗︎
✅ HeadBucket ↗︎ ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
✅ CreateBucket ↗︎ ❌ ACL: <br>   ❌ x-amz-acl <br>   ❌ x-amz-grant-full-control <br>   ❌ x-amz-grant-read <br>   ❌ x-amz-grant-read-acp <br>   ❌ x-amz-grant-write <br>   ❌ x-amz-grant-write-acp <br> ❌ Object Locking: <br>   ❌ x-amz-bucket-object-lock-enabled <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
✅ DeleteBucket ↗︎ ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
✅ DeleteBucketCors ↗︎ ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
✅ GetBucketCors ↗︎ ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
✅ GetBucketLifecycleConfiguration ↗︎ ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
✅ GetBucketLocation ↗︎ ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
✅ GetBucketEncryption ↗︎ ❌ Bucket Owner: <br> ❌ x-amz-expected-bucket-owner
✅ PutBucketCors ↗︎ ❌ Checksums: <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
✅ PutBucketLifecycleConfiguration ↗︎ ❌ Checksums: <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner

Unimplemented bucket-level operations

<details>

<summary>

Unimplemented bucket-level operations

</summary>

API Name Feature
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html">GetBucketAccelerateConfiguration ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAcl.html">GetBucketAcl ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html">GetBucketAnalyticsConfiguration ↗︎</a> ❌ id <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html">GetBucketIntelligentTieringConfiguration ↗︎</a> ❌ id
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html">GetBucketInventoryConfiguration ↗︎</a> ❌ id <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html">GetBucketLifecycle ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html">GetBucketLogging ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html">GetBucketMetricsConfiguration ↗︎</a> ❌ id <br>❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotification.html">GetBucketNotification ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html">GetBucketNotificationConfiguration ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketOwnershipControls.html">GetBucketOwnershipControls ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html">GetBucketPolicy ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html">GetBucketPolicyStatus ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html">GetBucketReplication ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketRequestPayment.html">GetBucketRequestPayment ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html">GetBucketTagging ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html">GetBucketVersioning ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketWebsite.html">GetBucketWebsite ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html">GetObjectLockConfiguration ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html">GetPublicAccessBlock ↗︎</a> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html">ListBucketAnalyticsConfigurations ↗︎</a> ❌ Query Parameters: <br>   ❌ continuation-token <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html">ListBucketIntelligentTieringConfigurations ↗︎</a> ❌ Query Parameters: <br>   ❌ continuation-token <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html">ListBucketInventoryConfigurations ↗︎</a> ❌ Query Parameters: <br>   ❌ continuation-token <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html">ListBucketMetricsConfigurations ↗︎</a> ❌ Query Parameters: <br>   ❌ continuation-token <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html">PutBucketAccelerateConfiguration ↗︎</a> ❌ Checksums: <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAcl.html">PutBucketAcl ↗︎</a> ❌ Permissions: <br>   ❌ x-amz-grant-full-control <br>   ❌ x-amz-grant-read <br>   ❌ x-amz-grant-read-acp <br>   ❌ x-amz-grant-write <br>   ❌ x-amz-grant-write-acp <br> ❌ Checksums: <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html">PutBucketAnalyticsConfiguration ↗︎</a> ❌ id <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html">PutBucketEncryption ↗︎</a> ❌ Checksums: <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html">PutBucketIntelligentTieringConfiguration ↗︎</a> ❌ id <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html">PutBucketInventoryConfiguration ↗︎</a> ❌ id <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html">PutBucketLifecycle ↗︎</a> ❌ Checksums: <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html">PutBucketLogging ↗︎</a> ❌ Checksums: <br>   ❌ Content-MD5 <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html">PutBucketMetricsConfiguration ↗︎</a> ❌ id <br>❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotification.html">PutBucketNotification ↗︎</a> ❌ Checksums: <br>   ❌ Content-MD5 <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner:   <br> ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html">PutBucketNotificationConfiguration ↗︎</a> ❌ Validation: <br>   ❌ x-amz-skip-destination-validation <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketOwnershipControls.html">PutBucketOwnershipControls ↗︎</a> ❌ Checksums: <br>   ❌ Content-MD5 <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html">PutBucketPolicy ↗︎</a> ❌ Validation: <br>   ❌ x-amz-confirm-remove-self-bucket-access <br> ❌ Checksums: <br>   ❌ Content-MD5 <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html">PutBucketReplication ↗︎</a> ❌ Object Locking: <br>   ❌ x-amz-bucket-object-lock-token <br> ❌ Checksums: <br>   ❌ Content-MD5 <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketRequestPayment.html">PutBucketRequestPayment ↗︎</a> ❌ Checksums: <br>   ❌ Content-MD5 <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html">PutBucketTagging ↗︎</a> ❌ Checksums: <br>   ❌ Content-MD5 <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html">PutBucketVersioning ↗︎</a> ❌ Multi-factor authentication: <br>   ❌ x-amz-mfa <br> ❌ Checksums: <br>   ❌ Content-MD5 <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html">PutBucketWebsite ↗︎</a> ❌ Checksums: <br>   ❌ Content-MD5 <br> ❌ Bucket Owner: <br> ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectLockConfiguration.html">PutObjectLockConfiguration ↗︎</a> ❌ Object Locking: <br>   ❌ x-amz-bucket-object-lock-token <br> ❌ Checksums: <br>   ❌ Content-MD5 <br> ❌ Request Payer: <br>   ❌ x-amz-request-payer <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner
❌ <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html">PutPublicAccessBlock ↗︎</a> ❌ Checksums: <br>   ❌ Content-MD5 <br>   ❌ x-amz-sdk-checksum-algorithm <br>   ❌ x-amz-checksum-algorithm <br> ❌ Bucket Owner: <br>   ❌ x-amz-expected-bucket-owner