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, or contentType / extension mismatch
  • UNAUTHORIZED (401) — missing or invalid API key
  • QUOTA_EXCEEDED (402) — workspace storage quota, monthly completed upload limit, or too many pending sessions per project
  • FORBIDDEN (403) — key valid but not allowed for this project or permission
  • NOT_FOUND (404) — upload session or resource not found
  • UPLOAD_ABUSE_DETECTED (429) — too many upload attempts or excessive failed-upload rate this month
  • RATE_LIMITED (429) — too many requests per API key
  • INTERNAL_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)