Токены и списания
Что списывается
Заголовок раздела «Что списывается»Текстовые модели тарифицируются по токенам: вход (системный промпт, история, последнее сообщение) — по цене входа, ответ — по цене выхода. Обе цены заданы в рублях за 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 ответа. Обрезка ответа по балансу ступени учитывает: потолок выходных токенов считается по той ставке, которая применится к вашему запросу, а не по базовой. Действующие ступени конкретной модели показаны на её карточке в каталоге — сноской под ценой и по каждому маршруту в таблице провайдеров.
Структура usage
Заголовок раздела «Структура 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_source—balance(списано с баланса) илиfree_quota(запрос ушёл в бесплатную квоту; тогдаcostиcost_rubравны0).
Поля одинаковы во всех протоколах: /v1/chat/completions, /v1/responses, /v1/messages, а в Gemini-формате /v1beta — в usageMetadata как cost, costRub, billingSource. Сумма учитывает кэш и ступени цены — это ровно то, что ушло с баланса.
Reasoning-токены
Заголовок раздела «Reasoning-токены»Размышления модели тарифицируются как выходные токены — по той же цене 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 на момент запроса, а не сохранённые.