Биллинг
Баланс хранится в рублях, целочисленно. Минимальное списание — 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 посреди пайплайна. Срабатывает в момент попытки списания за генерацию, не чаще одного раза в минуту на пользователя (защита от дублей).
В дашборде → Биллинг → Авто-пополнение:
| Поле | Диапазон |
|---|---|
thresholdRub | ≥ AUTO_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 }или флажок в дашборде.
Дальше
/billingв справочнике — точные схемы платежей.- Коды ошибок — обработка
insufficient_balance,minimum_topup,payment_provider.