Generate AI video from code. One HTTP endpoint reaches Kling, Veo, Seedance, Wan, MiniMax and dozens more — with live cross-provider pricing and automatic failover when a host is down.
| WaveSpeedAI | SandBase | MachGen | Atlas Cloud | Fal | Replicate | TOAPIS | Pika | OpenSand | |
|---|---|---|---|---|---|---|---|---|---|
| minimax/h3per second @ 768p | $0.08 | $0.048 | $0.05 | $0.08 | $0.06 | $0.08 | $0.08 | $0.08 | $0.053 |
| seedance-2.5-officialper second @ 480p | $0.18 | $0.153 | $0.085 | $0.14 | $0.221 | $0.103 | $0.1 | — | $0.091 |
| wan-3.0per second @ 1080p | $0.2 | $0.12 | $0.162 | $0.16 | $0.2 | $0.1 | $0.12 | $0.13 | — |
| seedance-2.0per second @ 480p | $0.12 | $0.102 | $0.059 | $0.09 | $0.135 | $0.08 | $0.066 | — | $0.06 |
| seedance-2.0-fastper second @ 480p | $0.1 | $0.085 | $0.043 | $0.027 | $0.242 | $0.07 | $0.053 | — | $0.048 |
| kling-video-v3per second @ 720p | $0.084 | $0.059 | $0.068 | — | — | — | $0.06 | $0.068 | — |
| seedance-2.0-miniper second @ 480p | $0.06 | $0.054 | $0.028 | $0.011 | $0.072 | — | $0.033 | — | $0.03 |
| veo-3.1per second @ 720p | $0.4 | $0.2 | $0.4 | — | — | $0.2 | — | $0.2 | — |
| veo-3.1-fastper second @ 720p | $0.15 | $0.08 | $0.1 | — | — | $0.1 | — | $0.08 | — |
| wan-3.0-primeper second @ 480p | $0.075 | $0.041 | — | $0.061 | $0.068 | — | — | $0.051 | — |
| minimax/h3-maxper second @ 480p | — | $0.04 | — | $0.048 | $0.05 | — | $0.05 | — | — |
| gemini-omni-flashper second | $0.13 | — | — | $0.125 | $0.13 | — | — | — | — |
| happy-horse-1.1per second @ 720p | — | — | $0.112 | — | — | $0.14 | — | $0.098 | — |
| kling-video-v3-omniper second @ 720p | $0.084 | $0.059 | $0.068 | — | — | — | — | — | — |
Green = cheapest host for that model at that resolution, red = priciest. — = host does not list it. Most widely hosted video models shown; built 2026-10-17.
A prompt in, a clip out. The baseline every model supports.
Animate a starting frame with start_image_url.
Guide generation with several images, clips or audio via input_references.
Modify an existing clip with input_video_url on editing models.
curl https://videorouter.sh/api/v1/videos \
-H "Authorization: Bearer $VIDEOROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "minimax/h3", "prompt": "a paper airplane gliding over a city", "duration_secs": 5}'
# -> {"id": "video_...", "status": "queued"}
curl https://videorouter.sh/api/v1/videos/$ID -H "Authorization: Bearer $VIDEOROUTER_API_KEY"import time, requests
H = {"Authorization": "Bearer llmr_sk_live_..."}
job = requests.post("https://videorouter.sh/api/v1/videos", headers=H, json={
"model": "minimax/h3", "prompt": "a paper airplane gliding over a city", "duration_secs": 5}).json()
while job["status"] not in ("completed", "failed"):
time.sleep(5)
job = requests.get(f"https://videorouter.sh/api/v1/videos/{job['id']}", headers=H).json()
print(job["data"][0]["url"] if job["status"] == "completed" else job["error"])const H = { Authorization: "Bearer llmr_sk_live_...", "Content-Type": "application/json" };
let job = await (await fetch("https://videorouter.sh/api/v1/videos", { method: "POST", headers: H,
body: JSON.stringify({ model: "minimax/h3", prompt: "a paper airplane gliding over a city", duration_secs: 5 }) })).json();
while (!["completed", "failed"].includes(job.status)) {
await new Promise(r => setTimeout(r, 5000));
job = await (await fetch(`https://videorouter.sh/api/v1/videos/${job.id}`, { headers: H })).json();
}
console.log(job.data?.[0]?.url ?? job.error);Full walkthrough in the quickstart.
Plain-English explanation of video generation APIs: the job lifecycle, how pricing works per second, why one model has several hosts, and how to choose.
Real video generation API use cases (product clips, social ads, previs, asset prototyping, localised variants) and the input mode and workflow each one needs.
Compare text-to-video, image-to-video and reference-to-video in a video generation API: request fields, when to use each, and the pitfalls that cost money.
Self-hosting video models versus a hosted video generation API: GPU ops, queueing, failover and cost modelling, plus what you still have to build either way.
Criteria-based guide to evaluating video generation APIs: reliability, failover, input modes, pricing model, data terms, async design and a one-day bake-off.
A text-to-video API call field by field: model, prompt, duration_secs, aspect_ratio, resolution, provider hints, the job lifecycle and what gets billed.
A concrete workflow for e-commerce product videos via API: image-to-video variants, automated checks, human review, publishing, cost control and pitfalls.
Generate social ad variations with a video API: prompt templating, 9:16, 1:1 and 16:9 sets, draft-then-final rendering, deduping and spend caps.
An HTTP interface that turns a text prompt (and optionally a start image or reference clip) into a generated video file. You submit a job, wait for it to finish, then download the result.
Almost always per second of output video, and often per resolution tier. The same model can differ several-fold in price depending on which host serves it — see the live pricing page.
Kling, Veo, Seedance, Wan, MiniMax, Runway, Vidu, LTX, PixVerse and more. The pricing page lists every video model currently in the catalog.
No. One VideoRouter API key covers every model and host in the catalog, billed from one prepaid balance.
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 →