Home › Guides › Hidden costs

What a video API's per-second price leaves out

Updated 2026-10-02

A per-second rate is the number on the pricing page. It is not the number on your invoice. The difference comes from a set of costs that sit outside the rate card, and most of them are controllable once you know they exist. This page lists them in rough order of how often they hurt, with VideoRouter's documented behaviour where there is a specific fact, and generic guidance where the answer depends on the provider you use.

1. Takes you pay for and discard

You are billed for every generation that succeeds, including the ones a reviewer rejects. If you need R generations per accepted clip, your effective rate is R times the quoted one. This is usually the largest hidden multiplier, and list prices cannot tell you its value because it depends on your prompts. Measure it on a pilot, and lower it with prompt work and a draft stage on a cheaper tier, not by hunting for a cheaper host.

2. Failed jobs, and how a provider treats them

Whether a failed generation is billed is a policy question that varies by provider, so check it before you compare rates. On VideoRouter, a job that fails upstream is not billed, and an upstream_error at creation (every candidate host failed) is not billed either. The nuance is that "failed" and "bad" are different: a clip that completes with an artifact is a billed success, and only your review process can catch it.

3. Duplicate jobs from your own retry logic

Creation is the billed step. If your request times out after the server created the job, the naive reaction is to retry, and now two jobs are running. The documented video request fields do not include an idempotency key, so the protection has to live in your layer: record a client-side id per user action, store the returned job id immediately, and only retry creation on responses that guarantee no job exists (429 and 5xx errors at creation). Never resubmit a job that is merely slow. It is still running and still billed.

4. Timeout hedging bills both attempts

VideoRouter offers an opt-in failover.on_timeout_sec that resubmits a stalled job to the next-cheapest host without cancelling the original. Both attempts are billed if both finish. That is a deliberate trade, paying for a second chance at finishing sooner, and it is a hidden cost only if it is enabled by default in your client library or copied from an example. Keep it for deadline-bound work.

5. Tier upsell inside the same model

Resolution tiers can differ in price by large factors, and a request that asks for a size the model does not support may be silently replaced by the default. Ask for the tier you can actually use in the product, and check the output dimensions, so you neither overpay for pixels nobody sees nor believe you got a tier you did not. See the resolution guide.

6. Fees on top of the rate

Gateways and resellers differ in how they charge: a percentage on top, a spread inside the rate, a monthly seat fee. VideoRouter's documented fee is a flat 2% on image and video, itemized separately from the host price. When comparing, make sure each quote states whether the fee is already included and what else is added, such as card-processing charges on deposits. VideoRouter itemizes a disclosed card-processing fee on top-ups as a pass-through of the processor's real cost.

7. Minimum deposits, prepaid balances and idle money

VideoRouter works on prepaid credits with a minimum deposit, and a balance at or below zero returns a 402 on live keys. That is simple to budget but it means money sits in the balance before it is used. Auto-reload can top up automatically within a daily cap you set. Compare providers on minimum spend, credit expiry and refund terms, not only the rate, especially at low volume where a minimum can dominate the effective price.

8. Storage, egress and your own pipeline

The generation fee ends when the job completes. You then need to download the file, store it, and serve it, and those costs are yours. Returned URLs should not be treated as permanent, so copy results into your own storage promptly. Add the bandwidth of serving them to users, thumbnails or transcodes you generate, and the time engineers spend on queues and retries. None of this appears on the API invoice, and all of it scales with clip count.

9. Spend you did not intend

A bug in a loop is a cost item too. Set monthly_spend_cap_usd on each key. When it is reached, further requests return a 402 with spend_cap_exceeded, so a runaway job becomes an error. Use separate keys for production, experiments and batch runs so one cannot consume another's allowance.

A checklist you can run before committing

QuestionWhere the answer lives
Are failed jobs billed?The provider's billing docs; confirm with a deliberate failure.
Does the quoted price include the fee?The pricing page; compare against an invoice line.
What is the minimum top-up and do credits expire?The billing docs.
Is there an idempotency key?The request reference.
How long do output URLs last?Test it, then plan your storage.
ModelCheapest hostPriciest hostCheapest isHosts
bytedance/seedance-2.5 (480p)OpenSand
$0.0525 / second
Fal-US
$0.2646 / second
80% lower9
bytedance/seedance-2.0 (2160p)MachGen
$0.59 / second
Fal
$1.5552 / second
62% lower9
alibaba/wan-3.0 (480p)Replicate
$0.025 / second
Alibaba
$0.05 / second
50% lower10
google/gemini-omni-flashGoogle
$0.1 / second
Fal
$0.13 / second
23% lower4
minimax/h3 (768p)MachGen
$0.04 / second
WaveSpeedAI-resell
$0.1 / second
60% lower14
alibaba/happyhorse-1.1 (720p)Pika
$0.098 / second
Alibaba
$0.14 / second
30% lower4
bytedance/seedance-2.0-fast (480p)Atlas Cloud
$0.027 / second
Fal
$0.2419 / second
89% lower9
bytedance/seedance-2.0-mini (480p)OpenSand
$0.0104 / second
Fal
$0.0721 / second
86% lower8
seedance-2-mini-unrestricted (480p)OpenSand
$0.0114 / second
SandBase
$0.0721 / second
84% lower3
kling-o3 (720p)SandBase
$0.0588 / second
Tencent TokenHub
$0.084 / second
30% lower4
minimax/h3-max (480p)SandBase
$0.01 / second
MiniMax
$0.05 / second
80% lower5
kling-v3 (2160p)SandBase
$0.294 / second
Tencent TokenHub
$0.42 / second
30% lower8

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.

The live table shows the rate side; everything above is the multiplier on it. To put numbers on the multipliers, use the budget method and the cost-per-minute formula, then run the figures through the calculator and cost tables. See also how to find the cheapest host, and videorouter.sh/signup to run a pilot.

Frequently asked questions

Are failed video generations billed?

It depends on the provider. On VideoRouter, jobs that fail upstream are not billed, and neither is an upstream_error at creation. A clip that completes with visual defects is still a billed success.

How can I avoid paying twice for one video?

Never resubmit a job that is merely slow, store the job id as soon as creation returns, and keep a client-side id per user action. The documented video request fields have no idempotency key, so this protection belongs in your code.

What does failover.on_timeout_sec cost?

It resubmits a stalled job to another host without cancelling the original, and both attempts are billed if both complete. Use it only for deadline-bound jobs.

What are the main costs besides the per-second rate?

Discarded takes, duplicate jobs, any platform fee, minimum deposits, and your own storage and delivery costs. Retries are usually the largest factor.

Keep reading

Using AI video is one part of the job.

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 →