altrouter.ai
ПЛАТФОРМА

Надёжность

Что мы делаем, чтобы сбой одного провайдера не стал вашим сбоем, — и где проходит граница, за которой ошибка всё-таки доходит до вас.

Failover до того, как вы увидите ошибку

У большинства моделей есть несколько провайдеров. Запрос идёт к ним по очереди, от дешёвого к дорогому. Если провайдер отвечает 429, таймаутом или 5xx, мы молча переходим к следующему — в вашем ответе это никак не отражается, кроме поля provider в логе.

Провайдер, который упал несколько раз подряд, временно исключается из выдачи (circuit breaker) и не мешает следующим запросам, пока не восстановится. Ошибку 503 вы получите, только если перебрали все маршруты и все они отказали.

i
Поэтому 5xx от нас безопасно повторять: к моменту, когда ошибка дошла до вас, резервные маршруты уже перебраны. Повтор имеет смысл с задержкой — скорее всего, лежит сама модель, а не конкретный провайдер.

Что не переигрывается

Если провайдер уже принял запрос и начал биллить его на своей стороне — например, создал асинхронную задачу генерации, — мы не отправляем запрос второму провайдеру, даже если первый затем отвалился. Иначе вы заплатили бы дважды за одну картинку. В таком случае ошибка возвращается вам как есть.

Отказ модерации тоже не переигрывается: если провайдер отклонил промпт, другой провайдер той же модели отклонит его так же. Такой запрос сразу возвращает 400 content_policy_violation и не тратит кредиты.

Таймауты и отмена

  • Запрос, не уложившийся в отведённое время, завершается 504 timeout. Зарезервированные под него кредиты возвращаются на баланс.
  • Если соединение разорвали вы (например, отменили стрим), запрос помечается в логе как 499 client_closed. Это не сбой сервиса.
  • Резерв под запрос, чей процесс умер, освобождается автоматически — деньги не зависают.

Честные ожидания

Мы даём доступ к моделям дешевле официальных API, и часть этой разницы — работа с провайдерами, у каждого из которых своя стабильность. Failover сглаживает их сбои, но не отменяет: наша доступность складывается из нашей собственной и доступности хотя бы одного маршрута к вашей модели. Для моделей с единственным провайдером резерва нет по определению.

В продакшене стоит закладываться на это: ретраить 5xx с backoff, уважать retry-after при 429 и держать запасную модель для критичного пути. Разбор кодов — в разделе Ошибки.

ДалееAPI-референс