Перейти к основному содержанию
OrcaRouter ограничивает запросы на уровне рабочего пространства, а не на уровне отдельных API-ключей. Все ключи одного рабочего пространства берут квоту из одного общего бакета. При превышении лимита вы получаете ответ HTTP 429 Too Many Requests с заголовком Retry-After.

Почему на уровне рабочего пространства

Рабочие пространства — это то, как OrcaRouter группирует ключи, участников и биллинг, относящиеся к одной команде или человеку. Общие лимиты внутри рабочего пространства делают трафик предсказуемым по мере роста команды: добавление нового ключа (или нового участника) не умножает ваш общий бюджет. Если вам нужен более высокий потолок, обновите тарифный план рабочего пространства. OrcaRouter не раскрывает вызывающим лимиты запросов в разрезе моделей — с точки зрения вашего приложения шлюз ведёт себя как единый логический провайдер, что соответствует непрозрачности провайдеров. Внутреннее ограничение трафика к апстрим-провайдерам происходит прозрачно и не является частью публичного контракта.

Ответ

Запрос с превышением лимита всегда возвращает:
HTTP/1.1 429 Too Many Requests
Retry-After: <seconds>
Некоторые пути ограничения также включают тело JSON, объясняющее, какой лимит был достигнут; другие (самый быстрый путь с бакетом рабочего пространства) возвращают только код статуса и заголовки. Не зависьте от формы тела — проверяйте код статуса 429 и читайте Retry-After. Если тело присутствует, оно следует OpenAI-совместимому формату с error.type, установленным в orcarouter_api_error. Сообщение error.message может быть локализовано (сейчас на китайском) — структуру формата см. в разделе Ошибки. Retry-After указан в секундах. Это длительность окна ограничения (консервативное значение — безопасно ждать ровно столько); в следующем окне будет полный бюджет. Немедленный повтор без ожидания снова завершится ошибкой.

Рекомендуемое поведение клиента

  1. При 429 прочитайте Retry-After.
  2. Подождите указанное количество секунд.
  3. Повторите тот же запрос.
  4. Если возник второй 429, увеличьте время ожидания в 2 раза (экспоненциальный откат) вплоть до 60 секунд.
  5. Если вы видите 429 повторно, рассмотрите распределение трафика между несколькими моделями с помощью extra_body.models — см. Резервирование моделей.
OpenAI Python и TypeScript SDK обрабатывают Retry-After автоматически по умолчанию. Вам не нужен пользовательский код, если вы не отключили повторы.

Реактивно, а не предиктивно

OrcaRouter не возвращает заголовки X-RateLimit-Remaining / X-RateLimit-Reset, поэтому вы не можете заранее проверить, сколько бюджета осталось. Воспринимайте 429 как сигнал — отступайте при его появлении и возобновляйте работу.