Лимиты и квоты
Runne Pass применяет два вида ограничений:
- Rate limits по ключу — скользящее окно лимитов запросов на пути chat.
- Квоты воркспейса — месячный бюджет токенов (применяется) плюс заявленные лимиты.
Rate limiting по ключу
POST /v1/chat/completions лимитируется по каждому API-ключу. По умолчанию:
| Лимит | Значение по умолчанию |
|---|---|
requests_per_minute | 60 |
tokens_per_day | 1 000 000 (заявлен, в beta не применяется) |
Их можно переопределить для ключа при создании через опциональный объект rate_limit — см. API-ключи.
Механика
- Скользящее окно реализовано как атомарный Lua-скрипт Redis (sorted set). Запросы старше окна отбрасываются, текущий счётчик сравнивается с лимитом.
- In-memory fallback используется, когда Redis недоступен, поэтому лимитирование деградирует плавно, а не «открывается».
- Запрос сверх лимита возвращает
429(Rate limit exceeded).
Заголовки ответа
На пути chat каждый ответ несёт:
| Заголовок | Значение |
|---|---|
X-RateLimit-Limit | Разрешённое число запросов на окно |
X-RateLimit-Remaining | Осталось запросов в текущем окне |
X-RateLimit-Reset | Timestamp (мс), когда окно сбросится |
Читайте X-RateLimit-Remaining и X-RateLimit-Reset перед повтором 429.
Rate limiting на auth
Вход и регистрация лимитируются по IP, чтобы замедлить перебор учётных данных:
| Эндпоинт | Лимит |
|---|---|
POST /v1/auth/login | 10 / минуту |
POST /v1/auth/register | 5 / минуту |
Превышение возвращает 429 (Too many attempts).
Квоты воркспейса
Квоты привязаны к воркспейсу и версионируются (каждое обновление архивирует предыдущую строку и вставляет новую с новым effective_from).
Чтение квоты и потребления
curl -b cookies.txt https://api.runne.run/v1/workspaces/WORKSPACE_ID/quota
curl -b cookies.txt https://api.runne.run/v1/workspaces/WORKSPACE_ID/quota/usageОтвет quota — { "quota": { … } } (или null, если квота не задана); usage возвращает tokens_used и requests_count за текущий период.
Поля квоты
| Поле | Применяется в beta? |
|---|---|
tokens_per_month | да |
requests_per_minute | нет (заявлено) |
max_workspaces | нет (заявлено) |
max_members_per_workspace | нет (заявлено) |
max_api_keys_per_workspace | нет (заявлено) |
Применение tokens_per_month
Месячный бюджет токенов применяется атомарно при расчёте: счётчик quota_usage увеличивается только если приращение не выводит потребление за квоту (гард NOT EXISTS внутри обновления делает проверку устойчивой к гонкам). Если квота была бы превышена — приращение пропускается.
::: note Квота против баланса Квота ограничивает потребление; баланс ограничивает средства. Запрос может быть ограничен квотой даже при наличии средств, и наоборот. :::