HTTP status and error codes for XML

The following document provides reference information about the error messages and status codes that are used in the Cloud Storage XML API. For error messages and status codes used by the Cloud Storage JSON API, see this page.

Error Response Format

Cloud Storage uses the standard HTTP error reporting format. Successful requests return HTTP status codes in the 2xx range. Failed requests return status codes in the 4xx and 5xx ranges. Requests that require a redirect returns status codes in the 3xx range. Error responses usually include an XML document in the response body, which contains information about the error.

The following is an example of an error response.

HTTP/1.1 409 Conflict
Content-Type: application/xml
Content-Length: 182
Date: Wed, 03 Mar 2010 00:22:00 GMT
Expires: Wed, 03 Mar 2010 00:22:00 GMT
Cache-Control: private, max-age=0

<?xml version='1.0' encoding='utf-8'?> <Error> <Code>BucketNameUnavailable</Code> <Message> The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again. </Message> </Error>

The following table describes the elements that are in the response body:

Element Description
Error Container for the error information.
Code Error name.
Message Description of the error.

HTTP Status and Error Codes

The following are descriptions of the HTTP status and error codes that Cloud Storage uses.

301—Moved Permanently

Error Name Description
PermanentRedirect The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

304—Not Modified

Error Name Description
NotModified The resource you requested has not been modified according to the condition you specified.

307—Temporary Redirect

Error Name Description
Redirect Temporary redirect.
TemporaryRedirect You are being redirected to the bucket while DNS updates.

308—Resume Incomplete

Error Name Description
Resume Incomplete Indicates an incomplete resumable upload and provides the range of bytes already received by Cloud Storage.

400—Bad Request

Error Name Description
AmbiguousGrantByEmailAddress The e-mail address you provided is associated with more than one account.
BadDigest The Content-MD5 or x-goog-hash you specified did not match what we received.
CloudKmsBadKey Bad Cloud KMS key.
CloudKmsCannotChangeKeyName Cloud KMS key name cannot be changed.
CloudKmsDecryptionKeyNotFound Resource's Cloud KMS decryption key not found.
CloudKmsDisabledKey Cloud KMS key is disabled, destroyed, or scheduled to be destroyed.
CloudKmsEncryptionKeyNotFound Cloud KMS encryption key not found.
CloudKmsKeyLocationNotAllowed Cloud KMS key location not allowed.
CredentialsNotSupported This request does not support credentials.
CrcMismatch The CRC32C you specified did not match what we computed.
CustomerEncryptionAlgorithmIsInvalid Missing an encryption algorithm, or the provided algorithm is not "AE256."
CustomerEncryptionKeyFormatIsInvalid Missing an encryption key, or it is not Base64 encoded, or it does not meet the required length of the encryption algorithm.
CustomerEncryptionKeyIsIncorrect The provided encryption key is incorrect.
CustomerEncryptionKeySha256IsInvalid Missing a SHA256 hash of the encryption key, or it is not Base64 encoded, or it does not match the encryption key.
DotfulBucketNameNotUnderTld The specified bucket contains a '.' but is not under a currently recognized top-level domain.
EntityTooSmall Your proposed upload is smaller than the minimum allowed object size.
EntityTooLarge Your proposed upload exceeds the maximum allowed object size.
ExcessHeaderValues Multiple HTTP header values where one was expected.
ExpiredToken The provided token has expired.
IncompleteBody You did not provide the number of bytes specified by the Content-Length HTTP header.
IncorrectNumberOfFilesInPostRequest POST requires exactly one file upload per request.
IllegalEndpoint Upload-only and download-only endpoints may only be used for uploading or downloading object, respectively.
InlineDataTooLarge Inline data exceeds the maximum allowed size.
InvalidArgument Invalid argument.
InvalidAuthentication The authentication header provided in the request is not supported or is invalid.
InvalidBucketName The specified bucket is not valid.
InvalidComponentCount Composite attempted with too many or too few components in the request.
InvalidCrc The CRC32c you specified was invalid.
InvalidDigest The Content-MD5 you specified was invalid.
InvalidDotfulBucketName The specified bucket contains a '.' but is not syntactically valid.
InvalidHash The x-goog-hash header you specified was invalid.
InvalidLocationConstraint The specified location constraint is not valid. You cannot specify locations with the Cloud Storage API.
InvalidPart One or more of the specified parts could not be found. The part might not have been uploaded, or the specified entity tag might not match the part's entity tag.
InvalidPartOrder The parts list given in the request to complete a multipart upload is invalid. The parts list must be in ascending order by part number.
InvalidPolicyDocument The content of the form does not meet the conditions specified in the policy document.
InvalidStorageClass The storage class you specified is not valid.
InvalidLocationConstraintStorageClassCombination The combination of location and storage class specified is not supported. For example, buckets in regions cannot use the MULTI_REGIONAL storage class, and buckets in multi-regions cannot use the REGIONAL storage class.
InvalidObjectName The specified object name is not valid.
InvalidTargetBucketForLogging The target bucket for logging does not exist, or does not grant write permission to the group "cloud-storage-analytics@google.com". See setting up log delivery.
InvalidToken The provided token is malformed or otherwise invalid.
InvalidURI Couldn't parse the specified URI.
KeyTooLong Your object name is too long.
MalformedACLError The XML you provided was not well-formed or did not validate against our published schema.
MalformedHeaderValue An HTTP header value was malformed.
MalformedPOSTRequest The body of your POST request is not well-formed multipart/form-data.
MalformedXML This happens when the user sends a malformed XML (XML that doesn't conform to the published XSD) for the configuration.
MaxMessageLengthExceeded Your request was too big.
MaxPostPreDataLengthExceededError Your POST request fields preceding the upload file were too large.
MetadataTooLarge Your metadata headers exceed the maximum allowed metadata size.
MissingRequestBodyError This happens when the user sends an empty XML document as a request.
MissingSecurityHeader Your request was missing a required header.
NoLoggingStatusForKey There is no such thing as a logging status sub-resource for a key.
NotImplemented A header or query you provided requested a function that is not implemented.
NoMd5Provided MD5 is required for the requested operation but was not provided.
RequestIsNotMultiPartContent Bucket POST must be of the enclosure-type multipart/form-data.
RequestTimeout Your socket connection to the server was not read from or written to within the timeout period.
ResourceIsEncryptedWithCustomerEncryptionKey The resource is encrypted with a customer-supplied encryption key, but the request did not provide one.
ResourceNotEncryptedWithCustomerEncryptionKey The resource is not encrypted with a customer-supplied encryption key, but the request provided one.
SecureConnectionRequired A secure connection is required to process this request.
TokenRefreshRequired The provided token must be refreshed.
TooManyBuckets You have attempted to create more buckets than allowed.
UnexpectedContent This request does not support content.
UnresolvableGrantByEmailAddress The e-mail address you provided does not match any account on record.
UnsupportedAcl The ACL you specified is not supported. For more information about the ACLs that Cloud Storage supports, see Access Control.
UserKeyMustBeSpecified The bucket POST must contain the specified field name. If it is specified, please check the order of the fields.
UserProjectInvalid The user project specified in the request is invalid, either because it is a malformed project id or because it refers to a non-existent project.
UserProjectMissing The requested bucket has Requester Pays enabled, the requester is not an owner of the bucket, and no user project was present in the request.

401—Unauthorized

Error Name Description
AccountProblem Access to Google Cloud using this account is disabled or restricted. Contact your Organization Administrator for access.
AuthenticationRequired The requested access requires an authentication credential, but no credential was provided as part of the request. Retry the request with a valid credential.
AuthenticationRequiredRequesterPays Access to a Requester Pays bucket requires authentication.
InvalidAuthentication The authentication credential provided in the request has expired. Reauthenticate and retry the request with the refreshed credential.

403—Forbidden

Error Name Description
AccessDenied Access denied. This applies to any object you don't have access to, regardless of whether or not the object actually exists.
AccountProblem There is a problem with your user account that prevents the operation from completing successfully. One issue could be billing. Check the billing page to see if you have a past due balance or if the credit card (or other payment mechanism) on your account is expired. For project creation, see the Projects page in the Google Cloud console.
AnotherUserOwnsDomain The bucket you tried to create is a domain name owned by another user.
BucketAlreadyExists The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.
CrossLocationLoggingProhibited Cross location logging not allowed. A bucket in one location cannot log information to a bucket in another location.
DomainVerificationRequired The bucket you tried to create requires domain ownership verification.
InsufficientQuota The user does not have enough quota to complete this operation.
InvalidAccessKeyId The User Id you provided does not exist in our records.
InvalidPayer All access to this object has been disabled.
InvalidSecurity The provided security credentials are not valid.
ObjectUnderActiveHold Object replacement or deletion is not allowed due to an active hold on the object.
RequestTimeTooSkewed The difference between the request time and the server's time is too large. For a request that uses a signature in its Authorization header, the maximum difference in time allowed between the request and the backend system time is 15 minutes.
RetentionPolicyNotMet Object replacement or deletion is not allowed until the object meets the retention period set by the retention policy on the bucket.
SignatureDoesNotMatch The request signature we calculated does not match the signature you provided. Check your Google secret and signing method.
The requester is not authorized to use the project specified in the x-goog-user-project header of their request. The requester must have the serviceusage.services.use permission for the specified project.
UserProjectAccountProblem There is a problem with the project used in the request that prevents the operation from completing successfully. One issue could be billing. Check the billing page to see if you have a past due balance or if the credit card (or other payment mechanism) on your account is expired. For project creation, see the Projects page in the Google Cloud console.

404—Not Found

Error Name Description
NoSuchBucket The specified bucket does not exist.
NoSuchKey The specified object name does not exist.
NoSuchUpload The specified multipart upload does not exist. The upload ID might be invalid, or the multipart upload might have been aborted or completed.

405—Method Not Allowed

Error Name Description
AccessDenied Access denied.
MethodNotAllowed The specified method is not allowed against this resource.

408—Request Timeout

Error Name Description
uploadBrokenConnection The request timed out. Retry using exponential backoff.

409—Conflict

Error Name Description
BucketAlreadyOwnedByYou Your previous request to create the named bucket succeeded and you already own it.
BucketNameUnavailable The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again. This error can occur when you try to create a bucket name that already exists or you try to create a bucket name that does not meet the bucket naming requirements.
BucketNotEmpty The bucket you tried to delete is not empty.
OperationAborted A conflicting conditional operation is currently in progress against this resource. Please try again.
RewriteTokenDestAlreadyFinalized Attempt to call Rewrite with a RewriteToken for an already completed Rewrite operation.

411—Length Required

Error Name Description
MissingContentLength You must provide the Content-Length HTTP header.

412—Precondition Failed

Error Name Description
PreconditionFailed At least one of the pre-conditions you specified did not hold.

413—Payload Too Large

Error Name Description
EntityTooLarge The copy request took longer than 30 seconds to complete and involved an object larger than 2.5 GiB.

416—Requested Range Not Satisfiable

Error Name Description
InvalidRange The requested range cannot be satisfied.

429—Too Many Requests

Error Name Description
CloudEkmNetworkingError The Cloud Storage service agent encountered an external networking error when accessing the Cloud KMS in Cloud EKM. Retry later; if the issue persists, contact your external key manager.
InsufficientQuota The App Engine rate limit was exceeded. Retry using exponential backoff.
LroLimitExceeded The number of running LROs of this type exceeds the limit. Cancel existing LROs or wait for them to complete and then retry.
RateLimitExceeded The Cloud Storage rate limit was exceeded. Retry using exponential backoff.
SlowDown You are sending requests too frequently. For example, object updates have a limit of approximately 1 update/second. For additional information, see Limits and quotas. Slow down the rate at which you send requests and retry using exponential backoff.

500—Internal Server Error

Error Name (if present) Description
InternalError We encountered an internal error. Retry using exponential backoff.

503—Service Unavailable

Error Name (if present) Description
SlowDown The service is temporarily unavailable. Retry using exponential backoff.

504—Gateway Timeout

Error Name Description
N/A The service is temporarily unable to reach another service. Retry using exponential backoff.