# 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

[Storage](/error-codes#storage)
