The fastest AI video API.
One API over every video model. We race them on every prompt and hand you the first clip that finishes. Bring your own key — we orchestrate, cache, and store.
We don't run the GPUs. We run the race.
Video gen is slow, expensive, and split across a dozen APIs. Three layers we control turn that into one fast endpoint.
Model racing
Your prompt fans out to every configured model at once — fal and Replicate, fast and cinematic. The first render to finish is the one you get; the rest are dropped. Every model has a slow render sometimes; racing means you never wait on it.
first-clip-winsOne API · your keys
Bring your own fal / Replicate key. One OpenAI-style endpoint replaces a dozen SDKs — swap or add a model without touching your code. You pay the render on your own account; we bill only the fast layer on top.
BYOK · unifiedCached & stored
Seeded renders are cached — ask twice, pay once, get it instantly. Every finished clip is copied to our storage with a permanent URL, so provider links never expire under you.
seed cache · permanent URLsCreate. Poll. Done.
Async by design — renders take seconds to minutes. Create a job, poll until the first model finishes, get a permanent URL.
// 1 · create — bring your own fal key const job = await fetch("https://gen.purplesquirrel.media/v1/video/generations", { method: "POST", headers: { "content-type": "application/json", "X-Fal-Key": process.env.FAL_KEY, "Authorization": "Bearer psm_...", }, body: JSON.stringify({ model: "psm-video-fast", prompt: "a squirrel surfing a neon wave" }), }).then(r => r.json()); // 2 · poll until the first model finishes let v; do { await sleep(2000); v = await fetch(job.poll, { headers: { "X-Fal-Key": process.env.FAL_KEY } }).then(r => r.json()); } while (v.status === "processing"); console.log(v.video_url); // stored on our R2 — permanent
Response tells you which model won (provider) and the permanent video_url.