Error Codes

Learn about the Storage error codes and how to resolve them

Storage Error Codes

Error codes in Storage are returned as part of the response body. They are useful for debugging and understanding what went wrong with your request. The error codes are returned in the following format:

"code": "error_code",
"message": "error_message"

Here is the full list of error codes and their descriptions:

NoSuchBucketThe specified bucket does not exist.404Verify the bucket name and ensure it exists in the system, if it exists you don't have permissions to access it.
NoSuchKeyThe specified key does not exist.404Check the key name and ensure it exists in the specified bucket, if it exists you don't have permissions to access it.
NoSuchUploadThe specified upload does not exist.404The uploadID provided might not exists or the Upload was previously aborted
InvalidJWTThe provided JWT (JSON Web Token) is invalid.401The JWT provided might be expired or malformed, provide a valid JWT
InvalidRequestThe request is not properly formed.400Review the request parameters and structure, ensure they meet the API's requirements, the error message will provide more details
TenantNotFoundThe specified tenant does not exist.404The Storage service had issues while provisioning, please Contact Support
EntityTooLargeThe entity being uploaded is too large.413Verify the max-file-limit is equal or higher to the resource you are trying to upload, you can change this value on the Project Setting
InternalErrorAn internal server error occurred.500Investigate server logs to identify the cause of the internal error. If you think it's a Storage error please Contact Support
ResourceAlreadyExistsThe specified resource already exists.409Use a different name or identifier for the resource to avoid conflicts. Use x-upsert:true header to overwrite the resource.
InvalidBucketNameThe specified bucket name is invalid.400Ensure the bucket name follows the naming conventions and does not contain invalid characters.
InvalidKeyThe specified key is invalid.400Verify the key name and ensure it follows the naming conventions.
InvalidRangeThe specified range is not valid.416Make sure that range provided is within the file size boundary and follow the HTTP Range spec
InvalidMimeTypeThe specified MIME type is not valid.400Provide a valid MIME type, ensure using the standard MIME type format
InvalidUploadIdThe specified upload ID is invalid.400The upload ID provided is invalid or missing. Make sure to provide a active uploadID
KeyAlreadyExistsThe specified key already exists.409Use a different key name to avoid conflicts with existing keys. Use x-upsert:true header to overwrite the resource.
BucketAlreadyExistsThe specified bucket already exists.409Choose a unique name for the bucket that does not conflict with existing buckets.
DatabaseTimeoutTimeout occurred while accessing the database.504Investigate database performance and increase the default pool size. If this error still occurs please upgrade your instance
InvalidSignatureThe signature provided does not match the calculated signature.403Check that you are providing the correct signature format, for more information refer to SignatureV4
SignatureDoesNotMatchThe request signature does not match the calculated signature.403Check your credentials, access key id / access secret key / region that are all correct, refer to S3 Authentication.
AccessDeniedAccess to the specified resource is denied.403Check that you have the correct RLS policy to allow access to this resource
ResourceLockedThe specified resource is locked.423This resource cannot be altered while there is a lock. Wait and try the request again
DatabaseErrorAn error occurred while accessing the database.500Investigate database logs and system configuration to identify and address the database error.
MissingContentLengthThe Content-Length header is missing.411Ensure the Content-Length header is included in the request with the correct value.
MissingParameterA required parameter is missing in the request.400Provide all required parameters in the request to fulfill the API's requirements. The message field will contain more details
InvalidUploadSignatureThe provided upload signature is invalid.403The MultiPartUpload record was altered while the upload was ongoing, the signature do not match. Do not alter the upload record
LockTimeoutTimeout occurred while waiting for a lock.423The lock couldn't be acquired within the specified timeout. Wait and try the request again
S3ErrorAn error occurred related to Amazon S3.-Refer to Amazon S3 documentation or Contact Support for assistance with resolving the S3 error.
S3InvalidAccessKeyIdThe provided AWS access key ID is invalid.403Verify the AWS access key ID provided and ensure it is correct and active.
S3MaximumCredentialsLimitThe maximum number of credentials has been reached.400The maximum limit of credentials is reached.
InvalidChecksumThe checksum of the entity does not match.400Recalculate the checksum of the entity and ensure it matches the one provided in the request.
MissingPartA part of the entity is missing.400Ensure all parts of the entity are included in the request before completing the operation.
SlowDownThe request rate is too high and has been throttled.503Reduce the request rate or implement exponential backoff and retry mechanisms to handle throttling.

Legacy Error Codes

As we are transitioning to a new error code system, you might still see the following error format:

"httpStatusCode": 400,
"code": "error_code",
"message": "error_message"

Here's a list of the most common error codes and their potential resolutions:

404 not_found

Indicates that the resource is not found or you don't have the correct permission to access it Resolution:

  • Add a RLS policy to grant permission to the resource. See our Access Control docs for more information.
  • Ensure you include the user Authorization header
  • Verify the object exists

409 already_exists

Indicates that the resource already exists. Resolution:

  • Use the upsert functionality in order to overwrite the file. Find out more here.

403 unauthorized

You don't have permission to action this request Resolution:

  • Add RLS policy to grant permission. See our Access Control docs for more information.
  • Ensure you include the user Authorization header

429 too many requests

This problem typically arises when a large number of clients are concurrently interacting with the Storage service, and the pooler has reached its max_clients limit.


  • Increase the max_clients limits of the pooler.
  • Upgrade to a bigger project compute instance here.

544 database_timeout

This problem arises when a high number of clients are concurrently using the Storage service, and Postgres doesn't have enough available connections to efficiently handle requests to Storage.


  • Increase the pool_size limits of the pooler.
  • Upgrade to a bigger project compute instance here.

500 internal_server_error

This issue occurs where there is a unhandled error. Resolution:

  • File a support ticket to Storage team here