Обновление содержания: 2026-06-23
Seedance 2.0 Правила тарификации
В данной статье описана только реальная логика расчётов в текущем коде Crazyrouter, а не абстрактное объяснение официальной ценовой страницы. Применяемые модели:doubao-seedance-2-0doubao-seedance-2-0-fast
https://api.crazyrouter.com, базовые настройки см. API Endpoint.
Сначала выводы
Seedance 2.0иSeedance 2.0 Fastв локальном коде рассчитываются какper_output_token, а не по секундам.- При отправке задачи для этих двух типов задач вычет по умолчанию равен 0.
- После успешного выполнения задачи система дополнительно вычитает оплату в зависимости от возвращённого upstream
TotalTokensилиCompletionTokens. durationбудет записан как характеристика задачи, но не участвует в окончательной формуле расчёта Seedance 2.0.- Поэтому в коде не существует фиксированной “сколько token = сколько секунд” глобальной формулы преобразования.
- Если нужно ответить “примерно сколько стоит секунда”, смотреть можно только на
实际输出 tokens / 实际秒数после завершения задачи, но его нельзя считать фиксированным правилом тарификации.
Правила тарификации в локальном коде
1. Какая тарификация применяется
Правила тарификации Seedance 2.0 определяются наличием видео-входа:
Здесь
video0 / video1 – это не секунды, а:
video0: В запросе отсутствует видео-входvideo1: В запросе присутствует видео-вход
model/video_billing_seedance.gorelay/video_billing_runtime.go
2. Почему при отправке задачи обычно не происходит вычитание
Во время выполнения Seedance 2.0 применяется платформенная тарификацияper_output_token. В таких задачах при отправке:
- Записывается
BasePrice Ratioустанавливается как0- Поэтому на этапе отправки результат
quota = int(ratio * QuotaPerUnit)всегда0
relay/video_billing_runtime.gorelay/relay_task.go
- задача успешно отправляется
- сразу не вычитается; предварительный вычет – 0
- окончательный вычет делается после завершения задачи и исходя из действительного количества token
Окончательная формула тарификации
После успешного выполнения задачи система в первую очередь используетsettlePerOutputTokenTaskBilling.
Для серии Seedance при выборе token код использует приоритет:
taskResult.TotalTokens- если выше отсутствует, то
taskResult.CompletionTokens
controller/task_video.go
controller/task_video.gocommon/constants.go
Какую роль секунды играют в коде
1. duration будет распознан и записан
Код анализирует секунды из следующих мест:
req.Durationreq.Secondsmetadata.durationSecondsmetadata.duration_secondsmetadata.durationmetadata.seconds
relay/video_billing_runtime.go
2. Но Seedance 2.0 не рассчитывает по секундам
Хотяduration попадёт в характеристики и лог задачи, режим Seedance 2.0 / 2.0 Fast – это per_output_token, соответственно:
match.BilledSecondsне участвует в расчёте- окончательный вычет зависит только от возвращённых upstream token
per_second.
Как сопоставить token и секунды
Тарификация
Нельзя напрямую переводить. То есть, в текущем коде нет такого правила:- Цена Seedance 2.0 не завязана на
per_second - Код тоже не отображает
durationв фиксированные token диапазоны - Итоговое значение определяется только фактическим расходом token после завершения задачи
Аналитика
Если просто хотите провести “ретроспективу, сколько token потреблено в среднем за секунду”, то после завершения задачи можно посчитать наблюдаемое значение:Реальный пример: простое видео 4 секунды, 720p
Ниже пример фактического вызова Seedance 2.0, чтобы показать, как на основе настоящегоusage обратным образом получить “сколько стоило каждую секунду задачи”.
Пример 1: самый простой текст-видео
Характеристики запроса:- Модель:
doubao-seedance-2-0 - Вход: только текст, без изображения или видео
- Разрешение:
720p - Длительность:
4s - ID задачи:
cgt-20260617212928-5s755 - Upstream фактически вернул:
completion_tokens = 87300,total_tokens = 87300
4s 720p текст-видео показывает наблюдаемую цену за секунду:
Пример 2: генерация видео по референсу предыдущего видео
Характеристики запроса:- Модель:
doubao-seedance-2-0 - Вход: текст + видео от предыдущей задачи, как
reference_video - Разрешение:
720p - Длительность:
4s - ID задачи:
cgt-20260617214300-rsnsx - Upstream фактически вернул:
completion_tokens = 173700,total_tokens = 173700
4s 720p видео с референсом наблюдаемая цена за секунду:
Как объяснить это значение клиенту
Можно пояснить так:usage.total_tokens либо usage.completion_tokens по факту завершения задачи.
Два шаблона для применения
Пример 1: doubao-seedance-2-0-fast, с видео-входом
Предположим:
- Применяется
doubao-seedance-2-0-fast:video1 - Upstream возвращает
TotalTokens = 1,200,000 quantityMultiplier = 1groupRatio = 1discount = 1
duration = 12, вы сможете получить только наблюдаемое значение:
100,000 tokens/s будет справедлив только для данной задачи.
Пример 2: doubao-seedance-2-0, без видео-входа
Предположим:
- Применяется
doubao-seedance-2-0:video0 - Upstream возвращает
CompletionTokens = 800,000 quantityMultiplier = 1groupRatio = 1discount = 1
duration = 8, возможен лишь просмотр значения:
Какие поля стоит анализировать
Для проверки тарификации Seedance 2.0 прежде всего смотрите:- Есть ли видео-вход в запросе
- Применённый
billing_key - Token или quota, возвращённые upstream после завершения задачи:
TotalTokens/CompletionTokens groupRatioдля данной задачи- Скидка модели
discount - Итоговая
task.Quota
billing_modebilling_keybilling_total_pricebilling_output_tokensbilling_billed_tokensbilling_token_kindbilling_settled
relay/relay_task.gomodel/task.gocontroller/task_video.go
Одно фразовое понимание
Для Seedance 2.0:秒数– характеристика запросаtoken– основание для расчётаquota– это квота внутри платформы, рассчитанная после завершения расчетовtoken
Если в дальнейшем платформа специально введёт SKU с оплатой по секундам для Seedance 2.0, появится стабильное отображение “секунды в цену”. Но на 2026-06-06 локальный код этого ещё не реализует.