docs(r2): clarify billing for failed 4xx requests in pricing FAQ - #32832
docs(r2): clarify billing for failed 4xx requests in pricing FAQ#32832krys-cf wants to merge 1 commit into
Conversation
Review
👉 Fix in your agent 👈Fix the following review findings in PR #32832 (https://github.com/cloudflare/cloudflare-docs/pull/32832).
Before making changes, review each finding and present a brief summary table:
- For each finding, state whether you agree, disagree, or need clarification
- If you disagree (e.g. the fix requires disproportionate effort for minimal benefit,
or the finding is factually incorrect), explain why
- If you need clarification before deciding, ask those questions
- Then share your plan for which issues to tackle and in what order
After triaging, follow this order:
1. Post a comment on this PR for any findings you are skipping, with the finding ID and your reasoning.
2. Then commit the fixes for the legitimate findings.
The comment must come before the commit — the bot reads PR comments when a new
push triggers a review, so skip comments posted after the push will be missed.
---
## Style Guide Review
### Warnings (1)
#### SG-1e8d52c66854 · Headings must not end with punctuation
- **File:** `src/content/docs/r2/pricing.mdx` line 167
- **Issue:** ### Will I be charged for failed requests to my R2 bucket?
- **Fix:** Remove the trailing question mark: `### Will I be charged for failed requests to my R2 bucket`
### Suggestions (6)
#### SG-4e578668286a · HTTP status codes should be monospace
- **File:** `src/content/docs/r2/pricing.mdx` line 171
- **Issue:** `HTTP 401` appears without backtick formatting
- **Fix:** Format the status code as `HTTP 401` (`HTTP 401`)
#### SG-bfa3147d1341 · HTTP status codes should be monospace
- **File:** `src/content/docs/r2/pricing.mdx` line 172
- **Issue:** `HTTP 403` appears without backtick formatting
- **Fix:** Format the status code as `HTTP 403`
#### SG-b06565c5359a · HTTP status codes should be monospace
- **File:** `src/content/docs/r2/pricing.mdx` line 176
- **Issue:** `HTTP 412` appears without backtick formatting
- **Fix:** Format the status code as `HTTP 412`
#### SG-ef148faa25fc · HTTP status codes should be monospace
- **File:** `src/content/docs/r2/pricing.mdx` line 177
- **Issue:** `HTTP 400` appears without backtick formatting
- **Fix:** Format the status code as `HTTP 400`
#### SG-7dfea7e49c80 · Bullet lists with fewer than three items should be rewritten as prose
- **File:** `src/content/docs/r2/pricing.mdx` line 171
- **Issue:** The `This includes:` list contains only two items
- **Fix:** Consider rewriting the two-item list as prose
#### SG-379ff02c9060 · Bullet lists with fewer than three items should be rewritten as prose
- **File:** `src/content/docs/r2/pricing.mdx` line 176
- **Issue:** The `For example:` list contains only two items
- **Fix:** Consider rewriting the two-item list as prose
Code ReviewThis code review is in beta and may not always be helpful — use your judgment. No code review issues found. ConventionsNo convention issues found. Style Guide ReviewWarnings (1)
Suggestions (6)
CommandsOnly codeowners can run commands. Post a comment with the command to trigger it.
|
Review findings triageSG-a60a4d16d913 (trailing question mark): Skipping. This is an FAQ section — the previous heading also used a question mark ( SG-08c62ba463c4 (sentence case): Skipping. The heading is already sentence case: "Will I be charged for failed requests to my R2 bucket?" — only "Will" (start of sentence) and "R2" (product name) are capitalized. SG-9f3667988d6e (2-item bullet list, auth failures): Skipping. The two items have different HTTP status codes (401 vs 403) and the 403 entry includes sub-codes. Bullets are clearer for scanning than prose here. SG-945c4da1d8fc (2-item bullet list, examples): Skipping. Same reasoning — each example pairs a distinct status code with an error name and cause. Bullets aid scanability. |
27e9f46 to
732a935
Compare
Expand the R2 pricing FAQ to explain which failed requests are billed as Class A operations. The previous FAQ only mentioned 401 Unauthorized as exempt, leaving customers uncertain about other 4xx status codes. Empirically tested against R2 analytics API: - Auth-layer failures (401, 403 SignatureDoesNotMatch/ExpiredRequest/ RequestTimeTooSkewed) are NOT billed - Post-auth failures (412 PreconditionFailed, 400 BadDigest) ARE billed DEE-3763
732a935 to
e845f65
Compare
What this PR does
Expands the R2 pricing FAQ to clarify which failed (4xx) requests are billed as Class A operations. The previous FAQ only mentioned HTTP 401
Unauthorizedas exempt, leaving customers uncertain about other error codes like 412PreconditionFailed, 403SignatureDoesNotMatch, and 400BadDigest.How this was verified
Empirically tested by firing controlled batches of each error type against a dedicated R2 test bucket and querying the
r2OperationsAdaptiveGroupsGraphQL analytics dataset for operation counts.Results:
Rule: Authentication-layer failures (401, 403 from signature/expiry checks) are not billed. Authenticated requests that fail post-auth (412, 400) are billed as Class A operations.
Related
DEE-3763