Home › Guides › How to evaluate

How to choose a video generation API: criteria that matter

Updated 2026-10-17

Searching for the "best video generation API" tends to return rankings that go stale within weeks, because models and hosts change faster than articles do. A more durable approach is to decide what you need, turn that into a short scorecard, and run the same small test against every candidate. This page is that scorecard. It does not rank anyone; it tells you what to measure so your own result is the one you trust.

Start by writing down the job, not the vendor

Before comparing anything, fill in four lines. Which input modes do you need: text only, a start image, reference files, an input video to edit? What clip lengths and aspect ratios does your product actually ship? How many clips per day at launch and at ten times that? And what happens to a user when a generation fails: a spinner, a retry, a refund? Requirements like these eliminate more candidates than any benchmark, because a model that cannot take your input mode is out regardless of how it looks. The comparison of text, image and reference modes is a useful way to settle the first line.

The seven criteria

CriterionWhat to askHow to check it
ReliabilityWhat share of submitted jobs finish, and how are the rest reported?Submit a fixed batch and count completed, failed and stuck jobs yourself.
FailoverIf the host serving a model rejects a job, does anything else try it?Read the routing docs; confirm whether fallback covers submission only or also accepted-then-stalled jobs.
Input modesWhich of text, start image, references, input video does each model accept?Send one request per mode, including a bad combination, and read the error.
Pricing modelPer second, per clip, or per credit? When is it charged?Run one short job and compare the charge to the listed rate.
Data termsWhere do prompts, inputs and outputs go, and how long are outputs retained?Read the privacy and retention terms for the gateway and for the underlying host.
Async ergonomicsIs there a clean create / poll / fetch lifecycle, and are errors machine-readable?Write the polling loop and see how many special cases you need.
Cost visibilityCan you see per-model rates and cap a runaway key?Look for per-key spend limits and a public rate table.

Reliability and failover: separate the two

People conflate them. Reliability is how often a job succeeds on the host you called. Failover is what the platform does when it does not. With a single provider you get the first and none of the second. With a gateway, VideoRouter's documentation describes unpinned requests as retrying once on the same host and then walking other hosts that serve the same checkpoint, cheapest first, until one accepts the job. That covers the submission call. A job that is already accepted and then stalls is a different case, handled by an opt-in timeout hedge that resubmits to the next host without cancelling the first, and bills both attempts if both finish. Whatever vendor you evaluate, ask which of these cases is covered and what each costs. A job that fails because every upstream host failed is documented as not billed, which is the behaviour to look for.

Input modes decide the shortlist

Model families differ in what they accept. Some take only text, some take a start image, some take reference images, video or audio, and some edit an input video. Several have rules such as "start image or reference files, not both". Do not infer this from marketing pages. Send one request for each mode you need and read what comes back, including a deliberately wrong one. A clear 400 with a useful message is a point in the vendor's favour; silent fallback to a different behaviour is a point against, and some size parameters are documented to be ignored rather than rejected, so check output dimensions as well as status codes.

Pricing model: read when you are charged

For video, the unit that matters is the second of requested output, and the moment that matters is when the charge is taken. VideoRouter bills once at creation by the duration you request, polling is free, and the platform fee on image and video is 2.5%. Other vendors charge on completion, per credit or per resolution bucket. None of these is wrong; they behave differently under retries and failures, so model your own worst case: a retry storm, a user who re-renders five times, a long tail of failed jobs. Compare vendors on the same clip length and resolution, using the live numbers.

ModelCheapest hostPriciest hostCheapest isHosts
bytedance/seedance-2.5 (720p)SoCheap-Overseas
$0.1419 / second
Fal-US
$0.5676 / second
75% lower11
bytedance/seedance-2.0 (720p)MachGen
$0.1275 / second
Fal
$0.3034 / second
58% lower8
alibaba/wan-3.0 (480p)Replicate
$0.025 / second
Alibaba
$0.05 / second
50% lower11
google/gemini-omni-flashGoogle
$0.1 / second
Fal
$0.13 / second
23% lower4
minimax/h3 (768p)kie.ai
$0.04 / second
WaveSpeedAI-resell
$0.1 / second
60% lower13
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% lower8
bytedance/seedance-2.0-mini (480p)Atlas Cloud
$0.0112 / second
Fal
$0.0721 / second
84% lower7
kling-o3 (720p)SandBase
$0.0588 / second
Tencent TokenHub
$0.084 / second
30% lower4
kling-v3 (720p)SandBase
$0.0588 / second
Tencent TokenHub
$0.084 / second
30% lower8
google/gemini-omni-1.1-flash (360p)WaveSpeedAI
$0.03 / second
Google
$0.1 / second
70% lower3
lightricks/ltx-2.3-pro (2160p)MachGen
$0.1 / second
SandBase
$0.32 / second
69% lower2

Per second, before VideoRouter's 2.5% platform fee. For tiered models each row compares the resolution tier with the widest host-to-host gap. Built 2026-10-17 from the live catalog.

Treat that table as a spread, not a verdict: the same checkpoint can be sold at different rates by different hosts, which is exactly what a multi-host gateway lets you exploit. See the pricing page for the current figures.

Data terms and retention

Product teams often discover retention rules after launch. Ask three concrete questions: are prompts and input images logged, who can see them, and how long do generated files stay downloadable? Provider URLs are delivery links, not storage, so plan to copy outputs into your own bucket the moment a job completes regardless of what a vendor promises. If you handle user-uploaded photos or faces, also check the underlying host's terms, since a gateway passes data to that host. This is a read-the-document step with no shortcut; write the answers down next to each candidate.

Async ergonomics

All video APIs are asynchronous because jobs take far longer than an HTTP request should stay open. What varies is how much code you need around that. A good lifecycle is small: create returns an id and a status, a status endpoint moves through queued, in_progress, then completed or failed, and the finished object has one obvious place for the URL. Errors should have a stable envelope you can branch on. Count the lines in your polling loop; it is a surprisingly honest measure. The quickstart shows the full loop in a few lines.

A one-day bake-off

You can compare candidates fairly in a day with a small budget. Keep it mechanical:

  1. Freeze a prompt set. Fifteen to twenty prompts and inputs drawn from your real use case, covering each input mode you need, written down before you call anything.
  2. Fix the variables. Same duration, aspect ratio and resolution for every candidate, at the cheapest tier that can plausibly meet your needs.
  3. Run everything through one harness. A script that submits, polls with a deadline, records start and finish times, final status and error body, and downloads the file.
  4. Record cost. Note the charge per job from the dashboard, not from the price list.
  5. Review blind. Shuffle outputs, strip the filenames, and have two people score them against criteria you wrote first: prompt adherence, motion, artifacts, consistency.
  6. Inject failures. Submit one deliberately invalid request per candidate and one over-length request, and compare the error messages.

The output is a small table: completion rate, median and worst time to finish, cost per accepted clip, blind score, and error quality. Do not extrapolate a latency claim beyond your sample; a single afternoon says little about peak-hour behaviour, so repeat the run at a different time of day before you commit.

What not to weigh heavily

Leaderboard position on a public benchmark, model names, and the number of models in a catalog all matter less than fit and operational behaviour. A smaller catalog that covers your input modes and fails gracefully beats a larger one that does not. When you are ready to run the harness, create an API key and set a small monthly cap on it first, and read the build-versus-buy notes if self-hosting is still on the table.

Frequently asked questions

What should I compare when choosing a video generation API?

Reliability, failover behaviour, supported input modes, how and when you are charged, data and retention terms, async ergonomics, and cost visibility. Test each with your own prompts rather than relying on rankings.

How long does a fair bake-off take?

About a day: freeze a prompt set, run it through one harness at fixed duration and resolution, record per-job cost and timing, review outputs blind, and repeat at a different time of day.

Is a bigger model catalog better?

Not by itself. What matters is whether the catalog covers the input modes you need and whether failures are handled predictably.

Why does when I am charged matter?

It changes your worst case under retries. VideoRouter bills once at creation by requested duration and does not bill jobs that fail because every upstream host failed.

Keep reading

Using video generation 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 →