Skip to content
Start here

Enable Sippy

PUT/accounts/{account_id}/r2/buckets/{bucket_name}/sippy

Sets configuration for Sippy for an existing R2 bucket.

Security

API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
Path ParametersExpand Collapse
account_id: string

Account ID.

maxLength32
bucket_name: string

Name of the bucket.

maxLength64
minLength3
Header ParametersExpand Collapse
"cf-r2-jurisdiction": optional "default" or "eu" or "fedramp"

Jurisdiction where objects in this bucket are guaranteed to be stored.

One of the following:
"default"
"eu"
"fedramp"
Body ParametersJSONExpand Collapse
body: { destination, source } or { destination, source } or { destination, source }
One of the following:
R2EnableSippyAws { destination, source }
destination: optional { accessKeyId, provider, secretAccessKey }

R2 bucket to copy objects to.

accessKeyId: optional string

ID of a Cloudflare API token. This is the value labelled “Access Key ID” when creating an API. token from the R2 dashboard.

Sippy will use this token when writing objects to R2, so it is best to scope this token to the bucket you’re enabling Sippy for.

provider: optional Provider
secretAccessKey: optional string

Value of a Cloudflare API token. This is the value labelled “Secret Access Key” when creating an API. token from the R2 dashboard.

Sippy will use this token when writing objects to R2, so it is best to scope this token to the bucket you’re enabling Sippy for.

source: optional { accessKeyId, bucket, provider, 2 more }

AWS S3 bucket to copy objects from.

accessKeyId: optional string

Access Key ID of an IAM credential (ideally scoped to a single S3 bucket).

bucket: optional string

Name of the AWS S3 bucket.

provider: optional "aws"
region: optional string

Name of the AWS availability zone.

secretAccessKey: optional string

Secret Access Key of an IAM credential (ideally scoped to a single S3 bucket).

R2EnableSippyGcs { destination, source }
destination: optional { accessKeyId, provider, secretAccessKey }

R2 bucket to copy objects to.

accessKeyId: optional string

ID of a Cloudflare API token. This is the value labelled “Access Key ID” when creating an API. token from the R2 dashboard.

Sippy will use this token when writing objects to R2, so it is best to scope this token to the bucket you’re enabling Sippy for.

provider: optional Provider
secretAccessKey: optional string

Value of a Cloudflare API token. This is the value labelled “Secret Access Key” when creating an API. token from the R2 dashboard.

Sippy will use this token when writing objects to R2, so it is best to scope this token to the bucket you’re enabling Sippy for.

source: optional { bucket, clientEmail, privateKey, provider }

GCS bucket to copy objects from.

bucket: optional string

Name of the GCS bucket.

clientEmail: optional string

Client email of an IAM credential (ideally scoped to a single GCS bucket).

privateKey: optional string

Private Key of an IAM credential (ideally scoped to a single GCS bucket).

provider: optional "gcs"
R2EnableSippyS3 { destination, source }
destination: optional { accessKeyId, provider, secretAccessKey }

R2 bucket to copy objects to.

accessKeyId: optional string

ID of a Cloudflare API token. This is the value labelled “Access Key ID” when creating an API. token from the R2 dashboard.

Sippy will use this token when writing objects to R2, so it is best to scope this token to the bucket you’re enabling Sippy for.

provider: optional Provider
secretAccessKey: optional string

Value of a Cloudflare API token. This is the value labelled “Secret Access Key” when creating an API. token from the R2 dashboard.

Sippy will use this token when writing objects to R2, so it is best to scope this token to the bucket you’re enabling Sippy for.

source: optional { accessKeyId, bucketUrl, provider, secretAccessKey }

General S3-compatible provider to copy objects from.

accessKeyId: optional string

Access Key ID of an IAM credential (ideally scoped to a single S3 bucket).

bucketUrl: optional string

URL to the S3-compatible API of the bucket.

provider: optional "s3"
secretAccessKey: optional string

Secret Access Key of an IAM credential (ideally scoped to a single S3 bucket).

ReturnsExpand Collapse
errors: array of ResponseInfo { code, message, documentation_url, source }
code: number
minimum1000
message: string
documentation_url: optional string
source: optional { pointer }
pointer: optional string
messages: array of string
result: Sippy { destination, enabled, source }
destination: optional { accessKeyId, account, bucket, provider }

Details about the configured destination bucket.

accessKeyId: optional string

ID of the Cloudflare API token used when writing objects to this bucket.

account: optional string
bucket: optional string

Name of the bucket on the provider.

provider: optional Provider
enabled: optional boolean

State of Sippy for this bucket.

source: optional { bucket, bucketUrl, provider, region }

Details about the configured source bucket.

bucket: optional string

Name of the bucket on the provider (AWS, GCS only).

bucketUrl: optional string

S3-compatible URL (Generic S3-compatible providers only).

provider: optional "aws" or "gcs" or "s3"
One of the following:
"aws"
"gcs"
"s3"
region: optional string

Region where the bucket resides (AWS only).

success: true

Whether the API call was successful.

Enable Sippy

curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/r2/buckets/$BUCKET_NAME/sippy \
    -X PUT \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    -d '{}'
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    "string"
  ],
  "result": {
    "destination": {
      "accessKeyId": "accessKeyId",
      "account": "account",
      "bucket": "bucket",
      "provider": "r2"
    },
    "enabled": true,
    "source": {
      "bucket": "bucket",
      "bucketUrl": "bucketUrl",
      "provider": "aws",
      "region": "region"
    }
  },
  "success": true
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    "string"
  ],
  "result": {
    "destination": {
      "accessKeyId": "accessKeyId",
      "account": "account",
      "bucket": "bucket",
      "provider": "r2"
    },
    "enabled": true,
    "source": {
      "bucket": "bucket",
      "bucketUrl": "bucketUrl",
      "provider": "aws",
      "region": "region"
    }
  },
  "success": true
}