Success
The API does not use
201 for uploads. Do not require it.
Client errors
400 is broader than validation
A400 can mean:
- the JSON body failed schema validation,
- an unknown field was sent to a strict schema,
- a multipart upload had no file part,
- the owning user has no active encryption keys,
- a destination folder does not belong to the destination bucket,
- a folder move omitted a required destination,
- a folder tree exceeded the depth limit.
403 needs a second look
A403 is not one condition. Check for a stable code first:
API_COMPANY_ONLY— individual accountAPI_KEY_SURFACE_DENIED— route family not allowedAPI_BUCKET_SCOPE_DENIED— bucket outside key scopeDEVICE_BLOCKED— backup device blocked
Server errors
In production, 5xx messages are replaced with a generic message. Do not expect schema or driver details.
Status codes that are not part of the contract
The API does not document201, 202, 204, 304, 405, 406, 409, 415, 422, or 428 as stable outcomes for the published endpoints. If you observe one, treat it as an undocumented edge case and report it.
Version operations other than downloads, and the file-restore endpoint, can return HTTP
200 while the inner data.status is 400, 404, or 410. See Versions and restore.Mapping to user experience
Logging
Log:- HTTP status,
- stable
code, - route template,
- timestamp,
- your request ID,
- latency.
X-Secret-Key,- full signed URLs,
- file contents,
- personal data from file names unless your policy allows it.