Home › Guides › Build vs buy

Self-host open video models or call a hosted API?

Updated 2026-10-17

Open-weight video models make self-hosting tempting, and for some teams it is the right call. For many it is not, for reasons that show up in operations, not in the model. This page lays out what each path actually involves so you can decide on the work, not the sticker price.

What "build" really contains

Running a model is the easy part. The system around it is the work:

What "buy" contains

A hosted API collapses most of that into POST /videos and polling. With a gateway like VideoRouter you additionally get several hosts per model behind one request shape, so the failure mode "my provider is down or throttling" becomes a retry on another host serving the same checkpoint rather than an outage. Billing is per request from the requested duration, with no idle cost.

What you still build on the buy side is smaller but real: a job table, a poller or worker, copying outputs into your own storage, a retry policy, spend monitoring and a review step. The quickstart shows the request side.

A cost model that is honest about idle time

Do not compare a per-second hosted price with a GPU hourly rate directly. Build a model with these terms and plug in your own numbers:

self_hosted_cost_per_clip =
    (gpu_hourly_rate * seconds_gpu_busy_per_clip / 3600) / utilisation
    + ops_labour_per_month / clips_per_month
    + storage_and_egress_per_clip

hosted_cost_per_clip = requested_seconds * price_per_second * (1 + platform_fee)

utilisation is the term teams underestimate: if your GPUs are busy 20% of the time, the effective cost per clip is five times the busy-time cost. Hosted pricing has no utilisation term; you pay when you generate. The break-even point therefore depends on sustained volume, not total volume. Also count retries on both sides: the rejected-clip rate multiplies cost either way.

For the hosted side, the current spread is in the table below; the same checkpoint can cost noticeably different amounts depending on host.

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.

Failover is the hidden differentiator

A single self-hosted cluster has one failure domain. A hosted gateway routes around a failing host: unpinned requests retry once on the same host, then walk other hosts serving the same checkpoint, cheapest first. You can also set failover.on_timeout_sec to hedge to the next host if a job stalls, but note that both attempts are billed if both land. Rebuilding this yourself means contracts, keys and integrations with multiple providers, which is most of the value of the gateway.

The people cost

The line item that most often gets left out of a build estimate is attention. Someone has to watch queue depth, handle a driver update that breaks a pipeline, evaluate each new open release, and answer the pager when a node dies at night. Even a small team doing this part-time is a real monthly cost, and it does not shrink when volume is low. If you do the arithmetic and the labour term dominates, that is your answer; if your clips-per-month is large enough that labour is a rounding error against GPU savings, building starts to make sense.

When building is the right answer

When buying is the right answer

A hybrid that works

Start hosted, instrument cost per accepted clip and the share of traffic going to each model, then self-host only the one model that dominates steady volume. Keeping the request shape behind your own thin wrapper means moving that one model later is a config change. See use cases for the workflows that tend to dominate volume, and the pricing page for current per-model numbers.

Create a key and measure your real rejected-clip rate on a few hundred prompts first; that number decides the comparison more than any benchmark.

Frequently asked questions

Is self-hosting video generation cheaper?

Only at sustained, high utilisation. At low or spiky volume, idle GPU time and operations labour usually outweigh the per-second price of a hosted API.

What do I still have to build if I use a hosted API?

A job table, a poller or worker, output copying into your own storage, a retry policy, and spend monitoring. The model serving layer is what you skip.

How does failover work with a gateway?

Unpinned requests retry once on the same host and then try other hosts serving the same checkpoint, cheapest first. A timeout hedge is opt-in and bills both attempts if both complete.

Can I move from hosted to self-hosted later?

Yes, if you keep the request shape behind your own wrapper. Many teams self-host only the single model that dominates steady volume.

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 →