Errors & limits

ozeye returns standard HTTP status codes. The OpenAI-compatible endpoints use the OpenAI error envelope, so OpenAI SDKs raise their usual exception types:

{
  "error": {
    "message": "insufficient credits: top up your balance",
    "type": "insufficient_credits",
    "code": null
  }
}

type is one of invalid_request_error, authentication_error, permission_error, not_found_error, rate_limit_error, api_error or insufficient_credits. code is a machine-readable string where one exists, otherwise null:

{
  "error": {
    "message": "email address not verified",
    "type": "permission_error",
    "code": "email_unverified"
  }
}

The Anthropic Messages API (/v1/messages) keeps the Anthropic error envelope, so Anthropic SDKs and Claude clients handle errors natively:

{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "description of the problem"
  }
}

Common status codes

400 Bad Request (invalid_request_error)

Invalid JSON, unknown or missing field, invalid preset, unsupported model modality, or invalid file.

401 Unauthorized (authentication_error)

Missing, expired, revoked, or invalid API key or session.

402 Payment Required (insufficient_credits)

Insufficient credits or key credit limit reached.

403 Forbidden (permission_error)

Authenticated but not allowed, for example an unverified email address (code email_unverified) or a blocked provider.

404 Not Found (not_found_error)

Route, model, preset, notebook file, or session not found.

409 Conflict

Notebook file changed since supplied ETag, key limit reached, or invalid state transition.

429 Too Many Requests (rate_limit_error)

Rate limit exceeded, or too many requests in flight for your account. Retry after the Retry-After delay.

502 / 503 (api_error)

Provider unavailable or failing, billing not configured, or cloud notebook mode unavailable. Failed provider calls are not billed.

Body limits

  • Chat completions and Anthropic messages: 15 MB request body (room for base64 images).
  • Audio transcription: 25 MB decoded audio (36 MB request body for base64 JSON).
  • Embeddings, speech and image generation: 1 MB request body.
  • Web search: 1 MB request body, query up to 2,000 characters. Web fetch: 64 KB request body.
  • Account, preset and notebook endpoints (including notebook save and sync): 1 MB request body.
  • Webhook payloads: 1 MB.