Документация / Использование
Стоимость
Как резервируется и списывается оплата запроса, что значат usage.cost и cost_status и почему суммы могут расходиться.
Резерв и списание
- До отправки модели шлюз резервирует наибольшую возможную стоимость запроса — по ценам модели, пределу вывода, вложениям и инструментам. Не хватает баланса на резерв — ответ 402, модель запрос не получает.
- После ответа списывается фактическая стоимость: закупка у провайдера, пересчитанная в рубли по курсу с наценкой. Остаток резерва возвращается на баланс.
- Если стоимость нельзя ограничить заранее, запрос отклоняется с кодом 400 и ничего не списывается.
usage.cost и cost_status
usage.cost — фактически списанная сумма в рублях с пятью знаками после точки (тысячные доли копейки), без округления до копейки. Закупка провайдера (cost_details) в ответ не передаётся.
finalСписано по фактической закупке провайдера.estimatedПровайдер стоимость не сообщил — списано по нашей таблице цен модели.pendingСтоимость дозапрашивается у провайдера; cost — null, списание пройдёт позже, его видно в кабинете.reviewСписание на проверке у оператора; cost — null.
null в usage.cost — допустимое значение: типизируйте поле как число или null.
Почему суммы могут расходиться
Сумма usage.cost по запросам с usage равна сумме их списаний. С балансом и выпиской она расходится по девяти причинам:
- Резервы запросов в работе уже вычтены из доступного баланса.
- Запись списания в журнал идёт с задержкой в секунды после ответа.
- Синтез речи и видео списываются фоновым сборщиком и usage в ответе не отдают.
- Поштучные модели (за генерацию) списывают весь резерв, а не сумму, названную провайдером.
- Когда провайдер не сообщил стоимость, списание идёт по нашей таблице цен (cost_status: estimated).
- Минимальное списание — одна тысячная копейки: на потоке очень дешёвых запросов это даёт систематический перебор.
- Округления на трёх участках (курс, наценка, перевод в рубли) идут в разные стороны.
- Баланс в кабинете показывается с округлением вниз до копейки.
- Сверка и прогрев балансов переписывают рабочую копию баланса из журнала.