Errors
Stable, documented error codes. Codes never change meaning — build your error handling against them, not against messages.
Error envelope
{
"success": false,
"error": {
"code": "QUOTA_EXCEEDED",
"message": "The storage quota would be exceeded by this operation.",
"details": { "quotaBytes": 10737418240, "usedBytes": 10736000000 }
},
"requestId": "req_a1b2c3d4"
}Error codes
Code HTTP Meaning INVALID_API_KEY 401 Key missing, malformed, revoked, or unknown EXPIRED_API_KEY 401 Key past its expiry date UNAUTHORIZED 401 Authentication required (admin endpoints) MISSING_PERMISSION 403 Key lacks the required permission IP_NOT_ALLOWED 403 IP not in the key's allowlist CUSTOMER_SUSPENDED 403 Customer or storage account suspended CONTAINER_READ_ONLY 403 Write attempted on a read-only container DIRECT_URLS_DISABLED 403 Direct-URL endpoints disabled on this container CONTAINER_NOT_FOUND 404 Container name not found in your account FILE_NOT_FOUND 404 File id not found in this container FOLDER_NOT_FOUND 404 Folder id/path not found in this container ITEM_NOT_FOUND 404 Item not found JOB_NOT_FOUND 404 Job id not found ITEM_ALREADY_EXISTS 409 Name collision at the destination IDEMPOTENCY_CONFLICT 409 Idempotency-Key reused with a different payload INVALID_FILE_NAME 400 File name fails validation INVALID_FOLDER_NAME 400 Folder name fails validation INVALID_CONTAINER_NAME 400 Container name fails validation INVALID_PATH 400 Path contains traversal or invalid segments VALIDATION_FAILED 400 Request body/query failed validation METADATA_VALIDATION_FAILED 400 Metadata payload failed validation EXTENSION_NOT_ALLOWED 400 File extension not allowed in this container UNSUPPORTED_CONTENT_TYPE 415 Content type not allowed QUOTA_EXCEEDED 413 Storage quota would be exceeded FILE_TOO_LARGE 413 Upload exceeds the synchronous size limit RATE_LIMITED 429 Too many requests — honor Retry-After STORAGE_THROTTLED 429 Storage backend throttling — honor Retry-After STORAGE_UNAVAILABLE 503 Storage backend temporarily unavailable UPLOAD_FAILED 502 Upload failed in the storage backend DOWNLOAD_FAILED 502 Download failed in the storage backend COPY_FAILED 502 Copy operation failed MOVE_FAILED 502 Move operation failed INTERNAL_ERROR 500 Unexpected platform error
Handling guidance
- Retry
RATE_LIMITED,STORAGE_THROTTLED, andSTORAGE_UNAVAILABLEwith exponential backoff, honoring theRetry-Afterheader when present. - Treat 4xx codes (other than 429) as permanent for the given request — fix the request instead of retrying.
- Log the
requestIdof failures; support uses it to find the exact audit record. - Use
Idempotency-Keyon uploads and writes so network-level retries cannot duplicate work.