Skip to Content
Биллинг

Биллинг

Баланс хранится в рублях, целочисленно. Минимальное списание — 1 ₽: если фактическая стоимость генерации меньше (например 0.05 ₽ за megapixel), всё равно списывается 1 ₽. Цены в каталоге (priceRub) — decimal и могут быть меньше рубля; ceil до 1 ₽ происходит на этапе биллинга.

Как тратится баланс

  • Списание происходит атомарно при POST /run или POST /queue/{modelId} — на сумму creditCost модели (integer, ≥ 1 ₽). Если на балансе меньше — приходит 402 insufficient_balance, генерация не запускается.
  • Возврат — автоматически при ошибке генерации, той же суммой.
  • Сверка по факту — для моделей с динамической ценой (per-second video, per-megapixel image) точное списание уточняется после генерации; разница возвращается отдельной транзакцией.

Все движения видны в GET /me/transactions. Тип каждой записи — один из topup, deduct, refund, grant.

Проверить баланс

curl https://api.neuroartist.ru/me/balance \ -H "Authorization: Bearer na_live_xxxxxxxxxxxxxxxx" # {"userId":"u_…","balance":248}

balance — текущий остаток в рублях.

Оценка стоимости перед запуском

curl -X POST https://api.neuroartist.ru/models/flux/dev/estimate \ -H "Authorization: Bearer na_live_xxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{"prompt":"…","num_inference_steps":28}'
{ "modelId": "flux/dev", "modelAlias": "flux/dev", "estimatedCostRub": 8, "estimatedPriceRub": 8.0, "priceUnit": "image", "quantity": 1, "currency": "RUB" }
ПолеЧто
estimatedCostRubСколько спишется при submit. Integer, минимум 1 ₽.
estimatedPriceRubТочная decimal-стоимость. Может быть < 1 ₽ (например 0.05 за megapixel).
priceUnitЕдиница измерения цены — image, second, megapixel, request, 1k_chars.
quantityСколько единиц получится при текущем input-е.

Пополнение

Делается в дашборде gateway.neuroartist.ruБиллинг → Пополнить.

  • Минимальная сумма — 500 ₽ (MIN_TOPUP_RUB). Меньше нельзя.
  • Оплата через YooKassa, чек 54-ФЗ формируется автоматически.
  • После успешной оплаты карта сохраняется (payment_method_id от YooKassa, с маской PAN) — чтобы не вводить реквизиты повторно и для авто-пополнения.

Авто-пополнение

Когда баланс падает ниже заданного порога, мы автоматически списываем фиксированную сумму с сохранённой карты — чтобы вы не получили 402 insufficient_balance посреди пайплайна. Срабатывает в момент попытки списания за генерацию, не чаще одного раза в минуту на пользователя (защита от дублей).

В дашборде → Биллинг → Авто-пополнение:

ПолеДиапазон
thresholdRubAUTO_TOPUP_MIN_THRESHOLD_RUB (10 ₽)
amountRubот AUTO_TOPUP_MIN_AMOUNT_RUB (50 ₽) до AUTO_TOPUP_MAX_AMOUNT_RUB (10 000 ₽)
Default-картаОбязательно. Без неё авто-пополнение не сработает.

Если списание не прошло (карта отклонена, нет default-метода) — обычная ошибка 402 insufficient_balance на текущем submit + email-уведомление.

История платежей

curl https://api.neuroartist.ru/billing/payments \ -H "Authorization: Bearer na_live_xxxxxxxxxxxxxxxx"

Возвращает список с id, yookassaId, status, creditsToGrant (сумма в ₽), amountKopecks, currency, createdAt.

Чеки 54-ФЗ и PDF-выписки — в дашборде → Биллинг → История.

Welcome-бонус и уведомление о низком балансе

  • Welcome-бонус — 50 ₽ при регистрации (WELCOME_BONUS_RUB).
  • При просадке ниже 100 ₽ (LOW_BALANCE_THRESHOLD_RUB) — email-уведомление, не чаще раза в 24 часа. Отписаться: PATCH /me { "lowBalanceEmailOptOut": true } или флажок в дашборде.

Дальше