Cloudflare R2 R2 Bucket API
The R2 Bucket API from Cloudflare R2 — 13 operation(s) for r2 bucket.
The R2 Bucket API from Cloudflare R2 — 13 operation(s) for r2 bucket.
openapi: 3.0.3
info:
title: Cloudflare R2 Cloudflare Buckets R2 Bucket API
description: Cloudflare API endpoints for managing R2 object storage buckets, objects, CORS, lifecycle policies, custom domains, event notifications, data catalog, and temporary credentials.
version: 4.0.0
termsOfService: https://www.cloudflare.com/website-terms/
contact:
name: Cloudflare Developer Docs
url: https://developers.cloudflare.com/r2/
servers:
- url: https://api.cloudflare.com/client/v4
description: Cloudflare API v4
tags:
- name: R2 Bucket
paths:
/accounts/{account_id}/event_notifications/r2/{bucket_name}/configuration:
get:
description: List all event notification rules for a bucket.
operationId: r2-get-event-notification-configs
parameters:
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Read Configuration failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
$ref: '#/components/schemas/r2_bucket-config'
type: object
description: Read Configuration response.
'404':
content:
application/json:
example:
errors:
- code: 11015
message: workers.api.error.no_configs_found_for_bucket
messages: []
result: null
success: false
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: No Configuration Found response.
security:
- api_token: []
summary: List Event Notification Rules
tags:
- R2 Bucket
x-api-token-group:
- Workers R2 Storage Write
- Workers R2 Storage Read
/accounts/{account_id}/event_notifications/r2/{bucket_name}/configuration/queues/{queue_id}:
delete:
description: Delete an event notification rule. **If no body is provided, all rules for specified queue will be deleted**.
operationId: r2-event-notification-delete-config
parameters:
- in: path
name: queue_id
required: true
schema:
$ref: '#/components/schemas/r2_queue_identifier'
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
requestBody:
content:
application/json:
schema:
properties:
ruleIds:
description: Array of rule ids to delete.
items:
description: rule ids to be deleted.
type: string
type: array
type: object
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Delete Configuration failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- type: object
description: Delete Configuration response.
security:
- api_token: []
summary: Delete Event Notification Rules
tags:
- R2 Bucket
x-api-token-group:
- Workers R2 Storage Write
get:
description: Get a single event notification rule.
operationId: r2-get-event-notification-config
parameters:
- in: path
name: queue_id
required: true
schema:
$ref: '#/components/schemas/r2_queue_identifier'
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: header
name: cf-r2-jurisdiction
schema:
default: default
description: The bucket jurisdiction.
enum:
- default
- eu
- fedramp
type: string
x-stainless-param: jurisdiction
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Read Configuration failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
$ref: '#/components/schemas/r2_queues-config'
type: object
description: Read Configuration response.
'404':
content:
application/json:
example:
errors:
- code: 11015
message: workers.api.error.no_configs_found_for_bucket
messages: []
result: null
success: false
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: No Configuration Found response.
security:
- api_token: []
summary: Get Event Notification Rule
tags:
- R2 Bucket
x-api-token-group:
- Workers R2 Storage Write
- Workers R2 Storage Read
put:
description: Create event notification rule.
operationId: r2-put-event-notification-config
parameters:
- in: path
name: queue_id
required: true
schema:
$ref: '#/components/schemas/r2_queue_identifier'
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
requestBody:
content:
application/json:
schema:
properties:
rules:
description: Array of rules to drive notifications.
items:
$ref: '#/components/schemas/r2_rule'
minItems: 1
type: array
required:
- rules
type: object
required: true
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Create Configuration failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- type: object
description: Create Configuration response.
security:
- api_token: []
summary: Create Event Notification Rule
tags:
- R2 Bucket
x-api-token-group:
- Workers R2 Storage Write
/accounts/{account_id}/r2/buckets:
get:
description: Lists all R2 buckets on your account.
operationId: r2-list-buckets
parameters:
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: query
name: name_contains
schema:
description: Bucket names to filter by. Only buckets with this phrase in their name will be returned.
example: my-bucket
type: string
- in: query
name: start_after
schema:
description: Bucket name to start searching after. Buckets are ordered lexicographically.
example: my-bucket
type: string
- in: query
name: per_page
schema:
default: 20
description: Maximum number of buckets to return in a single call.
maximum: 1000
minimum: 1
type: number
- in: query
name: order
schema:
description: Field to order buckets by.
enum:
- name
type: string
- in: query
name: direction
schema:
description: Direction to order buckets.
enum:
- asc
- desc
example: desc
type: string
- in: query
name: cursor
schema:
description: Pagination cursor received during the last List Buckets call. R2 buckets are paginated using cursors instead of page numbers.
type: string
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: List Buckets response failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response_list'
- properties:
result:
properties:
buckets:
items:
$ref: '#/components/schemas/r2_bucket'
type: array
type: object
type: object
description: List Buckets response.
security:
- api_token: []
summary: List Buckets
tags:
- R2 Bucket
x-api-token-group:
- Workers R2 Storage Write
- Workers R2 Storage Read
post:
description: Creates a new R2 bucket.
operationId: r2-create-bucket
parameters:
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
requestBody:
content:
application/json:
schema:
example: '{"name": "example-bucket"}'
properties:
locationHint:
$ref: '#/components/schemas/r2_bucket_location'
name:
$ref: '#/components/schemas/r2_bucket_name'
storageClass:
$ref: '#/components/schemas/r2_storage_class'
required:
- name
type: object
required: true
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Create Bucket response failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
$ref: '#/components/schemas/r2_bucket'
type: object
description: Create Bucket response.
security:
- api_token: []
summary: Create Bucket
tags:
- R2 Bucket
x-api-token-group:
- Workers R2 Storage Write
/accounts/{account_id}/r2/buckets/{bucket_name}:
delete:
description: Deletes an existing R2 bucket.
operationId: r2-delete-bucket
parameters:
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Delete Bucket response failure.
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response'
description: Delete Bucket response.
security:
- api_token: []
summary: Delete Bucket
tags:
- R2 Bucket
x-api-token-group:
- Workers R2 Storage Write
get:
description: Gets properties of an existing R2 bucket.
operationId: r2-get-bucket
parameters:
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Get Bucket response failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
$ref: '#/components/schemas/r2_bucket'
type: object
description: Get Bucket response.
security:
- api_token: []
summary: Get Bucket
tags:
- R2 Bucket
x-cfPermissionsRequired:
enum:
- com.cloudflare.edge.r2.bucket.read
patch:
description: Updates properties of an existing R2 bucket.
operationId: r2-patch-bucket
parameters:
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
- in: header
name: cf-r2-storage-class
required: true
schema:
allOf:
- $ref: '#/components/schemas/r2_storage_class'
x-stainless-param: storage_class
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Get Bucket response failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
$ref: '#/components/schemas/r2_bucket'
type: object
description: Patch Bucket response.
security:
- api_token: []
summary: Patch Bucket
tags:
- R2 Bucket
x-cfPermissionsRequired:
enum:
- com.cloudflare.edge.r2.bucket.write
/accounts/{account_id}/r2/buckets/{bucket_name}/cors:
delete:
description: Delete the CORS policy for a bucket.
operationId: r2-delete-bucket-cors-policy
parameters:
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Error Response.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- type: object
description: Success Response.
security:
- api_token: []
summary: Delete Bucket CORS Policy
tags:
- R2 Bucket
get:
description: Get the CORS policy for a bucket.
operationId: r2-get-bucket-cors-policy
parameters:
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Error Response.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
properties:
rules:
items:
$ref: '#/components/schemas/r2_cors-rule'
type: array
type: object
type: object
description: Success Response.
security:
- api_token: []
summary: Get Bucket CORS Policy
tags:
- R2 Bucket
put:
description: Set the CORS policy for a bucket.
operationId: r2-put-bucket-cors-policy
parameters:
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
requestBody:
content:
application/json:
schema:
properties:
rules:
items:
$ref: '#/components/schemas/r2_cors-rule'
type: array
type: object
required: true
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Error Response.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- type: object
description: Success Response.
security:
- api_token: []
summary: Put Bucket CORS Policy
tags:
- R2 Bucket
/accounts/{account_id}/r2/buckets/{bucket_name}/domains/custom:
get:
description: Gets a list of all custom domains registered with an existing R2 bucket.
operationId: r2-list-custom-domains
parameters:
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: List Custom Domains response failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
$ref: '#/components/schemas/r2_list_custom_domains_response'
type: object
description: List Custom Domains response.
security:
- api_token: []
summary: List Custom Domains of Bucket
tags:
- R2 Bucket
x-cfPermissionsRequired:
enum:
- com.cloudflare.edge.r2.bucket.read
post:
description: Register a new custom domain for an existing R2 bucket.
operationId: r2-add-custom-domain
parameters:
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_add_custom_domain_request'
required: true
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Add Custom Domain response failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
$ref: '#/components/schemas/r2_add_custom_domain_response'
type: object
description: Add Custom Domain response.
security:
- api_token: []
summary: Attach Custom Domain To Bucket
tags:
- R2 Bucket
x-cfPermissionsRequired:
enum:
- com.cloudflare.edge.r2.bucket.write
/accounts/{account_id}/r2/buckets/{bucket_name}/domains/custom/{domain}:
delete:
description: Remove custom domain registration from an existing R2 bucket.
operationId: r2-delete-custom-domain
parameters:
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: path
name: domain
required: true
schema:
$ref: '#/components/schemas/r2_domain_name'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Delete Custom Domain response failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
$ref: '#/components/schemas/r2_remove_custom_domain_response'
type: object
description: Delete Custom Domain response.
security:
- api_token: []
summary: Remove Custom Domain From Bucket
tags:
- R2 Bucket
x-api-token-group:
- Workers R2 Storage Write
get:
description: Get the configuration for a custom domain on an existing R2 bucket.
operationId: r2-get-custom-domain-settings
parameters:
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: domain
required: true
schema:
$ref: '#/components/schemas/r2_domain_name'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Get Custom Domain Configuration response failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
allOf:
- $ref: '#/components/schemas/r2_get_custom_domain_response'
type: object
description: Get Custom Domain Configuration response.
security:
- api_token: []
summary: Get Custom Domain Settings
tags:
- R2 Bucket
x-api-token-group:
- Workers R2 Storage Write
- Workers R2 Storage Read
put:
description: Edit the configuration for a custom domain on an existing R2 bucket.
operationId: r2-edit-custom-domain-settings
parameters:
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: domain
required: true
schema:
$ref: '#/components/schemas/r2_domain_name'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_edit_custom_domain_request'
required: true
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Edit Custom Domain Configuration response failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
allOf:
- $ref: '#/components/schemas/r2_edit_custom_domain_response'
type: object
description: Edit Custom Domain Configuration response.
security:
- api_token: []
summary: Configure Custom Domain Settings
tags:
- R2 Bucket
x-cfPermissionsRequired:
enum:
- com.cloudflare.edge.r2.bucket.write
/accounts/{account_id}/r2/buckets/{bucket_name}/domains/managed:
get:
description: Gets state of public access over the bucket's R2-managed (r2.dev) domain.
operationId: r2-get-bucket-public-policy
parameters:
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Get Managed Subdomain response failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
$ref: '#/components/schemas/r2_managed_domain_response'
type: object
description: Get Managed Subdomain response.
security:
- api_token: []
summary: Get r2.dev Domain of Bucket
tags:
- R2 Bucket
x-cfPermissionsRequired:
enum:
- com.cloudflare.edge.r2.bucket.read
put:
description: Updates state of public access over the bucket's R2-managed (r2.dev) domain.
operationId: r2-put-bucket-public-policy
parameters:
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_edit_managed_domain_request'
required: true
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Update Managed Subdomain response failure.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
$ref: '#/components/schemas/r2_managed_domain_response'
type: object
description: Update Managed Subdomain response.
security:
- api_token: []
summary: Update r2.dev Domain of Bucket
tags:
- R2 Bucket
x-cfPermissionsRequired:
enum:
- com.cloudflare.edge.r2.bucket.write
/accounts/{account_id}/r2/buckets/{bucket_name}/lifecycle:
get:
description: Get object lifecycle rules for a bucket.
operationId: r2-get-bucket-lifecycle-configuration
parameters:
- in: path
name: bucket_name
required: true
schema:
$ref: '#/components/schemas/r2_bucket_name'
- in: path
name: account_id
required: true
schema:
$ref: '#/components/schemas/r2_account_identifier'
- in: header
name: cf-r2-jurisdiction
schema:
$ref: '#/components/schemas/r2_jurisdiction'
responses:
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/r2_v4_response_failure'
description: Error Response.
'200':
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/r2_v4_response'
- properties:
result:
$ref: '#/components/schemas/r2_lifecycle-config'
type: object
description: Success Response.
security:
- api_token: []
summary: Get Object Lifecycle Rules
tags:
- R2 Bucket
put:
description: Set the object lifecycle rules for a bucket.
operationId: r2-put-bucket-lifecycle-configuration
parameters:
- in: path
name: bucket_name
required: true
sc
# --- truncated at 32 KB (79 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cloudflare-r2/refs/heads/main/openapi/cloudflare-r2-r2-bucket-api-openapi.yml