How resolution changes what a video API costs
Updated 2026-10-02
Ask for the price of a video API and you will usually get one per-second number. That number belongs to a specific resolution tier, often the lowest one. Resolution is one of the two main drivers of cost (the other is duration), and the way it works is less uniform than most rate cards suggest.
Why resolution costs more
Higher resolution means more pixels to generate per frame, and typically more compute and more time per second of video. Providers pass that through as a higher per-second rate for higher tiers. The details of how they price are theirs, and we cannot see their cost structure. What you can observe is the pattern in the published rates, and that is what matters for planning.
The formula is simple:
job_cost = requested_seconds * rate(model, host, tier) * (1 + platform_fee)
On VideoRouter the fee is a flat 2% for image and video, the cost is charged once at creation from the requested duration, and polling is free. The pricing explainer covers that billing flow. This page focuses on the tier argument.
The live numbers
The table shows, for each model, the tier that is being compared, the cheapest and priciest host, and the percentage gap. Read the tier column first.
| Model | Cheapest host | Priciest host | Cheapest is | Hosts |
|---|---|---|---|---|
| bytedance/seedance-2.5 (480p) | OpenSand $0.0525 / second | Fal-US $0.2646 / second | 80% lower | 9 |
| bytedance/seedance-2.0 (2160p) | MachGen $0.59 / second | Fal $1.5552 / second | 62% lower | 9 |
| alibaba/wan-3.0 (480p) | Replicate $0.025 / second | Alibaba $0.05 / second | 50% lower | 10 |
| google/gemini-omni-flash | Google $0.1 / second | Fal $0.13 / second | 23% lower | 4 |
| minimax/h3 (768p) | MachGen $0.04 / second | WaveSpeedAI-resell $0.1 / second | 60% lower | 14 |
| alibaba/happyhorse-1.1 (720p) | Pika $0.098 / second | Alibaba $0.14 / second | 30% lower | 4 |
| bytedance/seedance-2.0-fast (480p) | Atlas Cloud $0.027 / second | Fal $0.2419 / second | 89% lower | 9 |
| bytedance/seedance-2.0-mini (480p) | OpenSand $0.0104 / second | Fal $0.0721 / second | 86% lower | 8 |
| seedance-2-mini-unrestricted (480p) | OpenSand $0.0114 / second | SandBase $0.0721 / second | 84% lower | 3 |
| kling-o3 (720p) | SandBase $0.0588 / second | Tencent TokenHub $0.084 / second | 30% lower | 4 |
| minimax/h3-max (480p) | SandBase $0.01 / second | MiniMax $0.05 / second | 80% lower | 5 |
| kling-v3 (2160p) | SandBase $0.294 / second | Tencent TokenHub $0.42 / second | 30% lower | 8 |
Per second, before VideoRouter's 2% platform fee. For tiered models each row compares the resolution tier with the widest host-to-host gap. Built 2026-10-02 from the live catalog.
Per-second, per-tier mechanics
- Each tier has its own rate. 480p, 720p, 1080p, 1440p and 2160p are different line items on the same model page.
- Tiers are not uniformly offered. A host may list only some tiers. A dash in the grid means it does not offer that tier, which also means it is not a failover target for that tier.
- Labels can hide variants. Tier names such as
1080p-esrdenote enhanced-super-resolution variants that a host prices separately from the plain tier of the same number. - Not every model is per-second. The docs call out models that bill a flat amount per clip or per request regardless of requested duration. For those, the tier-by-seconds model does not apply.
- Some options change the price too. Whether a model renders audio, or which input mode you use, can move the rate on certain hosts. The model page states the basis.
Why host rankings change between tiers
If you choose a host from the lowest-tier column and then ship a higher tier, you may be on the wrong host. Three reasons the ranking reorders:
- Hosts price each tier independently, so a discount at one tier does not carry over.
- Coverage varies. At a tier offered by few hosts, the range is narrow and the cheapest host may be a different one.
- Rates do not scale by a fixed multiple from tier to tier.
So always read the column for the tier you will ship. The pricing page and each model's own page show the whole grid, and unpinned requests choose the cheapest healthy host for the request automatically.
Comparing across tiers fairly
To compare a model at two tiers, hold everything else fixed: same model, same host if you can, same duration. Then compute cost per clip at each tier and divide by the value you get. A practical way to think about it:
| Question | How to answer |
|---|---|
| Do I need this tier at all? | Find the largest display size the clip appears at. Delivering more pixels than the surface can show is waste. |
| Can I draft lower? | Yes in most workflows. Judge motion at a low tier, render approved shots at the delivery tier. |
| Is upscaling cheaper than native? | Compare the native higher tier to a lower tier plus a separate upscale step, using the live prices for both, and check that the result meets your acceptance bar. |
| Does the tier I asked for match what I got? | Check the returned file. An unsupported resolution is ignored and the default is used, with no error. |
What this means for a buyer
Three habits follow from all of this. First, always quote a price with its tier attached, for example in your internal docs and vendor comparisons, because a bare per-second number is ambiguous. Second, include the tier in the cache key and the cost log of your application, so spend reports can be sliced by tier. Third, treat a tier change as a pricing event: it may also move you to a different cheapest host, so re-run the comparison instead of editing one constant.
A tier-aware budget
If part of your volume is draft and part is final, budget them as separate lines with their own tier and rate, instead of averaging:
total = (draft_clips * draft_seconds * rate_draft_tier * attempts_draft
+ final_clips * final_seconds * rate_final_tier * attempts_final) * (1 + fee)
The retry multipliers differ by stage, and drafts at a low tier have a much lower cost per attempt, which is why exploration is cheap there. The budget estimation guide walks through the full method.
Checking the tier you got
Because a mismatch is silent, add a cheap assertion to your pipeline: after each job completes, read the video's dimensions and log them next to the requested tier. If they differ, you will see it in your logs before you see it on your invoice. See the quickstart for the request fields, and live clip costs on the cost page. A key takes a minute at videorouter.sh/signup.
Frequently asked questions
Why does higher resolution cost more per second?
Higher tiers generally need more compute per frame, and providers price each tier with its own per-second rate. The exact cost basis is each host's own.
Is the cheapest host the same at every resolution?
Not necessarily. Hosts price tiers independently and offer different tiers, so rankings can change. Read the column for the tier you will ship.
Do all video models bill per second?
No. The docs mention models that bill a flat amount per clip regardless of duration, so check the unit on the model page.
What happens if I request an unsupported resolution?
The request is not rejected. The unsupported value is ignored and the model's default resolution is used, so verify the output dimensions.
Keep reading
- How AI Video API Pricing Works — Per-Second, Per-Tier, Per-Host
- Cheapest Video Generation API: How to Find It for Your Workload
- How to Estimate Your AI Video API Budget, Step by Step
- AI Video Generation Cost Per Minute: How to Calculate It
VideoRouter puts it next to dozens of other video and image models behind one API key, so you can compare providers, prices and fail over automatically. Compare providers on VideoRouter →