beatra
Launch & operate

Error codes

Public API error codes with retryable flags and HTTP status mapping.

The table below is auto-generated from beatra's public runtime error taxonomy.

Every public beatra error response uses the standard error envelope. The error.code field is one of the stable public values below; the error.retryable boolean tells the client SDK whether a naive retry could succeed.

Branching rules for client SDKs

  • retryable: true errors can be retried with the exact same request after a brief backoff. If a Retry-After header is present, honor it.
  • retryable: false errors will produce the same outcome on retry; the client must either change the request, fix credentials, or surface the error to the user.
  • error.param (when present) is a JSON Pointer (RFC 6901) to the offending field in the request body.

Auth / Account

codeHTTPretryabledescription
unauthorized401noMissing Authorization header.
invalid_api_key401noAPI key not found, signature mismatch, disabled, or revoked.
api_key_region_mismatch400noAPI key's region prefix doesn't match the endpoint host.
tenant_disabled403noTenant has been suspended.
forbidden403noGeneric permission denial.
email_send_failed502yesLogin-code email could not be delivered (transient send failure). Retryable after a brief backoff.

Billing

codeHTTPretryabledescription
insufficient_balance402noAccount balance is too low to create new work.
billing_failed500yesCharge or refund attempt failed after retries.

Request validation

codeHTTPretryabledescription
invalid_request422noRequest body fails structural validation. details.errors lists field paths.
unsupported_capability400noCapability does not exist or is disabled.
unsupported_model400noModel does not exist or is not available for this capability.
unsupported_option422noThe selected model does not support a field in the request. details.unsupported_fields[] lists the field names. Use a different model or remove the field. In auto mode this is returned only when no available candidate can satisfy the requested options.
safety_rejected400noInput prompt triggered safety policy. details.policy_category may be one of violence / sexual / pii / etc.
content_filtered502noA safety filter blocked the output mid-generation. Try rephrasing the prompt or switching to a less strict model.
not_found404noRequested HTTP resource or API endpoint was not found.
http_error400noGeneric HTTP error without a more specific public code.

Idempotency and response mode

codeHTTPretryabledescription
idempotency_conflict409noSame Idempotency-Key was used previously with a different request body. Use a new key for a changed request.
request_in_progress409yesSame Idempotency-Key matches an in-flight request. Retry later with the same key; the same response will be returned when available.
streaming_not_yet_implemented501noLegacy compatibility code for older deployments where stream=true was recognized but not enabled. Current /v1/chat/completions supports streaming responses.

Capacity and availability

codeHTTPretryabledescription
rate_limited429yesCaller-side rate limit exceeded. Retry with backoff.
model_unavailable503yesThe requested model is temporarily unavailable. Retryable; if persistent, switch model or contact support.
model_request_failed502yesThe model request failed after retryable service errors. Retry with backoff.
model_timeout504yesThe model request timed out. Retry with backoff.
model_rate_limited429yesModel capacity was rate-limited. Retry with backoff.
internal_error500yesUnclassified server-side error. Retryable.

Generated from 25 public runtime error codes. 13 internal or planned-surface runtime codes are intentionally omitted from public docs.

How to handle errors

Every error body is:

{
  "error": {
    "code": "<machine code>",
    "message": "<human description>",
    "retryable": true,
    "request_id": "req_..."
  }
}
  • retryable: true -> the same request can be retried after a brief backoff. If a Retry-After header is present, honor it.
  • retryable: false -> change the request before retrying. Looping on a non-retryable error is a bug.

On this page