Перейти к содержимому

Биллинг

Базовая модель

Стоимость считается в рублях, балансе ключа. Поток:

  1. Ты делаешь POST /generate — мы оцениваем стоимость и резервируем (hold) её на балансе.
  2. Если баланса не хватает — 402 Payment Required, задача не создаётся.
  3. Если хватает — задача создаётся, баланс уменьшается, в очередь уходит сообщение.
  4. При failed — стоимость возвращается на ключ автоматически.
  5. При completed — стоимость списана окончательно.
balance: 1000₽
│ POST /generate (Veo-3-fast, 8s → 40₽)
balance: 960₽ [hold]
├──── task completes → balance остаётся 960₽
└──── task fails → balance возвращается к 1000₽

Виды биллинга

В зависимости от модели стоимость считается одним из трёх способов:

1. Фиксированная цена за генерацию

Большинство моделей (image, многие video). В прайс-листе для модели указана цена за один запрос — её и резервируем. Цена видна заранее в каталоге.

Пример: Nano-Banana — 5₽ за изображение, всегда.

2. Цена × длительность видео

Применяется к Kling-семейству. В каталоге цена дана за секунду, hold = цена × duration параметр запроса.

Пример: Kling v2.1 Pro — 12₽/сек, запрашиваешь 10-секундный клип → hold 120₽.

Список моделей с per-second биллингом:

  • kling-v2.6, kling-v2.5-standard, kling-v2.5-pro
  • kling-v2.1-standard, kling-v2.1-pro, kling-v2.1-master
  • kling-o1, kling-o1-edit
  • kling-v2.6-motion-720p, kling-v2.6-motion-1080p
  • kling-o3, kling-o3-pro, kling-v3, kling-v3-pro

3. По токенам с post-reconcile (только Seedance)

ByteDance-провайдер биллит Seedance по фактическим completion_tokens, которые становятся известны только после завершения генерации. Поэтому:

  1. При создании задачи мы оцениваем worst-case (максимум по разрешению × длительности × FPS) и резервируем эту сумму.
  2. После завершения провайдер возвращает фактические токены.
  3. Мы пересчитываем реальную стоимость и возвращаем переплату на ключ.

Пример: запрашиваешь Seedance 2.0 на 5 секунд в 1080p с reference-видео. Worst-case = 80₽, hold = 80₽. Фактически получилось 62₽ — возвращаем 18₽ на ключ автоматически.

Персональные цены

Для крупных клиентов админ может назначить персональную цену на конкретные модели — она применяется поверх дефолтной. Кастомные цены видны в профиле клиента в админке.

Если у тебя есть персональная цена — она показывается в result ответа на /me/keys. Через панель panel.nexusapi.dev self-service вариант появится позже.

Что происходит при провале

Когда задача переходит в failed:

  1. Запрос провайдеру не успел, или ответ — ошибка.
  2. Сумма hold’а возвращается на тот же ключ, с которого создавали.
  3. В error — человекочитаемое описание (см. Ошибки).
  4. В метриках nexus_tasks_finished_total{status="failed"} и nexus_refunds_total{reason="task_failed"} отметка о возврате.

То есть за провалы ты не платишь. Это касается всех типов ошибок: и сетевых проблем у провайдера, и rejected-промптов, и моделей, которые отказались генерить из-за safety-фильтра.

Где смотреть свои списания

В panel.nexusapi.dev:

  • Dashboard — суммарно за 30 дней, разбивка по моделям, общая сумма
  • API ключи — баланс каждого ключа, сколько потрачено LTV
  • Запросы (логи) — каждая задача с моделью и стоимостью
  • Биллинг — история транзакций (топ-апы, корректировки админа)