Source: https://ailoot.ai/docs/ru/errors/
Canonical: https://ailoot.ai/docs/ru/errors/
Language: ru

[Помощь](https://ailoot.ai/docs/ru/) 

# Ошибки и лимиты

[Markdown](https://ailoot.ai/docs/ru/errors/index.md)

Коды ответов, их смысл и что делать. Все ошибки — в JSON и с Request ID.

## [](https://ailoot.ai/docs/ru/errors/#format)Формат ошибки

Ошибка приходит в формате того API, который вы вызвали: объект `error` для OpenAI, `{"type": "error", "error": {...}}` для Anthropic и `error` с полями `status` и `details` для Gemini. Поэтому SDK распознают их как обычные ошибки API.

- `error.code` и `error.reason` — класс ошибки из таблицы ниже, они совпадают. `error.type` — стандартное значение формата (например, `invalid_request_error` или `server_error`).
- `error.request_id` (в Anthropic — `request_id` на верхнем уровне), заголовок `X-Request-ID` и конец текста сообщения — идентификатор запроса.
- В Gemini класс лежит в `error.details`: `ErrorInfo.reason` — тот же код верхним регистром (например, `MODEL_OVERLOADED`), `domain` — `ailoot.ai`; идентификатор запроса — в `RequestInfo.requestId`.
- В формате Gemini ошибка 5xx, которую нельзя повторять автоматически, и `result_pending_check` приходят со статусом 409 и `status` `ABORTED`: так Gemini SDK и CLI не повторяют их сами. Класс ошибки — в `ErrorInfo.reason` (например, `MODEL_TIMEOUT` или `RESULT_PENDING_CHECK`).
- В ответе OpenAI-формата есть ещё поля верхнего уровня `code` и `message` — для старых клиентов.

```json
{
  "code": "API_KEY_REQUIRED",
  "error": {
    "code": "invalid_api_key",
    "message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
    "param": null,
    "reason": "invalid_api_key",
    "request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
    "type": "invalid_request_error"
  },
  "message": "No API key was sent with the request. Nothing was charged. …"
}
```

```json
{
  "type": "error",
  "error": {
    "type": "authentication_error",
    "code": "invalid_api_key",
    "reason": "invalid_api_key",
    "message": "… Nothing was charged. … Request ID: 94ed3e31-4373-41ce-bf8a-0d1ed3f7235e."
  },
  "request_id": "94ed3e31-4373-41ce-bf8a-0d1ed3f7235e"
}
```

```json
{
  "error": {
    "code": 401,
    "status": "UNAUTHENTICATED",
    "message": "The API key is not valid. Nothing was charged. … Request ID: e7aa743b-9d0d-4064-b206-2562609f545b.",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "INVALID_API_KEY",
        "domain": "ailoot.ai",
        "metadata": {
          "code": "invalid_api_key",
          "reason": "invalid_api_key",
          "request_id": "e7aa743b-9d0d-4064-b206-2562609f545b"
        }
      },
      {
        "@type": "type.googleapis.com/google.rpc.RequestInfo",
        "requestId": "e7aa743b-9d0d-4064-b206-2562609f545b"
      }
    ]
  }
}
```

“Nothing was charged” значит, что деньги не списаны. Если пришёл X-Should-Retry: false — не повторяйте автоматически, сначала проверьте Request ID в истории.

## [](https://ailoot.ai/docs/ru/errors/#codes)Коды ошибок

| HTTP | Класс (reason) | Что случилось | Что делать |
| --- | --- | --- | --- |
| 400 | `invalid_request` | Запрос некорректен: неверное тело или параметр; модель не поддерживает поле, вложение или инструмент из запроса; ключ передан в адресе | Исправьте запрос по тексту ошибки: уберите неподдерживаемое поле, вложение или инструмент; ключ передавайте в заголовке. Отказ из-за неподдерживаемого поля, вложения или инструмента приходит до резерва — ничего не списано |
| 400 | `context_length_exceeded` | Запрос длиннее контекста модели | Сократите историю или возьмите модель с большим контекстом |
| 400 | `content_policy_violation` | Запрос отклонён правилами модели | Переформулируйте запрос |
| 401 | `invalid_api_key` | Ключа нет или он неверный | Проверьте, что ключ передан целиком |
| 401 | `api_key_disabled` | Ключ отключён | Включите или создайте новый ключ |
| 402 | `insufficient_balance`, `insufficient_quota` | Не хватает свободного баланса даже на минимальный резерв (`insufficient_quota` — тот же случай в виде, привычном для OpenAI SDK) | Пополните баланс или уменьшите max\_tokens |
| 402 | `api_key_quota_exhausted` | Исчерпан общий лимит трат ключа | Увеличьте лимит ключа в кабинете |
| 402 | `payment_disputed` | На аккаунте долг по оспоренному платежу | Новые запросы приостановлены до погашения — напишите в поддержку |
| 403 | `api_key_expired` | Срок действия ключа истёк | Создайте новый ключ |
| 403 | `account_inactive` | Ваш аккаунт отключён | Напишите в поддержку |
| 403 | `permission_denied` | Ключу запрещён этот запрос (например, по IP) | Проверьте ограничения ключа |
| 404 | `model_not_found` | Нет такой модели | Сверьте ID с /v1/models |
| 404 | `unsupported_endpoint` | Модель не работает в этом формате | Выберите другой формат или модель |
| 404 | `not_found` | Нет такого пути или объекта (например, задачи) | Проверьте адрес и идентификатор |
| 409 | `duplicate_request` | Операция с тем же ключом идемпотентности уже принята и, возможно, завершена | Проверьте результат первой операции, новую не отправляйте |
| 409 | `not_ready`, `video_not_ready` | Видео или другая задача ещё не готова | Запросите статус позже |
| 409, 503 | `result_pending_check` | Уточняем результат запроса. У видеозадачи это флаг `result_pending_check: true` в ответе статуса, сама задача остаётся `in_progress` | Не отправляйте запрос повторно — статус появится в истории (GET https://ailoot.ai/api/v1/usage). Видеозадачу не создавайте заново: проверьте её позже через GET /v1/videos/{id} |
| 410 | `model_retired` | Модель снята с обслуживания | Выберите новую версию в GET /v1/models |
| 413 | `request_too_large` | Тело запроса слишком большое | Уменьшите файлы или историю |
| 429 | `rate_limit_exceeded`, `gateway_concurrency_limit`, `gateway_queue_full` | Слишком много запросов или одновременных запросов с вашего аккаунта | Подождите (заголовок `Retry-After`, обычно 10 с) и повторите |
| 429 | `usage_limit_reached` | Исчерпано окно трат ключа (5 часов, 1 день или 7 дней) | Подождите, пока окно обновится, или поднимите лимит ключа |
| 500 | `internal_error` | Ошибка Ailoot | Напишите в поддержку с Request ID |
| 502 | `invalid_model_response`, `empty_response`, `incomplete_response` | Модель вернула некорректный, пустой или неполный ответ | Найдите Request ID в истории кабинета. Если там есть результат или списание, повтор создаст второй платный запрос. Отсутствие записи не подтверждает, что запрос не отправлен или не выполнен: не повторяйте неизвестную отправку; обратитесь в поддержку с Request ID. |
| 502 | `result_not_delivered` | Результат не доставлен по вине Ailoot, резерв или списание возвращены | Запрос можно отправить заново |
| 503 | `model_overloaded` | Модель временно перегружена | Если X-Should-Retry: true — повторите через Retry-After секунд; если false — сначала проверьте Request ID в истории |
| 503 | `model_unavailable` | Модель временно недоступна | Выберите другую модель. Если X-Should-Retry: true — повторите через Retry-After секунд; если false — сначала проверьте Request ID в истории |
| 503 | `service_unavailable` | Временный сбой на стороне Ailoot | Если X-Should-Retry: true — повторите через Retry-After секунд; если false — сначала проверьте Request ID в истории |
| 503 | `charge_not_confirmed` | Ответ не выдан: не удалось подтвердить списание; резерв возвращён, деньги не списаны | Если X-Should-Retry: true — повторите через Retry-After секунд; если false — сначала проверьте Request ID в истории |
| 504 | `model_timeout` | Модель не ответила вовремя, результат ещё может появиться | Не отправляйте запрос заново, пока не проверите Request ID в истории |

Коды для ответов модели и проверки результата (502, 503 и 504) теперь называют модель или запрос: `model_unavailable`, `model_timeout`, `invalid_model_response`, `incomplete_response`, `charge_not_confirmed` и `result_pending_check`. Если ваш код сравнивает `error.code` с прежними значениями, замените их на коды из таблицы; соответствие прежних кодов новым подскажет [поддержка](https://ailoot.ai/docs/ru/support/).

## [](https://ailoot.ai/docs/ru/errors/#retry)Когда повторять запрос

- **Сначала посмотрите на X-Should-Retry**: при `false`, `result_pending_check` или `model_timeout` не повторяйте автоматически. Найдите Request ID в истории кабинета: там видно результат и списание.
- **Повтор безопасен, когда пришёл X-Should-Retry: true**: подождите `Retry-After` секунд. Для 5xx одного кода мало: результат мог уже появиться. Сначала проверьте историю в кабинете или напишите в поддержку с Request ID. Это особенно важно для картинок, видео, музыки и длинных агентных шагов.
- **Не поможет повтор**: 400, 401, 402, 403, 404 — сначала исправьте запрос, ключ или баланс.

SDK OpenAI и Anthropic обычно автоматически повторяют сетевые ошибки и 5xx. Для генераций отключайте это (`max_retries=0`) и проверяйте `X-Should-Retry` до новой попытки. Потерянный ответ не значит, что запрос не выполнен.

## [](https://ailoot.ai/docs/ru/errors/#limits)Лимиты

Частота и число одновременных запросов ограничены для вашего аккаунта в целом, а не для отдельного ключа. При превышении придёт 429 `rate_limit_exceeded` с заголовком `Retry-After: 10`. Если перегружена сама модель — 503 `model_overloaded` с `Retry-After: 30`. Если нужна большая нагрузка, напишите в [поддержку](https://ailoot.ai/docs/ru/support/).

Лимиты трат задаются у ключа: общий лимит — 402 `api_key_quota_exhausted`, окна 5 часов, 1 день и 7 дней — 429 `usage_limit_reached`. Подробнее — [Ключи и адрес API](https://ailoot.ai/docs/ru/keys/#key).

## [](https://ailoot.ai/docs/ru/errors/#nvidia)Модели NVIDIA: очередь

Список моделей можно запрашивать и при нулевом балансе; для генерации нужен баланс на резерв. Модели NVIDIA (Nemotron и другие) работают через общую очередь: при высокой нагрузке ответ может прийти позже или вернётся ошибка «модель временно перегружена» с заголовком Retry-After — повторите после указанного времени. Цены — в каталоге, списание как у остальных моделей.

Лимиты размера задаёт модель: контекст (сколько токенов можно отправить) и максимальная длина ответа. Они указаны в [каталоге](https://ailoot.ai/models/ru/).

## История и расходы

[История и расходы](https://ailoot.ai/usage) · [GET https://ailoot.ai/api/v1/usage](https://ailoot.ai/docs/ru/cabinet/usage/) · JWT · `Authorization: Bearer $TOKEN`

`JWT ≠ sk-…` · [Вход и сеансы](https://ailoot.ai/docs/ru/cabinet/auth/)

Остались вопросы? Пришлите Request ID и описание — поможем разобраться.[Написать в поддержку](mailto:support@ailoot.ai)

## Ailoot · Компания и портфель её проектов





Ailoot опирается на накопленный опыт работы, большую клиентскую базу, стабильный сервис и постоянный контроль KPI.





Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.





Этот опыт Ailoot использует для API-доступа к нейросетям в продуктах клиентов, агентах, приложениях и автоматизациях.
