Content updated: 2026-06-23
Seedance 2.0 Billing Instructions
This document only explains the actual settlement logic in the current Crazyrouter code; it is not a general explanation of the official pricing page. Applicable models:doubao-seedance-2-0doubao-seedance-2-0-fast
https://api.crazyrouter.com uniformly as the integration address. For basic settings, refer to API Endpoint.
Let’s start with the conclusion
Seedance 2.0andSeedance 2.0 Fastare both settled asper_output_tokenaccording to the local code, not by seconds.- When submitting a task, the default pre-deduction for these two types of tasks is 0.
- After the task is successful, the system will deduct the final amount based on the
TotalTokensorCompletionTokensreturned by the upstream. durationwill be recorded as a task feature, but will not be involved in the final Seedance 2.0 billing formula.- Therefore, there is no fixed global conversion formula of “how many tokens = how many seconds” in the code.
- If you need to answer “about how much per second”, you can only use
实际输出 tokens / 实际秒数as an observation metric after the task is completed, but you cannot treat it as a fixed billing rule.
Billing rules in the local code
1. Which billing rule is triggered
The billing rules for the Seedance 2.0 series are determined by “whether video input is included”:
The
video0 / video1 here are not seconds, but:
video0: No video reference input in the requestvideo1: Video reference input included in the request
model/video_billing_seedance.gorelay/video_billing_runtime.go
2. Why is there usually no charge when submitting tasks
At runtime, the billing mode for Seedance 2.0 triggered on the platform isper_output_token. For this type of task, upon submission:
BasePricewill be recordedRatiowill be set to0- Therefore, at the submission stage, the
quota = int(ratio * QuotaPerUnit)result is0
relay/video_billing_runtime.gorelay/relay_task.go
- Task submitted successfully
- No deduction at first, or pre-deduction is 0
- Actual token deduction is made after task completion
Final billing formula
After the task is successful, the system first usessettlePerOutputTokenTaskBilling.
For the Seedance series, the code retrieves tokens in the following priority:
taskResult.TotalTokens- If the above is not available, use
taskResult.CompletionTokens
controller/task_video.go
controller/task_video.gocommon/constants.go
What role do seconds play in the code
1. duration will be identified and recorded
The code will parse seconds from these locations:
req.Durationreq.Secondsmetadata.durationSecondsmetadata.duration_secondsmetadata.durationmetadata.seconds
relay/video_billing_runtime.go
2. But Seedance 2.0 is not settled by the second
Althoughduration will enter the task profile and logs, the mode triggered for Seedance 2.0 / 2.0 Fast is per_output_token, so:
match.BilledSecondswill not participate in settlement- The final deduction only considers the upstream returned tokens
per_second video models.
How do tokens correspond to seconds
Billing perspective
You cannot convert directly. That is, there is no such rule in the current code:- Pricing configuration for Seedance 2.0 is not
per_second - The code does not map
durationto a fixed token level either - Only the actual token usage after the task is completed is recognized
Observation perspective
If you just want to do a “review of how many tokens were consumed per second for this task on average”, you can get an observed value after the task is completed:Actual case: 4-second simple 720p video
Below is the result of a real invocation of Seedance 2.0, to show how to deduce “the average cost per second for this task” from the actualusage.
Case 1: The simplest text-to-video
Request features:- Model:
doubao-seedance-2-0 - Input: only text, no image or video reference
- Resolution:
720p - Duration:
4s - Task ID:
cgt-20260617212928-5s755 - Upstream actual returns:
completion_tokens = 87300,total_tokens = 87300
4s 720p text-to-video, the observed unit price is approximately:
Case 2: Generate reference video based on previous video
Request features:- Model:
doubao-seedance-2-0 - Input: text + video generated from last task as
reference_video - Resolution:
720p - Duration:
4s - Task ID:
cgt-20260617214300-rsnsx - Upstream actual returns:
completion_tokens = 173700,total_tokens = 173700
4s 720p reference video generation, the observed unit price is approximately:
How can you explain this measured value to customers
You can explain it like this:usage.total_tokens or usage.completion_tokens of the real task.
Two directly applicable examples
Example 1: doubao-seedance-2-0-fast, with video input
Assume:
- Matches
doubao-seedance-2-0-fast:video1 - Upstream returns
TotalTokens = 1,200,000 quantityMultiplier = 1groupRatio = 1discount = 1
duration = 12 of this request, you can only get an observed value:
100,000 tokens/s only applies to this task.
Example 2: doubao-seedance-2-0, without video input
Assume:
- Matches
doubao-seedance-2-0:video0 - Upstream returns
CompletionTokens = 800,000 quantityMultiplier = 1groupRatio = 1discount = 1
duration = 8 is filled in during the request, you can only make an observation:
Which fields are worth checking
If you want to troubleshoot a Seedance 2.0 fee, prioritize checking the following information:- Whether the request includes a video input
- The matched
billing_key - The upstream returned
TotalTokens/CompletionTokensafter the task is complete - The
groupRatioof that task - The discount
discountfor that model - The final
task.Quota
billing_modebilling_keybilling_total_pricebilling_output_tokensbilling_billed_tokensbilling_token_kindbilling_settled
relay/relay_task.gomodel/task.gocontroller/task_video.go
One-sentence understanding
For Seedance 2.0:秒数is a request featuretokenis the basis for settlementquotais the internal quota converted aftertokensettlement
If the platform adds a per-second sales SKU specifically for Seedance 2.0 later, only then will there be a stable mapping from seconds to price. But as of 2026-06-06, this has not been implemented in the local code.