API
Errors
Failed requests return an HTTP status code and a JSON body with a machine readable error code and human message.
Error shape
error response
{
"error": "VALIDATION_ERROR",
"message": "Content type is not allowed."
}Error codes
VALIDATION_ERROR(400) — invalid body, expired session, unsupported file type, size limit, orcontentType/ extension mismatchUNAUTHORIZED(401) — missing or invalid API keyQUOTA_EXCEEDED(402) — workspace storage quota, monthly completed upload limit, or too many pending sessions per projectFORBIDDEN(403) — key valid but not allowed for this project or permissionNOT_FOUND(404) — upload session or resource not foundUPLOAD_ABUSE_DETECTED(429) — too many upload attempts or excessive failed-upload rate this monthRATE_LIMITED(429) — too many requests per API keyINTERNAL_ERROR(500) — unexpected server error; retry with backoff
Quota vs abuse
Billing counts only uploads that reach COMPLETED in the current calendar month. Session create attempts (including failed or cancelled) are tracked separately; exceeding 3× your monthly upload limit or a high failure rate after enough attempts returns UPLOAD_ABUSE_DETECTED, not QUOTA_EXCEEDED.
Plan limits: API reference.
Success responses
200— OK (e.g. whoami, get session)202— Accepted (upload complete — processing async)204— No content (some delete routes)