Биллинг и ограничения частоты
На этой странице описано, как с запроса списывается плата — от отправки до расчёта, — а также когда списание происходит при ошибках, отмене и ограничении частоты. Цены и способы тарификации для разных типов моделей см. в разделе Цены моделей.
Когда происходит списание
Section titled “Когда происходит списание”Каждый запрос проходит два этапа: «резервирование → расчёт»:
- Резервирование: перед передачей запроса в upstream с квоты ключа и баланса аккаунта резервируется расчётная сумма. Если не хватает хотя бы одного из них, запрос сразу отклоняется и не отправляется в upstream.
- Расчёт: после завершения запроса фактическая стоимость рассчитывается по реальному использованию, которое вернул upstream. Лишнее возвращается, недостающее дописывается.
Как рассчитывается резервная сумма:
| Тип модели | Способ расчёта |
|---|---|
| Оплата по токенам | Число входных токенов плюс max_tokens из запроса, оценка по цене модели |
| Ступенчатые цены | Оценка по максимальной ступени, при расчёте — по фактической ступени |
| Оплата за запрос или за изображение | Резервируется цена за одну единицу |
| Асинхронные задачи (видео, музыка и т. п.) | При отправке резервируется расчётная сумма, расчёт — после завершения задачи |
Списывается ли плата при ошибке
Section titled “Списывается ли плата при ошибке”Принцип: если оплачиваемого использования не было, плата не взимается, а резервная сумма возвращается полностью.
| Сценарий | Списание |
|---|---|
| Ключ недействителен, истёк, либо не хватает баланса или квоты ключа | Нет; запрос не отправляется в upstream |
| Ошибка в параметрах запроса, модель недоступна, нет доступных каналов | Нет |
Ограничение частоты (429) | Нет |
| Upstream вернул ошибку (4xx / 5xx) | Нет; резервная сумма возвращается полностью |
| Upstream вернул успех, но использование равно 0 | Нет |
| Upstream прервал поток или превысил таймаут во время стриминга | Плата за уже сгенерированный контент |
| Асинхронная задача завершилась ошибкой или таймаутом (не завершилась за 24 часа) | Нет; резервная сумма возвращается полностью |
Повторные попытки и резервные модели
Section titled “Повторные попытки и резервные модели”При ошибке upstream RouteAPI автоматически повторяет попытку или переключается на другой канал. Резервирование и расчёт выполняются один раз; неудачные попытки не тарифицируются — вы платите только за успешную. Если запрос в итоге выполняет резервная модель, плата рассчитывается по цене модели, которая его обслужила.
Стриминговый запрос, начавший выдавать вам содержимое, больше не повторяется. Если в этот момент upstream прерывается, плата взимается за уже сгенерированную часть.
Списывается ли плата при ручной отмене
Section titled “Списывается ли плата при ручной отмене”| Сценарий | Списание |
|---|---|
| Нестриминговый запрос: соединение разорвано до получения ответа | Нет; резервная сумма возвращается полностью |
| Стриминговый запрос: соединение разорвано в середине | Да, см. пояснение ниже |
| Асинхронные задачи (видео, музыка, Midjourney) | Отмена после отправки не поддерживается |
Если стриминговый запрос прерывается в середине, upstream обычно уже генерирует ответ и продолжит генерацию до конца. RouteAPI продолжит читать вывод upstream до завершения и спишет плату за фактически сгенерированное использование, а не только за полученную вами часть. Чтобы контролировать эти расходы, ограничивайте длину вывода через max_tokens.
Ограничения частоты запросов
Section titled “Ограничения частоты запросов”Для стабильности платформы и upstream платформа может ограничивать частоту запросов к моделям для каждого аккаунта. Лимит считается на аккаунт: все API-ключи одного аккаунта делят его.
При срабатывании ограничения возвращается 429 Too Many Requests; тело ответа имеет тот же формат, что и другие ошибки:
{ "error": { "message": "... (request id: ...)", "type": "error", "code": "" }}- Запросы, ограниченные по частоте, отклоняются до резервирования и не тарифицируются.
- Если upstream возвращает
429, RouteAPI автоматически переключается на другой канал.429возвращается вам, только если ограничение срабатывает и после повторов. - В ответе нет заголовка
Retry-After. Рекомендуется повторять запросы с экспоненциальной задержкой (например, 1 секунда, 2 секунды, 4 секунды) и случайным дрожанием. - Разделение на несколько API-ключей не увеличивает лимит. Если нужна более высокая частота запросов, свяжитесь с нами.
У API платформы (/api/open/v1) свои правила ограничения частоты; см. Ошибки и лимиты API платформы.
Проверка списаний
Section titled “Проверка списаний”В журнале использования можно посмотреть детали каждого списанного запроса:
| Поле | Описание |
|---|---|
| Время | Время запроса |
| Ключ | Имя API-ключа, отправившего запрос |
| Модель | Модель, по которой фактически списана плата |
| Время / первый токен | Общее время; для стриминговых запросов также задержка до первого токена |
| Вход | Число входных токенов; при попадании в кэш отдельно показываются чтение и запись кэша |
| Выход | Число выходных токенов |
| Стоимость | Фактически списанная сумма за этот запрос |
| Детали | Цена за единицу, множитель и процесс расчёта |
Поле usage в ответе API также возвращает использование токенов за этот запрос:
| Поле | Описание |
|---|---|
prompt_tokens | Входные токены |
completion_tokens | Выходные токены; сюда же входят токены рассуждения reasoning-моделей |
total_tokens | Сумма входа и выхода |
prompt_tokens_details.cached_tokens | Входные токены, попавшие в кэш |
Если для аккаунта действует индивидуальная скидка, сумма в журнале уже указана со скидкой.