Errors

Non-2xx responses carry a JSON error envelope with a human-readable message, an error type, and — where applicable — a machine-readable code (validation errors leave code null). The rare exception is a gateway-level timeout, which returns plain HTML.

Cura 1T is a research model, not a medical service, and not a substitute for a clinician. Benchmark scores do not establish safety for unsupervised clinical use.

Error envelope

JSON
{  "error": {    "message": "Invalid or expired API key",    "type": "invalid_request_error",    "param": null,    "code": "invalid_api_key"  }}

400 — Bad request

The request body failed validation before reaching the model.

  • Malformed JSON, or a message missing role/content
  • An unsupported field — the validator rejects extra inputs (e.g. "Extra inputs are not permitted, field: 'messages[2].partial'")
  • An image_url part that is not a valid data: URI, or an https URL the gateway cannot download

401 — Authentication error

The Authorization header is missing, malformed, or the key is invalid.

  • Missing 'Authorization: Bearer $ACTAVA_API_KEY' header
  • A revoked or mistyped key — check for stray whitespace when exporting the env var

403 — Permission error

The key is valid but not entitled to this resource.

  • The key's grant doesn't include the requested model id

404 — Not found

The route or model id doesn't exist.

  • A typo in the path — only /v1/models and /v1/chat/completions are served; any other route returns 404 with code NO_RULE_MATCHED
  • A model value other than "actava/cura-soar" (code model_not_found)

429 — Rate limit

Too many requests or tokens in the current window.

  • Back off exponentially and retry; contact us for higher throughput commitments

500 / 502 / 504 — Server errors

Transient service-side failures.

  • Retry with exponential backoff; if persistent, contact support with the request id
  • 502 upstream_error — the inference provider behind the gateway failed; retryable
  • An empty messages array currently hangs and times out as an HTML 504 rather than a fast 400 — always send at least one message

Troubleshooting tips

  • Log the full error envelope, not just the HTTP status — the code disambiguates.
  • Retry only idempotent situations: 429 and 5xx with backoff. Don't retry 400s — fix the request.
  • For streaming requests, errors after the stream opens arrive as a terminal SSE event — handle both paths.