Presign a PUT to overwrite an existing file's bytes in place
Requires files:[“write”]. Accepts either key class — unlike upload, replace addresses an EXISTING file by id, so it takes no projectId: a wordpress key’s fileId must belong to its bound project (404 otherwise); an api-class key (unbound by design) may touch any file in its own org. Same id, same r2Key, same public URL.
Authorizations
An API key minted from the dashboard (POST /api/api-keys), of either class: api (prefix pxg_) or wordpress (prefix pxg_wp_). Which class a given route accepts is documented per-endpoint below; presenting a real key of a class the route doesn't accept is 403 WRONG_KEY_CLASS, never folded into 401 INVALID_API_KEY. No cookie fallback exists.