Every AI video provider ships its own SDK, its own auth scheme, its own billing quirks, and its own job-polling loop. Want a Kling clip, a Veo shot, and a Wan generation in the same app? That's three accounts, three key rotations, and three polling implementations — before you've generated a single frame.
I've been benchmarking video APIs over the past few weeks (Hailuo H3 vs Kling, Wan 3.0 deep dive). This post covers the unified-API approach I settled on (Viddra — full disclosure at the bottom): one key, one OpenAI-style request shape, and per-second billing across 20+ models.
The actual price table
All prices are per second, pulled live from the model directory (GET /v1/models) rather than marketing pages:
| Model | Provider | Price | Notes |
|---|---|---|---|
| Hailuo 2.3 | MiniMax | $0.0933/s (768P) · $0.15/s (1080P) | budget flagship tier |
| Hailuo H3 | MiniMax | $0.12/s (768P) · $0.20/s (2K) | 2K flagship, 4–15s |
| Seedance 1.0 Pro | ByteDance | $0.13/s | efficient budget tier |
| Seedance 2.0 Mini | ByteDance | $0.15/s (720p) | 4–15s |
| Wan 2.6 | Alibaba | $0.16/s (720p) · $0.24/s (1080p) | solid all-rounder |
| Kling 3.0 | Kuaishou | $0.18/s | quality flagship, 3–15s, optional audio |
| Veo 3.1 Fast | $0.20/s | native audio, speed-optimized | |
| Wan 3.0 | Alibaba | $0.25/s (480p) · $0.50/s (720p) · $1.00/s (1080p) | 2–30s, native audio, i2v + 10 reference inputs |
| Veo 3.1 | $0.35/s ($0.60/s with audio) | premium tier | |
| Seedance 2.0 | ByteDance | $0.47/s (720p) | 480p–4K |
| Seedance 2.5 | ByteDance | $0.68/s (720p) | long-form, up to 30s, 50 reference inputs |
The spread between the cheapest and priciest flagship output is roughly 7x — which is exactly why a unified price table matters before you commit code to one provider.
The request shape
One endpoint handles every model. Auth is a standard bearer key:
curl -X POST https://api.viddra.com/v1/video/generations \
-H "Authorization: Bearer $VIDDRA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling3.0",
"prompt": "A golden retriever puppy playing in autumn leaves, slow motion",
"duration": 5
}'
The call returns 202 Accepted with a task id. Billing works on hold-then-settle: the estimated cost is held when the task starts, and on failure the hold is refunded automatically — no support ticket, no expired credits.
Polling in 12 lines of Python
import os, time, requests
KEY = os.environ["VIDDRA_API_KEY"]
H = {"Authorization": f"Bearer {KEY}"}
r = requests.post("https://api.viddra.com/v1/video/generations", headers=H,
json={"model": "veo3.1-fast",
"prompt": "Drone shot flying over neon-lit city streets at night",
"duration": 5})
task_id = r.json()["task_id"]
while True:
d = requests.get(f"https://api.viddra.com/v1/video/generations/{task_id}", headers=H).json()
if d["status"] in ("succeeded", "failed"):
print(d["status"], d.get("video_url") or d.get("error"))
break
time.sleep(10)
Swap "model" to kling3.0, wan3.0-video, hailuo-h3, seedance2.5, veo3.1 — the request shape doesn't change. Image-to-video uses the same endpoint with an image_url field. There's also a zero-dependency Node.js version of this flow in the quickstart docs.
The billing details that actually matter
- $1 free credit on signup — enough to test 5–8 real generations across models, no card required
- +10% bonus on every top-up
- Per-second billing with no monthly minimum; balance never expires
- Auto-refund on failure — failed tasks return the full hold
- Rate limit: 100 req/min per IP, which is enough for production batch jobs
When a unified API is the wrong choice
Fair question. If you're all-in on a single provider and need their deepest params (e.g. Wan 3.0's full reference-input matrix), the native SDK will always have the newest knobs first. The unified layer shines when you're routing by price/quality per shot — cheap Seedance Mini drafts, Kling or H3 for finals — or when you don't want to wire up a new provider every time a benchmark shifts.
Full disclosure: Viddra is the unified API used for the benchmarks and pricing above, and I'm affiliated with the project. All prices were pulled from the live model directory, and the code samples run as written. Test it with the $1 free credit before trusting any of this.
Top comments (0)