Errors, retries, and limits
Use HTTP status, the structured message, and the request ID to decide whether a request should be fixed, retried, or reported.
{
"code": 403,
"message": {
"code": "insufficient_scope",
"required": "assets:write"
},
"requestId": "req_01J..."
}Status codes
400fix requestMalformed input, conflicting authentication methods, or an invalid operation.
401authenticateMissing, invalid, expired, or revoked credential.
403authorizeThe actor lacks workspace access, role, required scope, or an active API entitlement.
404not foundThe resource does not exist in the active workspace.
409refresh stateThe resource changed or is already processing. Read it again before retrying.
410expiredThe upload session or conversion expired and must be recreated.
413size limitThe source is larger than the active upload or conversion limit.
415file typeThe declared MIME class does not match the detected bytes.
422validationA field, path, option, or requested state transition is invalid.
429backoffA rate, concurrency, or usage limit was reached.
500retryUnexpected server failure. Retry safe reads and idempotent writes with backoff.
API entitlement codes
subscription_inactive403The paid plan is not active. Existing keys remain revocable but cannot authenticate.
api_access_disabled403API access was disabled for this workspace by an administrative override.
rate_limit_exceeded429A short-window, daily, monthly, or expensive-operation allowance was reached. Inspect Retry-After before retrying.
Retry policy
Retry 429 and transient 5xx responses with exponential backoff and jitter. Do not retry validation errors unchanged. Upload completion is the only endpoint with an explicit Idempotency-Key contract.
Response headers
X-Request-IdstringThe validated client request ID or a server-generated ID. Use printable ASCII no longer than 128 characters.
RateLimitstringLimit, remaining requests, and reset for the active window.
RateLimit-PolicystringThe active rate policy.
X-RateLimit-LimitintegerMaximum requests in the active window.
X-RateLimit-RemainingintegerRequests remaining in the active window.
X-RateLimit-ResetintegerSeconds until the active window resets.
Retry-AfterintegerSeconds to wait after a 429 response.
Need another path?