Стоимость

Публичный расчёт цены и логика списаний (hold → charge → unhold)

Публичный расчёт: POST /v3/billing/calculate

Перед тем как запускать тяжёлую задачу, можно запросить цену.

curl https://api.aiesa.ru/v3/billing/calculate \
  -H "Authorization: Bearer aiesa-<секрет>" \
  -H "Content-Type: application/json" \
  -d '{
        "task": "transcribe_queue",
        "units": 10
      }'

task — тип задачи. Возможные значения:

taskЧто считаемЕдиница units
transcribe_queueАсинхронная транскрипция (очередь)минуты аудио
transcribe_lightningТранскрипция «в приоритете» (sync/поток)минуты аудио
chatГенерация текстатокены: нужны input_units + output_units и model
embeddingsЭмбеддингитокены

Обычные единицы (transcribe_*, embeddings) передаются полем units (целое число). Для чата units не используется — вместо него передаются input_units и output_units (токены на вход и на выход) и model (aiesa-mini или aiesa-pro).

Ответ:

{
  "task": "transcribe_queue",
  "units": 10,
  "unit": "minute",
  "price_per_unit": 0.7,
  "total_cost": 7,
  "currency": "RUB",
  "affordable": true
}

affordable: false означает, что на балансе не хватает средств — задача в таком случае не будет создана, пока вы не пополните баланс.

Как происходит списание

  1. Резерв (hold). При создании задачи мы резервируем на вашем балансе ориентировочную сумму по длине медиа (для транскрипции) или 1 единицу (для потока).
  2. Списание (charge). По факту выполнения списываем точную стоимость: минуты округляются вверх до целых (для транскрипции), для чата и эмбеддингов — по фактическим токенам.
  3. Возврат (unhold). Если задача не выполнилась (упала или была отменена), резерв возвращается на баланс. Если потоковая сессия оборвалась — тоже.

Списание произошло один раз и зафиксировано: повторные доставки события «завершено» не приводят к повторному списанию (идемпотентность по task_id).

На этой странице