Rate limits#
Боевые ключи (orb_live_)#
| Лимит | Дефолт | Где смотреть |
|---|---|---|
| Per-key RPM | 60 req/min | /limits в боте |
| Per-user RPM | 120 req/min | (суммарно по всем live-ключам) |
| Per-key daily $ cap | ∞ (не задан) | /limits |
| Минимальный баланс | $0.10 | для старта запроса |
Все RPM-лимиты — fixed-window per-minute через Redis INCR. Минута
сбрасывается на UTC-границе.
При превышении — 429:
json
{ "error": { "message": "Rate limit exceeded: 61/60 req/min", "type": "rate_limit" } }
Sandbox-ключи (orb_test_)#
См. отдельную страницу: Sandbox-ключи.
Как видеть текущее использование#
В боте: /limits
``` Лимиты (сутки в UTC)
• default · orb_live_a1b2c3 RPM: 60 · daily: ∞ · потрачено сегодня: $0.0234
• ci · orb_test_x9y8z7 hard cap: 30 req/min · 1000 req/day · сегодня: 142 запроса ```
Reservation pattern#
Перед каждым запросом мы резервируем (hold) оценочный максимум стоимости
(max_tokens × $50/1M токенов — верхняя оценка под самые дорогие модели)
против твоего баланса. Это значит:
- Параллельные запросы сериализуются на уровне баланса.
- Если 60 параллельных стримов на дорогую модель попытаются запуститься с балансом $0.10 — пройдут только те, что суммарно укладываются.
- После окончания запроса hold освобождается, фактическая стоимость списывается.
В обычной работе это незаметно. Влияет только при попытке параллелить дорогие
запросы на низком балансе — увидишь 402 insufficient_funds.
Что делать если упёрся#
429 rate_limit— снизь частоту (экспоненциальная задержка), либо распредели запросы по нескольким ключам (но per-user RPM всё равно действует).429 daily_limit— жди UTC-полночи или напиши @Byffee — поднимем дневной лимит на ключе.402 insufficient_funds— пополни через/topupв боте.