{"registry_version":"2026.1025.387","generated_at":"2026-10-25T06:27:00Z","content_sha256":"089d16f627d9365e3d0663cc8069203706d7cb23a76c332226e29686968811a5","signed":true,"signature":{"key_id":"ed25519:74ca19268e364242","algorithm":"ed25519","expires_at":"2026-11-24T06:27:09Z","expired":false,"manifest":"/registry/manifest.json"},"id":"cloudflare/r2","name":"Cloudflare R2 object storage","vendor":"Cloudflare","status":"researched","last_verified":null,"last_researched":"2026-10-25","summary":"Add the R2 subscription to a Cloudflare account, create a bucket, and create an R2 API token that gives S3-compatible access keys.","account_model":null,"prerequisites":[{"entry":"cloudflare/workers","note":"Uses the same Cloudflare account and account ID."}],"identity_requires":[],"have_ready":[{"kind":"payment_card","description":"A payment method for the R2 checkout flow.","why":"R2 must be purchased (subscription added through checkout) before any API token can be made, even to stay on the free tier.","needed_for":["enable-r2"],"auto_check":"none","source_url":"https://developers.cloudflare.com/r2/api/tokens/"}],"steps":[{"id":"enable-r2","title":"Add the R2 subscription","summary":"In the dashboard go to Storage & databases, R2, Overview and complete the checkout flow to add R2 to the account.","route":"guided","gate":"human_payment","human_only":true,"gate_label":"You add payment details","depends_on":[],"optional":false,"url":"https://dash.cloudflare.com/","lead_time":null,"preflight":[],"captures":null},{"id":"create-bucket","title":"Create a bucket","summary":"Create the bucket in the dashboard or with Wrangler. If a jurisdiction (for example EU) is chosen, the bucket needs the jurisdiction-specific S3 endpoint.","route":"guided","gate":"human_submit","human_only":true,"gate_label":"You press submit","depends_on":["enable-r2"],"optional":false,"url":null,"lead_time":null,"preflight":[],"captures":null},{"id":"create-token","title":"Create an R2 API token","summary":"In R2 Overview, Account Details, choose Manage next to API Tokens, create an account or user token, pick the least permission (Object Read & Write scoped to the bucket is usual for an app), and create it. verapli captures the Access Key ID and the Secret Access Key, which is shown once.","route":"copilot","gate":"human_submit","human_only":true,"gate_label":"You press submit","depends_on":["create-bucket"],"optional":false,"url":"https://dash.cloudflare.com/","lead_time":null,"preflight":[],"captures":"R2_SECRET_ACCESS_KEY"}],"gates":[{"step":"enable-r2","gate":"human_payment","label":"You add payment details"},{"step":"create-bucket","gate":"human_submit","label":"You press submit"},{"step":"create-token","gate":"human_submit","label":"You press submit"}],"lead_times":[],"outputs":[{"name":"R2_ACCESS_KEY_ID","description":"S3-compatible Access Key ID of the R2 token. Name chosen by verapli; Cloudflare docs do not fix an env var name.","secret":false,"example_format":null,"environments":null},{"name":"R2_SECRET_ACCESS_KEY","description":"S3-compatible Secret Access Key of the R2 token, shown once. Name chosen by verapli.","secret":true,"example_format":null,"environments":null},{"name":"R2_ENDPOINT","description":"S3 endpoint, https://<ACCOUNT_ID>.r2.cloudflarestorage.com (jurisdiction buckets use .eu., .fedramp. or .us. before r2). Name chosen by verapli.","secret":false,"example_format":"https://<ACCOUNT_ID>.r2.cloudflarestorage.com","environments":null}],"renewals":[],"estimated_minutes":null,"guide_url":"https://verapli.com/guides/cloudflare/r2"}