S3 Error Codes Reference

January 20, 2026 ยท View on GitHub

This document describes all error codes, HTTP status codes, error messages, and conditions that manta-buckets-api can send to S3 clients.

Authentication and Authorization Errors

Error CodeHTTP StatusError MessageWhen/Why OccursS3 Operations
AccessDenied403"Access Denied"User lacks permission for the operationAll S3 operations
SignatureDoesNotMatch403"The request signature we calculated does not match the signature you provided."S3 signature validation failsAll authenticated operations
InvalidSignature403"The signature we calculated does not match the one you sent"Signature validation failsAll S3 operations
RequestTimeTooSkewed403"The difference between the request time and the current time is too large."Request timestamp outside acceptable rangeAll timestamped operations
AuthorizationRequired401"Authorization is required"Authentication missingAll S3 operations
InvalidKeyId403"the KeyId token you provided is invalid"Key ID in auth is invalidAll S3 operations
Error CodeHTTP StatusError MessageWhen/Why OccursS3 Operations
NoSuchBucket404"The specified bucket does not exist."Accessing non-existent bucketAll bucket operations
BucketAlreadyExists409"The requested bucket name is not available."Creating bucket with existing nameCreateBucket
BucketNotEmpty409"{bucket} is not empty"Deleting non-empty bucketDeleteBucket
InvalidBucketName422"{name} is not a valid bucket name"Bucket name violates naming rulesCreateBucket
Error CodeHTTP StatusError MessageWhen/Why OccursS3 Operations
NoSuchKey404"The specified key does not exist."Accessing non-existent objectGetObject, HeadObject, DeleteObject
ObjectNotFound404"{object} was not found"Object doesn't existAll object operations
InvalidBucketObjectName422"{name} is not a valid bucket object name"Object name violates naming rulesAll object operations

Multipart Upload Errors

Error CodeHTTP StatusError MessageWhen/Why OccursS3 Operations
InvalidPart400"One or more parts have size discrepancies that prevent assembly"Part references are invalid or parts are missingCompleteMultipartUpload
EntityTooSmall400"Your proposed upload is smaller than the minimum allowed object size."Multipart part < 5MB (except last part)UploadPart
MultipartUploadInvalidArgument409"cannot create upload: {msg}" or "upload {id}: {msg}"Invalid multipart upload argumentsInitiateMultipartUpload, UploadPart, CompleteMultipartUpload
InvalidMultipartUploadState409"upload {id}: {msg}"Multipart upload in wrong stateCompleteMultipartUpload, AbortMultipartUpload

Content and Transfer Errors

Error CodeHTTP StatusError MessageWhen/Why OccursS3 Operations
ContentMD5Mismatch400"Content-MD5 expected {expected}, but was {actual}"MD5 checksum mismatchPutObject, UploadPart
ContentLengthRequired411"Content-Length must be >= 0"Missing/invalid Content-LengthPutObject, UploadPart
MaxContentLengthExceeded413"request has exceeded {max} bytes"Upload exceeds size limitPutObject, UploadPart
RequestedRangeNotSatisfiable416"{range} is an invalid range"Invalid Range headerGetObject
InvalidDurabilityLevel400"durability-level must be between {min} and {max}"durability-level header out of rangePutObject, InitiateMultipartUpload

Conditional Request Errors

Error CodeHTTP StatusError MessageWhen/Why OccursS3 Operations
PreconditionFailed412"object was modified at '{timestamp}'; if-unmodified-since '{timestamp}'"Conditional headers don't matchGetObject, HeadObject, PutObject

System and Resource Errors

Error CodeHTTP StatusError MessageWhen/Why OccursS3 Operations
InternalError500"We encountered an internal error. Please try again."Unexpected system errors, storage exhaustionAll S3 operations
ServiceUnavailable503"manta is unable to serve this request"Service temporarily unavailableAll S3 operations
InsufficientStorage507"There is insufficient storage space to complete the request."Storage nodes lack spacePutObject, UploadPart
NotEnoughSpace507"not enough free space for {size} MB"Insufficient storage spacePutObject, UploadPart
ThrottledError503"manta throttled this request"Rate limits exceededAll S3 operations

Account and User Errors

Error CodeHTTP StatusError MessageWhen/Why OccursS3 Operations
AccountDoesNotExist403"{account} does not exist"Account doesn't exist in MantaAll S3 operations
AccountBlocked403"{login} is not an active account"Account is blocked/inactiveAll S3 operations
UserDoesNotExist403"{account}/{user} does not exist"Sub-user doesn't existAll S3 operations

Connection and Transfer Errors

Error CodeHTTP StatusError MessageWhen/Why OccursS3 Operations
UploadAbandoned499"request was aborted prematurely by the client"Client disconnects during uploadPutObject, UploadPart
UploadTimeout408"request took too long to send data"Upload times outPutObject, UploadPart

Parameter and Query Errors

Error CodeHTTP StatusError MessageWhen/Why OccursS3 Operations
InvalidArgumentError400"limit={limit} is invalid: must be between [1, 1024]"List limit out of rangeListObjects, ListObjectsV2
InvalidParameter400"{value} is invalid for {parameter}"Parameter value invalidVarious operations

Security Errors

Error CodeHTTP StatusError MessageWhen/Why OccursS3 Operations
SecureTransportRequired403"Manta requires a secure transport (SSL/TLS)"HTTP used when HTTPS requiredAll S3 operations

Error Mapping Notes

  1. Error Translation: Manta internal errors are automatically translated to S3-compatible error codes
  2. Conditional Operations: S3 conditional headers are fully supported and can trigger appropriate precondition errors
  3. Storage Exhaustion: When storage nodes are unavailable, errors are mapped to InternalError with HTTP 500/503
  4. Multipart States: Complex state management with specific errors for each multipart operation phase
  5. Authentication Chain: Multiple authentication layers each produce specific error codes

References