6ioAPI

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

Формат ошибки

Как у OpenAI, поэтому SDK разбирают её сами:

{"error": {"message": "Not enough funds on the API balance for this request", "type": "insufficient_funds", "code": "insufficient_funds"}}

Для программ важен code: по нему можно писать условия. Текст message может меняться.

Ответ поставщика на ошибку в ваших параметрах (например, 400 от модели) приходит как есть.

Коды

Ключ и аккаунт

HTTP code Что случилось
401 invalid_api_key ключа нет в заголовке, он неверный, отозван или истёк
403 account_blocked аккаунт заблокирован
403 account_restricted аккаунт в ограниченном режиме, платные запросы закрыты; напишите в поддержку

Запрос

HTTP code Что случилось
400 invalid_body, unsupported_parameter, invalid_idempotency_key запрос не разобран или использует то, что пока не поддерживается
400 invalid_webhook_url адрес уведомления не подходит: не https, закрытая сеть, адрес этого API, слишком длинный или не строка
404 model_not_found неизвестный префикс, нет такой модели или она не продаётся
404 not_found запрос, задание или задача не найдены или принадлежат другому аккаунту
413 request_too_large тело запроса слишком большое

Деньги и повторы

HTTP code Что случилось
402 insufficient_funds не хватает доступных средств, баланс отрицательный или (для бесплатной модели) равен нулю
409 idempotent_request_exists запрос с этим Idempotency-Key уже принят
422 idempotency_key_reused тот же Idempotency-Key с другим телом

Лимиты

HTTP code Что случилось
429 rate_limit_exceeded слишком часто
429 concurrency_limit_exceeded заняты все места одновременных запросов (отдельно для чата и для картинок, видео и звука)
429 too_many_waiting_requests слишком много запросов ждут свободное место
429 too_many_unsettled_requests слишком много запросов ещё не закрыты по деньгам
429 ip_rate_limit_exceeded, ip_blocked, too_many_connections слишком много запросов или соединений с одного IP, либо IP временно заблокирован

Поставщик и сервис

HTTP code Что случилось
503 service_unavailable сервис временно недоступен, деньги по запросу не списаны
503 upstream_busy поставщик не принял запрос из-за частоты или до него не достучались: ничего не списано, повторите после Retry-After
502, 503 upstream_unavailable поставщик не ответил, исход проверяется, резерв удержан

Модели fal и Sixio

HTTP code Что случилось
400 invalid_endpoint fal: неверный ID модели
400 unsupported_model fal: единица цены модели пока не поддерживается
422 invalid_input Sixio: параметры задачи отвергнуты или файл по ссылке не принят (ссылка не открылась, не публичный адрес, слишком большой, не тот тип). Задача не принята, деньги не резервировались

Фоновые задания

HTTP code Что случилось
400 unsupported_operation такой операции нет
409 job_failed, job_outcome_unknown, result_unavailable, result_too_large результата нет: задание не выполнено, исход проверяется, либо поставщик выполнил работу, но ответ до нас не дошёл или он больше предела хранения
410 result_expired срок хранения результата истёк

Что делать с каждой из них, написано в разделе Повторы и сбои.

Лимиты

Лимиты действуют на аккаунт целиком: все его ключи делят один лимит, число ключей его не увеличивает. Различаются:

  • частота платных запросов: средняя скорость и всплеск;
  • одновременные запросы: сколько генераций идёт параллельно;
  • ожидание: если места нет, запрос ждёт несколько секунд, прежде чем получить 429. Отложенным заданием с ответом 202 он не становится;
  • незакрытые по деньгам: сколько запросов уже отправлено, но сумма по ним не подтверждена;
  • чтение (/models, /balance, /requests): считается отдельно, и частые проверки статуса не съедают лимит генераций.

Все ответы 429 содержат заголовок Retry-After в секундах и код причины. Это интервал повторной попытки, а не обещание, что место освободится именно тогда. Свои лимиты и их использование видно в консоли, на вкладке «Обзор». Значения лимитов зависят от аккаунта и могут быть изменены по запросу в поддержку.