Начало/Billing
Правила тарификации
Sozdai ведёт учёт в микроединицах и списывает деньги в два этапа — «заморозка, затем расчёт». Это гарантирует точность списаний и сохранность средств даже при большом числе одновременных запросов.
#1. Единицы учёта (микроединицы)
Чтобы полностью исключить ошибки округления при вычислениях с плавающей точкой, Sozdai хранит все балансы и списания в базе как **BigInt (64-битные целые)** в микроединицах.
- Соотношение: `1 кредит = 1 000 000 микроединиц`.
- Например, `0,0015` кредита хранится как `1 500` микроединиц (0,0015 × 1 000 000).
#2. Схема «заморозка — расчёт»
При любом запросе к API (диалог с моделью или генерация изображения) система выполняет три шага:
- Заморозка: на счёте резервируется предварительная сумма (обычно 0,1 кредита). Если доступного баланса (общий минус замороженный) не хватает, запрос отклоняется с ошибкой `402 Insufficient Balance`.
- Выполнение: запрос маршрутизируется в канал провайдера, система ждёт полного ответа или окончания потока.
- Расчёт: по фактически израсходованным токенам (или числу генераций) вычисляется точная сумма — например 0,002 кредита. Резерв в 0,1 сразу снимается, списывается только фактическая стоимость.
Тарификация при обрыве потока
Даже если вы закроете страницу или отмените запрос в середине потоковой выдачи (SSE), шлюз поймает обрыв и спишет ровно за те токены, которые уже были сгенерированы.
#3. Типы тарификации
В зависимости от модели и эндпоинта Sozdai применяет разные схемы тарификации:
- По токенам: для языковых моделей. Входные, выходные токены, запись и чтение кэша могут стоить по-разному — смотрите страницу конкретной модели.
- За вызов: для изображений, музыки и части видеомоделей. Списывается фиксированная сумма за каждую успешную генерацию.
- За секунду: для видеомоделей, где цена зависит от длительности результата.
#4. Сбои и возвраты
Sozdai отвечает за каждый ваш кредит:
- Если запрос не прошёл не по вашей вине — ошибка провайдера, таймаут, срабатывание модерации — **замороженная сумма возвращается полностью, списание равно нулю**.
- Для асинхронных медиазадач деньги списываются только при статусе `succeeded`. Если задача завершилась как `failed`, резерв автоматически снимается и возвращается в доступный баланс.