Стоимость
Публичный расчёт цены и логика списаний (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означает, что на балансе не хватает средств — задача в таком случае не будет создана, пока вы не пополните баланс.
Как происходит списание
- Резерв (hold). При создании задачи мы резервируем на вашем балансе ориентировочную сумму по длине медиа (для транскрипции) или 1 единицу (для потока).
- Списание (charge). По факту выполнения списываем точную стоимость: минуты округляются вверх до целых (для транскрипции), для чата и эмбеддингов — по фактическим токенам.
- Возврат (unhold). Если задача не выполнилась (упала или была отменена), резерв возвращается на баланс. Если потоковая сессия оборвалась — тоже.
Списание произошло один раз и зафиксировано: повторные доставки события
«завершено» не приводят к повторному списанию (идемпотентность по task_id).