# Error Codes

If an API call fails, no result data is returned. You can locate the cause of the error according to the error code of each API. If an API call fails, HTTP status code 3xx, 4xx or 5xx is returned. The response body contains the specific error code and information.

#### Error Response Syntax

When an error occurs, the response header information contains:

- Content-Type: application/xml
- HTTP error status code 3xx, 4xx, or 5xx

The response body also contains information about the error. The following is an error response example that shows common elements in the Representational State Transfer (REST) error response body.

    1
    2
    3
    4
    5
    6
    7
    8
    9

    <?xml version="1.0" encoding="UTF-8"?>
    <Error>
    <Code>NoSuchKey</Code>
    <Message>The resource you requested does not exist</Message>
    <Resource>/example-bucket/object</Resource>
    <RequestId>001B21A61C6C0000013402C4616D5285</RequestId>
    <HostId>RkRCRDJENDc5MzdGQkQ4OUY3MTI4NTQ3NDk2Mjg0M0FB
    QUFBQUFBYmJiYmJiYmJD</HostId>
    </Error>

Table 1 describes the meaning of each element.

Table 1 Error response elements
Element | Description
--- | ---
Error | Root element that describes the error in an XML response body
Code | HTTP return code that corresponds to the error in the XML response body. For details about error codes, see Table 2.
Message | Details the error in the XML error response body. For details about error messages, see Table 2.
RequestId | ID of the request whose error response is returned. The ID is used for locating the error.
HostId | ID of the server that returns an error response
Resource | Bucket or object related to an error.

Some error responses contain more detailed information. It is recommended that all error information be logged for easier rectification of errors.

#### Description

If OBS encounters an error when processing a request, a response containing the error code and description is returned. Table 2 describes the error codes of OBS.

Table 2 Error codes
Status Code | Error Code | Error Message | Solution
--- | --- | --- | ---
301 Moved Permanently | PermanentRedirect | The requested bucket can be accessed only through the specified address. Send subsequent requests to the address. | Send the request to the returned redirection address.
301 Moved Permanently | WebsiteRedirect | The website request lacks bucketName. | Put the bucket name in the request and try again.
307 Moved Temporarily | TemporaryRedirect | Temporary redirection. If the DNS is updated, the request is redirected to the bucket. | The system automatically redirects the request or sends the request to the redirection address.
400 Bad Request | BadDigest | The specified value of Content-MD5 does not match the value received by OBS. | Check whether the MD5 value carried in the header is the same as that calculated by the message body.
400 Bad Request | BadDomainName | The domain name is invalid. | Use a valid domain name.
400 Bad Request | BadRequest | Invalid request parameters. | Modify the parameters according to the error details in the message body.
400 Bad Request | CustomDomainAreadyExist | The configured domain already exists. | It has been configured and does not need to be configured again.
400 Bad Request | CustomDomainNotExist | Delete the domain that does not exist. | It is not configured or has been deleted. You do not need to delete it.
400 Bad Request | EntityTooLarge | The size of the object uploaded using the POST method exceeds the upper limit. | Modify the conditions specified in the policy when posting the object or reduce the object size.
400 Bad Request | EntityTooSmall | The size of the object uploaded using the POST method does not reach the lower limit. | Modify the conditions specified in the policy when posting the object or increase the object size.
400 Bad Request | IllegalLocationConstraintException | A request without Location is sent for creating a bucket in a non-default region. | Send the bucket creation request to the default region, or send the request with the Location of the non-default region.
400 Bad Request | IncompleteBody | No complete request body is received due to network or other problems. | Upload the object again.
400 Bad Request | IncorrectNumberOfFilesInPost Request | Each POST request must contain one file to be uploaded. | Carry a file to be uploaded.
400 Bad Request | InvalidArgument | Invalid parameter. | Modify the parameter according to the error details in the message body.
400 Bad Request | InvalidBucket | The bucket to be accessed does not exist. | Change the bucket name.
400 Bad Request | InvalidBucketName | The bucket name specified in the request is invalid, which may have exceeded the maximum length, or contain special characters that are not allowed. | Change the bucket name.
400 Bad Request | InvalidEncryptionAlgorithmError | Incorrect encryption algorithm. The object cannot be decrypted due to incorrect encryption header carried when downloading the SSE-C encrypted object. | Carry the correct encryption header when downloading the object.
400 Bad Request | InvalidLocationConstraint | The specified Location in the bucket creation request is invalid or does not exist. | Correct the Location in the bucket creation request.
400 Bad Request | InvalidPart | One or more specified parts are not found. The parts may not be uploaded or the specified entity tags (ETags) do not match the parts' ETags. | Merge the parts correctly according to the ETags.
400 Bad Request | InvalidPartOrder | Parts are not listed in ascending order by part number. | Sort the parts in ascending order and merge them again.
400 Bad Request | InvalidPolicyDocument | The content of the form does not meet the conditions specified in the policy document. | Modify the policy in the constructed form according to the error details in the message body and try again.
400 Bad Request | InvalidRedirectLocation | Invalid redirect location. | Specifies the correct IP address.
400 Bad Request | InvalidRequest | Invalid request. | Modify the parameter according to the error details in the message body.
400 Bad Request | InvalidRequestBody | The request body is invalid. The request requires a message body but no message body is uploaded. | Upload the message body in the correct format.
400 Bad Request | InvalidTargetBucketForLogging | The delivery group has no ACL permission for the target bucket. | Configure the target bucket ACL and try again.
400 Bad Request | KeyTooLongError | The provided key is too long. | Use a shorter key.
400 Bad Request | KMS.DisabledException | The customer master key (CMK) is disabled in SSE-KMS mode. | Replace the key and try again, or contact with the technical support.
400 Bad Request | KMS.NotFoundException | The customer master key (CMK) does not exist in SSE-KMS mode. | Retry with the correct CMK.
400 Bad Request | MalformedACLError | The provided XML file is in an incorrect format or does not meet format requirements. | Use the correct XML format to retry.
400 Bad Request | MalformedError | The XML format in the request is incorrect. | Use the correct XML format to retry.
400 Bad Request | MalformedLoggingStatus | The XML format of Logging is incorrect. | Use the correct XML format to retry.
400 Bad Request | MalformedPolicy | The bucket policy does not pass. | Modify the bucket policy according to the error details returned in the message body.
400 Bad Request | MalformedQuotaError | The Quota XML format is incorrect. | Use the correct XML format to retry.
400 Bad Request | MalformedXML | An XML file of a configuration item is in incorrect format. | Use the correct XML format to retry.
400 Bad Request | MaxMessageLengthExceeded | Copying an object does not require a message body in the request. | Remove the message body and retry.
400 Bad Request | MetadataTooLarge | The size of the metadata header has exceeded the upper limit. | Reduce the size of the metadata header.
400 Bad Request | MissingRegion | No region contained in the request and no default region defined in the system. | Carry the region information in the request.
400 Bad Request | MissingRequestBodyError | This error code is returned after you send an empty XML file. | Provide the correct XML file.
400 Bad Request | MissingRequiredHeader | Required headers are missing in the request. | Provide required headers.
400 Bad Request | MissingSecurityHeader | A required header is not provided. | Provide required headers.
400 Bad Request | TooManyBuckets | You have attempted to create more buckets than allowed. | Delete some buckets and try again.
400 Bad Request | TooManyCustomDomains | Too many user accounts are configured. | Delete some user accounts and try again.
400 Bad Request | TooManyWrongSignature | The request is rejected due to high-frequency errors. | Replace the Access Key and try again.
400 Bad Request | UnexpectedContent | The request requires a message body which is not carried by the client, or the request does not require a message body but the client carries the message body. | Try again according to the instruction.
400 Bad Request | UserKeyMustBeSpecified | This operation is available only to specific users. | Contact technical support.
403 Forbidden | AccessDenied | Access denied, because the request does not carry a date header or the header format is incorrect. | Provide a correct date header in the request.
403 Forbidden | AccessForbidden | Insufficient permission. No CORS configuration exists for the bucket or the CORS rule does not match. | Modify the CORS configuration of the bucket or send the matched OPTIONS request based on the CORS configuration of the bucket.
403 Forbidden | AllAccessDisabled | You have no permission to perform the operation. The bucket name is forbidden. | Change the bucket name.
403 Forbidden | DeregisterUserId | The user has been deregistered. | Top up or re-register.
403 Forbidden | InArrearOrInsufficientBalance | The subscriber owes fees or the account balance is insufficient, and the subscriber does not have the permission to perform an operation. | Top up.
403 Forbidden | InsufficientStorageSpace | Insufficient storage space. | If the quota is exceeded, increase quota or delete some objects.
403 Forbidden | InvalidAccessKeyId | The access key ID provided by the customer does not exist in the system. | Provide correct access key Id.
403 Forbidden | InvalidObjectState | You need to restore Cold objects first before downloading them. | Restore the object first.
403 Forbidden | NotSignedUp | Your account has not been registered with the system. Only a registered account can be used. | Register OBS.

403 Forbidden

RequestTimeTooSkewed

There was a large time offset between the OBS server time and the time when the client initiated a request.

For security purposes, OBS verifies the time offset between the client and server. If the offset is longer than 15 minutes, the OBS server will reject your requests and this error message is reported.

Check whether there is a large time offset between the client time and server time. If there is, adjust the client time based on your local time (UTC) and try again.

403 Forbidden | SignatureDoesNotMatch | The provided signature does not match the signature calculated by OBS. | Check your secret access key and signature algorithm.
403 Forbidden | VirtualHostDomainRequired | Virtual hosting access domain name is not used. | Use the virtual hosting access domain name. For details, see Constructing a Request.
403 Forbidden | Unauthorized | The user has not been authenticated in real name. | Authenticate the user's real name and try again.
404 Not Found | NoSuchBucket | The specified bucket does not exist. | Create a bucket and perform the operation again.
404 Not Found | NoSuchBucketPolicy | No bucket policy exists. | Configure a bucket policy.
404 Not Found | NoSuchCORSConfiguration | No CORS configuration exists. | Configure CORS first.
404 Not Found | NoSuchCustomDomain | The requested user account does not exist. | Set a user account first.
404 Not Found | NoSuchKey | The specified key does not exist. | Upload the object first.
404 Not Found | NoSuchLifecycleConfiguration | The requested lifecycle rule does not exist. | Configure a lifecycle rule first.
404 Not Found | NoSuchUpload | The specified multipart upload does not exist. The upload ID does not exist or the multipart upload has been terminated or completed. | Use the existing part or reinitialize the part.
404 Not Found | NoSuchVersion | The specified version ID does not match any existing version. | Use a correct version ID.
404 Not Found | NoSuchWebsiteConfiguration | The requested website does not exist. | Configure the website first.
405 Method Not Allowed | MethodNotAllowed | The specified method is not allowed against the requested resource. The message "Specified method is not supported." is returned. | The method is not allowed.
408 Request Timeout | RequestTimeout | The socket connection to the server has no read or write operations within the timeout period. | Check the network and try again, or contact technical support.
409 Conflict | BucketAlreadyExists | The requested bucket name already exists. The bucket namespace is shared by all users of OBS. Select another name and retry. | Change the bucket name.
409 Conflict | BucketAlreadyOwnedByYou | Your previous request for creating the namesake bucket succeeded and you already own it. | No more buckets need to be created.
409 Conflict | BucketNotEmpty | The bucket that you tried to delete is not empty. | Delete the objects in the bucket and then delete the bucket.
409 Conflict | InvalidBucketState | Invalid bucket status. After cross-region replication is configured, bucket versioning cannot be disabled. | Enable bucket versioning or cancel cross-region replication.
409 Conflict | OperationAborted | A conflicting operation is being performed on this resource. Retry later. | Try again later.
409 Conflict | ServiceNotSupported | The request method is not supported by the server. | Not supported by the server. Contact technical support.
411 Length Required | MissingContentLength | The HTTP header Content-Length is not provided. | Provide the Content-Length header.
412 Precondition Failed | PreconditionFailed | At least one of the specified preconditions is not met. | Modify according to the condition prompt in the returned message body.
416 Client Requested Range Not Satisfiable | InvalidRange | The requested range cannot be obtained. | Retry with the correct range.
500 Internal Server Error | InternalError | An internal error occurs. Retry later. | Contact technical support.
501 Not Implemented | ServiceNotImplemented | The request method is not implemented by the server. | Not supported currently. Contact technical support.
503 Service Unavailable | ServiceUnavailable | The server is overloaded or has internal errors. | Try later or contact technical support.
503 Service Unavailable | SlowDown | Too frequent requests. Reduce your request frequency. | Too frequent requests. Reduce your request frequency.

Parent topic: Appendixes