Errors & limits
Every error returns a stable code, a human message and a request_id that support can look up.
Error body
{"error":{"code":"object_not_found","message":"No such key","request_id":"req_8f21c","node":"fra1-n07"}}
Codes
| HTTP | Code | Meaning | What to do |
|---|---|---|---|
| 400 | invalid_key | Key format rejected. | Keys are UTF-8 without leading slash; encode reserved characters. |
| 401 | missing_token | No Authorization header. | Send Bearer or SigV4. |
| 403 | signature_mismatch | SigV4 host or body hash mismatch. | Sign against api.objectbasin.com. |
| 404 | bucket_not_found | Bucket does not exist in this region. | Pass ?region= or create it. |
| 404 | object_not_found | Key absent or lifecycle-expired. | List the prefix to confirm. |
| 409 | upload_conflict | Part number already used with different bytes. | Restart the part or the upload. |
| 413 | object_too_large | Single PUT above 5 GiB. | Use multipart. |
| 429 | rate_limited | Above 6 000 req/min for the key. | Back off; check Retry-After. |
| 507 | quota_exceeded | Storage quota reached. | Raise the plan or delete data. |
| 503 | node_unavailable | A replica was unreachable. | Retry — writes need 3/3 replicas. |
Limits
| Limit | Value |
|---|---|
| Object size | 5 TiB (multipart) |
| Single PUT | 5 GiB |
| Parts per upload | 10 000 |
| Requests per key | 6 000/min, burst 12 000 |
| Signed URL TTL | 604 800 s (7 days) |
| Buckets per account | 50 |
Retries
Retry 429, 503 and network errors with exponential backoff starting at 200 ms. All standard SDKs do this already; do not retry 4xx other than 429.