Перейти к содержимому
EN

Ошибки, лимиты, биллинг

Конверт совпадает с OpenAI, поэтому обработчики ошибок в существующем коде менять не нужно:

{
"error": {
"message": "Rate limit reached for requests. Limit: 60 requests/min.",
"type": "rate_limit_exceeded",
"param": null,
"code": "rate_limited"
}
}
HTTP type Что произошло и что делать
400 invalid_request_error Неверный параметр: размер вне списка модели, файл модели, которая не умеет файлы, сочетание параметров, которое модель не принимает (code: "invalid_request", причина от модели — в message). Сверьтесь с каталогом
400 content_filter Запрос отклонён фильтром апстрима. Переформулируйте промпт
401 invalid_request_error Ключ отсутствует, отозван или неверный
402 insufficient_quota Не хватает денег на балансе — или они заняты генерациями, которые ещё идут (см. одновременные генерации). Пополнить в кабинете или дождаться окончания
403 invalid_request_error У ключа нет нужной области доступа
404 invalid_request_error Модель не найдена (model_not_found)
413 api_error Аудиофайл больше 25 MB в /audio/transcriptions. Уменьшить файл
429 rate_limit_exceeded Превышен лимит запросов в минуту (code: "rate_limited") или одновременных генераций (code: "concurrency_limit_exceeded")
500 api_error Наша ошибка. Повторить с экспоненциальной паузой
502 api_error Апстрим не ответил. Повторить или взять другую модель

По умолчанию — 60 запросов в минуту на ключ, фиксированное окно в 60 секунд: счётчик сбрасывается раз в минуту. При превышении приходит 429 и два заголовка:

retry-after: 37
x-ratelimit-limit-requests: 60

retry-after — сколько секунд ждать. Официальные OpenAI SDK читают его сами и делают backoff, самописному клиенту это стоит реализовать.

Лимит считается по ключу, а не по аккаунту: если нужно больше параллелизма, разложите нагрузку на несколько ключей.

Видео, музыка и картинки идут параллельно, но не без предела. На аккаунт одновременно выполняется не больше:

Что Сколько задач разом
Видео (/videos) 10
Музыка (/music) 10
Картинки (/images/*) 20

Сверх лимита приходит 429 с code: "concurrency_limit_exceeded" и заголовком X-Mixen-Concurrent-Limit — дождитесь, пока одна из задач перейдёт в completed или failed, и повторите. Если интеграции нужно больше — напишите в поддержку, лимит поднимается на конкретный ключ.

Пока задача выполняется, её стоимость отложена на балансе. Новая задача проверяется по свободному остатку: если на балансе 100 ₽, а идёт видео за 67 ₽, второе такое же получит 402 — денег хватает только на уже запущенное.

  • Деньги списываются с единого баланса Mixen — того же, что у бота и кабинета.
  • Списание происходит по факту выполнения. Неудачная генерация (failed, 502, зависшая видеозадача) не оплачивается.
  • Цена берётся из каталога на момент запроса. Единицы тарификации — в разделе Модели и цены.
  • Расход по чату виден в поле usage ответа; в стриминге он приходит финальным чанком при stream_options: {"include_usage": true}.

Разумная стратегия для продакшена:

  1. 429 — ждать retry-after, потом повторить.
  2. 500 и 502 — до трёх попыток с паузой 1, 2, 4 секунды.
  3. 400, 401, 402, 403, 404 — не повторять, это ошибка запроса или счёта; повтор даст тот же ответ и потратит лимит.

Ставьте таймаут HTTP-клиента не меньше 120 секунд для картинок и длинных чатов: обрыв на стороне клиента не отменяет уже начатую генерацию, и деньги за неё спишутся. Для видео и музыки таймаут не нужен вовсе — они асинхронные.