X_STORAGE_URL_INVALID
Means
signed URL does not match its signature
Typical cause
an edited constraint (x-max, x-ct, the key), a URL outside the mounted base, a PUT grant replayed as a GET, or a Content-Type header the signature does not cover
Fix
mint a fresh one with grantUpload({ disk, orgId, request }) and send it unedited — every constraint is inside the signature