Browse developer docs

Reference

Errors and rate limits

REST errors use this envelope. Keep the request ID for support and never log your API key:

Start with code and requestId

The stable code tells your program what happened. The human-readable message explains this request. Save requestId when contacting support.

JSON error response
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "The API key is missing, invalid, or revoked.",
    "requestId": "req_..."
  }
}

Fix authentication and plan errors

For 401, check that the header begins with Bearer followed by one space and an active key. For 403, check the account plan and the scopes selected when the key was created.

Fix upload-state errors

For 409 or 422, confirm the PUT finished, Content-Type matches, and the uploaded byte count equals sizeBytes. Create a fresh upload job if the temporary URL expired.

CodeHTTPMeaning
BAD_REQUEST400 / 409HTTP 400 means the request body is invalid; HTTP 409 means the upload cannot be completed in its current state.
UNAUTHORIZED401The API key is missing, invalid, or revoked.
PAID_PLAN_REQUIRED403The account does not have an eligible paid plan.
INSUFFICIENT_SCOPE403The API key does not include the required scope.
NOT_FOUND404The owned upload, file, or share was not found.
UPLOAD_NOT_READY409The uploaded object is not ready for completion.
FILE_TOO_LARGE413The file exceeds the applicable size limit.
OBJECT_VALIDATION_FAILED422The uploaded object failed validation.
QUOTA_EXCEEDED429The upload quota is exhausted.
RATE_LIMIT_EXCEEDED429The API request rate is exhausted.
SERVICE_UNAVAILABLE503A required service is temporarily unavailable.

Rate-limit headers

Retry 429 only after Retry-After. Retry temporary 503 errors with exponential backoff. Do not automatically retry invalid 400, 401, or 403 requests.