Skip to content
Documentation navigation +
betaMay change before the API is declared stable.

Errors and limits

Every non-2xx response has the same shape:

{ "code": "WORLD_INVALID", "message": "…", "details": […], "request_id": "req_…" }

Include request_id when you contact support.

Code HTTP Meaning
UNAUTHENTICATED 401 Missing, invalid, expired or revoked token.
FORBIDDEN 403 Your role or token scope does not allow this.
NOT_FOUND 404 Does not exist, or belongs to an organization you are not in.
VALIDATION_FAILED 422 The request body or parameters are malformed.
INTAKE_INVALID / WORLD_INVALID 422 The document failed validation; details lists each problem.
MODEL_NOT_AVAILABLE 422 A requested model/version is unavailable. Semantic world errors can include this code in details under WORLD_INVALID.
METHOD_NOT_SUPPORTED 422 or 405 Unsupported evaluation/operation, or an HTTP method not allowed on this route.
AUTH_TARGET_UNVERIFIED 422 A connected target is not supported or authorized. Staging connections remain planned.
PHI_SUSPECTED 422 Input screening flagged potentially identifiable patient material; remove it before resubmitting.
SOURCE_UNREADABLE 422 The submitted source cannot be read. Extraction can also report per-source errors in a successful response; inspect each source's status.
RUN_LIMIT_EXCEEDED 402 The world is larger than your plan allows.
QUOTA_EXCEEDED 402 Not enough credits, or a free daily allowance is used up.
BUDGET_LIMIT_EXCEEDED 402 The reservation exceeds the budget you set.
APPROVAL_REQUIRED 409 Approve the needed scope first (for example hosted inference).
IDEMPOTENCY_KEY_REQUIRED 400 Send an Idempotency-Key header.
IDEMPOTENCY_KEY_REUSED 409 That key was used for a different request.
CONFLICT 409 The resource is not in a state that allows this yet.
PROVIDER_ERROR 502 The AI provider failed; nothing was charged.
PROVIDER_NOT_CONFIGURED 503 Hosted AI is unavailable or paused; use your own key or the copyable prompts.
SPONSOR_NOT_CONFIGURED 503 The operator-gated manual sponsor pilot is disabled.
BILLING_NOT_CONFIGURED 503 Credit purchases are disabled or their configured price is unsupported.
PAYMENT_PROVIDER_ERROR 502 Ambiguous Stripe failure; retain the same purchase body/key and inspect status.
PAYLOAD_TOO_LARGE 413 Too many or too large files.
RATE_LIMITED 429 Too many requests; wait before retrying.
INTERNAL 500 An unexpected server error. Keep the request id for investigation.

An unknown route uses NOT_FOUND (404). A method rejected by the router uses METHOD_NOT_SUPPORTED (405), with the allowed methods in the Allow header. Errors returned by an upstream proxy or hosting service may use a different format.

Recover without duplicating work

  • Fix the paths in validation details, then validate again before creating a run.
  • Reauthenticate for UNAUTHENTICATED; check token scopes and organization membership for FORBIDDEN. A missing or inaccessible tenant resource is reported as NOT_FOUND.
  • For an ambiguous network failure on an idempotent create, retry the same body and same Idempotency-Key. A different body needs a new key. Poll an existing run id rather than creating another run.
  • For CONFLICT, inspect the run/plan status. Results, comparisons and exports may not be ready.
  • For quota/budget failures, review the estimate and obtain an approved budget or grant before retrying. Changing a client value does not issue credits.

Limits

Limit Value
Files per intake request 10
File size 25 MB
PDF pages read 300
Characters read per source 400,000 (the rest is reported as not reviewed)
Free hosted AI drafting 50 AI calls per organization per day
Community plan runs population 5,000 · 90 days · 50 replications · 300 s · 4 variants
Signed download links expire after 5 minutes
API tokens expire after at most 365 days