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 forFORBIDDEN. A missing or inaccessible tenant resource is reported asNOT_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 |