DEV Community

develpmilk
develpmilk

Posted on

Seedance 2.5 API Cost: Model ID, Usage, and a Safe Test Harness

BytePlus lists Seedance 2.5 as dreamina-seedance-2-5-260628. Its published five-second, 16:9 examples cost $0.514 at 480p and $1.156 at 720p without video input. The model is worth controlled testing, but an application should verify account, region, endpoint, parameters, and returned usage before treating it as a production dependency.

The official numbers

Item Published value
Model ID dreamina-seedance-2-5-260628
Rate without video input $10.70 / 1M tokens
Rate with video input $6.40 / 1M tokens
5s 480p, no video input $0.514
5s 720p, no video input $1.156

Video-input requests use a lower token rate, but input duration increases token consumption. For a five-second output, BytePlus lists $0.553-$2.152 at 480p and $1.244-$4.838 at 720p as input-video duration grows from the low range to 30 seconds.

These are official examples, not a universal per-second quote. Final usage should come from the response field documented by BytePlus: usage.completion_tokens.

Why I am not including a fake API call

ByteDance's launch material describes up to 30-second audio-video generation, references, extensions, and editing. The exact API contract and account rollout still need to be checked in the target project. Copying a Seedance 2.0 payload and changing only the model ID is not a safe migration strategy.

The following harness is provider-neutral. It lets a team calculate a planning budget and log acceptance economics before wiring an endpoint.

A runnable cost-per-accepted-clip calculator

from dataclasses import dataclass
from decimal import Decimal


@dataclass(frozen=True)
class Scenario:
    resolution: str
    price_per_successful_clip: Decimal
    acceptance_rate: Decimal
    review_cost_per_accepted_clip: Decimal = Decimal("0")

    def validate(self) -> None:
        if not (Decimal("0") < self.acceptance_rate <= Decimal("1")):
            raise ValueError("acceptance_rate must be greater than 0 and at most 1")
        if self.price_per_successful_clip < 0:
            raise ValueError("price_per_successful_clip cannot be negative")
        if self.review_cost_per_accepted_clip < 0:
            raise ValueError("review cost cannot be negative")

    def generation_cost_per_accepted(self) -> Decimal:
        self.validate()
        return self.price_per_successful_clip / self.acceptance_rate

    def total_cost_per_accepted(self) -> Decimal:
        return self.generation_cost_per_accepted() + self.review_cost_per_accepted_clip


def main() -> None:
    examples = [
        Scenario("480p", Decimal("0.514"), Decimal("0.70"), Decimal("0.30")),
        Scenario("720p", Decimal("1.156"), Decimal("0.70"), Decimal("0.30")),
    ]
    for item in examples:
        print(
            item.resolution,
            "generation/accepted=",
            item.generation_cost_per_accepted().quantize(Decimal("0.01")),
            "total/accepted=",
            item.total_cost_per_accepted().quantize(Decimal("0.01")),
        )


if __name__ == "__main__":
    main()
Enter fullscreen mode Exit fullscreen mode

The 70% acceptance rate and $0.30 review cost are examples. Replace them with measured values. The script deliberately does not pretend that a creative rejection is a provider failure: a successfully generated but unusable clip is still part of the production cost.

What to log when the endpoint is enabled

Use one record per generation:

{
  "run_id": "eval-001",
  "model": "dreamina-seedance-2-5-260628",
  "resolution": "720p",
  "input_video_seconds": 0,
  "output_video_seconds": 5,
  "completion_tokens": 0,
  "terminal_state": "succeeded",
  "review_result": "accepted",
  "charged_usd": 0
}
Enter fullscreen mode Exit fullscreen mode

The zero values are placeholders for your provider response. Keep model usage, charge, terminal state, and creative review separate so a dashboard can distinguish moderation failures, infrastructure failures, and quality rejection.

A safe evaluation order

  1. Probe the model ID in the intended account and region.
  2. Reproduce the 480p and 720p five-second examples.
  3. Add a short reference video, then a long reference video.
  4. Test complex motion and multiple interacting subjects.
  5. Measure accepted clips, revision time, queue time, and returned usage.
  6. Canary only after a tested fallback is available.

CometAPI can be useful as one operational layer when a team is comparing several video routes, but its current Seedance 2.5 catalog availability must be checked at publish time. A gateway does not remove provider-specific parameter or billing differences.

Top comments (0)