Seedance 2.5 API Pricing: Every Provider Compared

If you're evaluating Seedance 2.5 — ByteDance's current flagship video model — the question that actually matters isn't "how much does Seedance cost." It's "how much does Seedance cost at the host you're about to integrate against," because that answer varies by more than 2.5x depending purely on which provider is serving the request. This article lays out every host we track pricing for, at every resolution tier the model supports, pulled from the same live registry VideoRouter uses to route requests — not estimates, not a single vendor's marketing page.

Full pricing table, all three tiers

Provider 480p 720p 1080p
MachGen $0.085/sec $0.190/sec $0.500/sec
TOAPIS $0.0947/sec $0.213/sec $0.527/sec
OpenRouter $0.1028/sec $0.231/sec —
Atlas Cloud $0.1397/sec $0.300/sec $0.591/sec
WaveSpeedAI $0.180/sec $0.360/sec $0.900/sec
Fal $0.2205/sec $0.473/sec $1.164/sec

Seedance 2.5 720p API price by provider, ranging from $0.19/sec at MachGen to $0.473/sec at Fal

At 720p — the tier most teams actually ship on — MachGen is roughly 60% cheaper than Fal for the identical checkpoint. That's not a typo or a promotional rate; it's the steady-state price difference between a reseller that's optimized its GPU cost structure for this specific model and a host pricing it closer to what the model creator's own reference implementation costs to run.

Why the gap is this wide

Seedance 2.5 is ByteDance's model, but ByteDance doesn't operate most of the API endpoints that serve it. Fal, MachGen, Atlas Cloud, WaveSpeedAI, OpenRouter, and TOAPIS are all independent hosts running their own GPU fleets against the same released weights. Each negotiates its own compute costs and sets its own margin. Fal has historically priced close to what you'd expect from a first-party-adjacent host — reliable, well-documented, but not optimized for being the cheapest listing. MachGen and TOAPIS both compete more directly on price, and it shows: MachGen's 480p rate ($0.085/sec) is under 40% of Fal's rate for the same tier ($0.2205/sec).

Atlas Cloud sits in the middle of the table at every tier, which is a pattern worth knowing generally: a host doesn't have to be the cheapest to be worth using — it just needs to be within a reasonable band of the cheapest while offering something else (queue depth, regional latency, a bundled discount on other models you're already calling) that offsets the difference.

What this costs at real volume

Numbers per second are easy to gloss over, so translate them into what a shipping product would actually pay. Say you're generating 2,000 five-second clips a month at 720p — a realistic volume for a small consumer app doing one generation per active user per day.

  • MachGen: 2,000 × 5 × $0.190 = $1,900/month
  • Atlas Cloud: 2,000 × 5 × $0.300 = $3,004.56/month
  • Fal: 2,000 × 5 × $0.473 = $4,730/month

That's a $2,830/month gap between the cheapest and most expensive host in this table, for output that is — model, weights, checkpoint — identical. At 10x that volume, the gap is $28,300/month. This is the actual cost of defaulting to whichever host you happened to integrate against first instead of checking the price table before you ship.

The 1080p jump

Every host's 1080p rate is roughly 2.5-2.6x its 720p rate, which is a steeper multiplier than the resolution increase itself would suggest — 1080p has about 2.25x the pixel count of 720p. That extra overhead is consistent enough across every provider in the table that it's clearly priced in at the model-creator level, not a host-specific markup. If your use case can ship at 720p instead of 1080p, that's a real, immediate saving on top of whichever host you pick — often larger than the saving from switching hosts at a fixed resolution.

How to call it

Seedance 2.5 is served through VideoRouter's unified /v1/videos endpoint — the same request shape used for every video model VideoRouter routes, so switching between Seedance and another model later doesn't mean rewriting your integration:

import time
import requests

resp = requests.post(
    "https://videorouter.sh/api/v1/videos",
    headers={"Authorization": "Bearer llmr_sk_live_...", "Content-Type": "application/json"},
    json={
        "model": "bytedance/seedance-2.5",
        "prompt": "a paper airplane gliding over a city at sunset",
        "resolution": "720p",
        "aspect_ratio": "16:9",
        "duration_secs": 5,
    },
)
job = resp.json()

while job["status"] not in ("completed", "failed"):
    time.sleep(5)
    job = requests.get(
        f"https://videorouter.sh/api/v1/videos/{job['id']}",
        headers={"Authorization": "Bearer llmr_sk_live_..."},
    ).json()

video_url = job["data"][0]["url"] if job["status"] == "completed" else None

No provider field, and the request automatically routes to a healthy deployment weighted toward the cheaper hosts in the table above — see /docs/video-generation and /docs/provider-selection for pinning to a specific host explicitly if you need deterministic routing rather than automatic selection.

Should you always route to the cheapest host?

Not automatically. Price is one input, not the only one. A host at the bottom of this table that's also slow to add capacity during peak hours, or that queues requests longer under load, can cost you more in churned users than it saves in per-second rate. What the table above is useful for isn't "always pick row one" — it's making sure price is actually part of the decision, instead of defaulting silently to whichever host's documentation you happened to read first. That's also the reason a static table like this one is worth less six months from now than it is today: prices move, new hosts enter, and the cheapest row can change without any of the underlying model changing at all. VideoRouter's own Seedance 2.5 model page keeps this exact comparison live, so you're checking current pricing rather than a snapshot.

How automatic routing picks a host

When you call Seedance 2.5 with no provider field, VideoRouter doesn't pick a host uniformly at random from the six in the table above. Deployments are weighted by the inverse square of price — a host charging $0.19/sec is roughly 9x more likely to be selected than one charging $0.57/sec, following the same weighting rule OpenRouter documents for its own model routing. Layered on top of that: a deployment with a significant outage in the last ~30 seconds is deprioritized first, and if a prior request from your session or key already landed on a specific deployment, that one is preferred for the next one too (sticky routing, mainly useful for provider-side prompt-cache hit rate on models that support it). The practical effect is that leaving provider unset already biases your traffic toward MachGen and TOAPIS over Fal, without you having to hardcode that preference — but it's still a bias, not a guarantee, so if you need a specific host every time, pin explicitly rather than relying on the weighting to always land where you want.

A second worked example: enterprise-scale volume

The earlier example used 2,000 clips a month. It's worth also checking the numbers at a scale closer to what a funded video product might actually run — 50,000 five-second clips a month at 720p:

  • MachGen: 50,000 × 5 × $0.190 = $47,500/month
  • Atlas Cloud: 50,000 × 5 × $0.300456 = $75,114/month
  • Fal: 50,000 × 5 × $0.473 = $118,250/month

At this volume, the gap between the cheapest and most expensive host in the table is $70,750/month — a number large enough that verifying which host is actually serving your traffic isn't an optimization, it's closer to a compliance check on your own infrastructure spend. A team running Seedance 2.5 at this scale without ever checking this table is very likely leaving six figures a year on the table.

Frequently asked questions

Does the price include VideoRouter's own fee? Yes — every rate in the table above is the all-in per-second price you're billed, inclusive of routing through VideoRouter rather than the underlying host directly. There's no separate line-item markup to account for on top of these numbers.

Do these prices change often? They can, and the gap between hosts is exactly the kind of thing that narrows or widens as hosts adjust their own rates or new hosts enter the market. This article reflects current, live-registry pricing as of publication — check VideoRouter's Seedance 2.5 page for the current numbers rather than treating this table as permanent.

Why does TOAPIS undercut Fal by more than half at every tier? TOAPIS is a newer reseller in this specific market, and newer entrants competing for volume commonly price aggressively below the incumbent hosts to win integrations — the same dynamic that produced MachGen's consistently low pricing across the models in this series. It's not evidence of a quality difference in the underlying output, since every host serves the identical ByteDance checkpoint.

Is there a free tier or trial for Seedance 2.5? That's a platform-specific policy question, not a pricing-table question — check the specific host's own documentation (or VideoRouter's pricing page) rather than assuming based on the per-second rates above, since trial credit policies change independently of usage pricing.

What happens if my pinned host has an outage mid-request? If you've pinned to a single provider via the trailing model-suffix syntax, a request that fails at that host returns an upstream_error rather than automatically failing over to a second host — pinning trades away that automatic retry. Leaving provider unset keeps automatic failover active across every healthy host in the table. See /docs/model-fallbacks for the full failover behavior.

For the wider Seedance family — including the cheaper 2.0, 2.0 Fast, and 2.0 Mini checkpoints, and when a lower tier is the better call than 2.5 itself — see Where to Get the Cheapest Seedance API.