Перейти к содержимому
EN

Токены и списания

Текстовые модели тарифицируются по токенам: вход (системный промпт, история, последнее сообщение) — по цене входа, ответ — по цене выхода. Обе цены заданы в рублях за 1 млн токенов и видны в каталоге и в GET /v1/models (pricing.prompt_rub, pricing.completion_rub). Списание происходит по факту выполнения: сколько токенов реально ушло и пришло, столько и оплачено — точные цифры всегда в usage ответа.

Остальные модальности считаются не токенами, а естественной единицей результата — картинка, секунда видео, символ текста, минута аудио. Сводная таблица — в конце страницы.

Ставка зависит от длины запроса и часа суток

Заголовок раздела «Ставка зависит от длины запроса и часа суток»

Цена в каталоге — базовая, и у части моделей она описывает не всякий запрос. Апстрим меняет ставку двумя способами.

Порог по длине промпта. Как только вход переваливает порог, ставка растёт для всего запроса целиком, а не для «лишних» токенов:

Модели Порог Вход Выход
GPT-5.6 (все) и GPT-6 Astra, включая Pro 272 000 токенов ×2 ×1.5
Grok 4.5, Grok 4.6 200 000 токенов ×2 ×2
Qwen 3.7 Plus 256 000 токенов ×2 ×2

Расписание по UTC. У части хостеров моделей с открытыми весами (DeepSeek, Alibaba) ставка зависит от часа: ночью дешевле, днём дороже. Разница тоже двукратная.

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

Величина /v1/chat/completions /v1/messages /v1/responses
Вход usage.prompt_tokens usage.input_tokens + usage.cache_read_input_tokens usage.input_tokens
Из них из кэша usage.prompt_tokens_details.cached_tokens usage.cache_read_input_tokens usage.input_tokens_details.cached_tokens
Выход usage.completion_tokens usage.output_tokens usage.output_tokens
Всего usage.total_tokens сумма входа и выхода usage.total_tokens
Списание, $ usage.cost usage.cost usage.cost
Списание, ₽ usage.cost_rub usage.cost_rub usage.cost_rub
Источник usage.billing_source usage.billing_source usage.billing_source

Разница протоколов: у OpenAI-форматов (/v1/chat/completions, /v1/responses) поле входа уже включает кэш, у Anthropic-формата (/v1/messages) input_tokens — только некэшированный остаток, а кэш вынесен в отдельное поле. Складывайте поля один раз и по семантике протокола — иначе кэш посчитается дважды.

Пример (/v1/chat/completions; из 3 660 токенов входа 3 644 пришли из кэша):

{
"prompt_tokens": 3660,
"completion_tokens": 120,
"total_tokens": 3780,
"prompt_tokens_details": {"cached_tokens": 3644},
"cost": 0.001834,
"cost_rub": 0.1633,
"billing_source": "balance"
}

В стриминге тот же usage приходит финальным чанком при stream_options: {"include_usage": true} — подробнее в Чат и стриминг.

Сколько списалось за конкретный запрос, приходит прямо в usage — отдельно ходить в /v1/history не нужно:

  • cost — сумма в долларах (число; поле с таким именем уже читают многие клиенты агрегаторов — им ничего менять не нужно);
  • cost_rub — та же сумма в рублях, валюте баланса, с точностью до 0,0001 ₽ (шаг ledger’а);
  • billing_sourcebalance (списано с баланса) или free_quota (запрос ушёл в бесплатную квоту; тогда cost и cost_rub равны 0).

Поля одинаковы во всех протоколах: /v1/chat/completions, /v1/responses, /v1/messages, а в Gemini-формате /v1beta — в usageMetadata как cost, costRub, billingSource. Сумма учитывает кэш и ступени цены — это ровно то, что ушло с баланса.

Размышления модели тарифицируются как выходные токены — по той же цене completion, что и сам ответ. Глубина настраивается параметром reasoning_effort (см. режимы рассуждения): выше усилие — больше выходных токенов в счёте. Отдельной строки «сколько из выхода — размышления» в usage нет: апстрим не отдаёт разбивку, поэтому output_tokens_details.reasoning_tokens в /v1/responses всегда 0.

Токены, прочитанные из кэша контекста, стоят дешевле полного входа и приходят в usage отдельным полем. Как устроено кэширование и где на нём экономия — в Кэшировании контекста.

Если баланса не хватает на весь запрошенный объём ответа, Mixen занижает потолок выходных токенов до длины, которую баланс реально покрывает, и отправляет его модели как max_tokens. Ответ может оборваться — это видно в ответе:

Протокол Признак обрезки
/v1/chat/completions finish_reason: "length"
/v1/messages stop_reason: "max_tokens"
/v1/responses status: "incomplete" и incomplete_details.reason: "max_output_tokens"

Тот же признак приходит, когда потолок задал ваш собственный max_tokens — различить эти случаи по ответу нельзя, сверяйтесь с балансом. Это защита от ухода в минус, а не способ дожать ответ: списание всегда ровно по факту. Если баланса не хватает даже на минимальный ответ, запрос отклоняется до похода к модели — 402 insufficient_quota (Ошибки).

  • Кабинет mixen.ai — баланс и история запросов по всем модальностям. Баланс один для бота, кабинета и API.
  • GET /v1/balance — тот же баланс программно: {"balance_rub": "123.46", "currency": "RUB"} (Ключи и аутентификация).
  • GET /v1/history — журнал движений баланса программно: списания (отрицательные), пополнения, бонусы и реферальные начисления (положительные), новые сверху. Курсор-пагинация: передайте next_cursor ответа как cursor. amount_rub — строка с точностью до 4 знаков, ровно списанное значение.
  • GET /v1/generations?type=image|video|music — история сгенерированных артефактов (бот, кабинет и API — всё вместе): модель, промпт, списание. Байты — GET /v1/generations/{type}/{id}/content.
  • Поле usage в ответе — расход по каждому запросу; в стриминге — финальный чанк с include_usage.
  • 402 insufficient_quota — средств на балансе нет: пополните счёт и повторите (Ошибки).
Модальность Единица Пример из каталога
Текст и поиск ₽ за 1 млн токенов; вход и выход отдельно GLM 5.3 Flash — 8.40 ₽ вход / 27.90 ₽ выход
Кэш контекста ₽ за 1 млн токенов чтения и записи кэша Claude Sonnet 5 — 21.40 ₽ чтение / 267.40 ₽ запись
Изображения ₽ за картинку Nano Banana — 2.67 ₽
Видео ₽ за секунду видео Wan 3.0 — 6.68 ₽/с
Музыка ₽ за запрос Suno — два трека за одну оплату
Веб-поиск (web_search) ₽ за выполненный запрос нативный поиск модели или Exa — Веб-поиск; у Sonar уже входит в цену токенов
Речь TTS — ₽ за 1 000 символов входа; STT — ₽ за минуту аудио цены — в каталоге
Эмбеддинги ₽ за 1 млн входных токенов, выхода нет цены — в каталоге

Единица тарификации каждой модели подписана в pricing.currency_note каталога. Витринные цены обновляются, поэтому перед выставлением счёта клиенту берите свежие значения из GET /v1/models на момент запроса, а не сохранённые.