Video generation API

An AI video generation API with many models behind one key

Root's API runs the 12 video models in the table below from one key and one credit balance. Send a model id, a prompt and a project id to one endpoint, check the job until it is done, and fetch the clip. Every clip is also saved to a project in the Root app. The cheapest clip in the table below is $0.25 (Kling 2.5 Turbo, 5 s, 720p).

Updated

First month free on the Beginner plan, with 650 credits to try any model.

AI video made in Root

Video models you can call

What to send for each model: its id, the longest duration_seconds, the resolution values it takes, and what audio does. The price is for the short clip shown, in dollars. 100 credits is $1.

ModelSend as modelduration_seconds up toresolutionaudioA short clip
Seedance 2.5seedance-2-530480p, 720p, 1080ptrue or false$1.99 (5 s, 720p, with sound)
Seedance 2.0seedance-2-015480p, 720p, 1080p, 4Ktrue or false$1.30 (5 s, 720p, with sound)
Seedance 2.0 Fastseedance-2-0-fast15480p, 720ptrue or false$1.04 (5 s, 720p, with sound)
Seedance 2.0 Miniseedance-2-0-mini15480p, 720ptrue or false$0.65 (5 s, 720p, with sound)
Kling 3.0kling-v310720p, 1080p, 4Ktrue or false$0.49 (5 s, 720p, no sound)
Kling 3.0 Omnikling-v3-omni15720p, 1080p, 4Ktrue or false$0.49 (5 s, 720p, no sound)
Kling 2.6kling-v2-610720p, 1080ptrue or false$0.81 (5 s, 1080p, with sound)
Kling 2.5 Turbokling-v2-5-turbo10720p, 1080pNo sound$0.25 (5 s, 720p)
Veo 3.1veo-3.1-generate-preview8720p, 1080p, 4KAlways on$1.84 (4 s, 720p, with sound)
Runway Gen-4.5gen4.510—No sound$0.69 (5 s)
Luma Ray 3.2ray-3.210540p, 720p, 1080pNo sound$0.35 (5 s, 720p)
FLUX 3 Videoflux-3-video20hd, fhdtrue or false$0.98 (5 s, HD, with sound)

A dash under resolution means the model has no size to choose, so leave resolution out. On the models marked true or false, sound is on unless you send "audio": false. Sound costs nothing extra on all four Seedance models and FLUX 3 Video. On Kling 3.0 and Kling 3.0 Omni, sound costs more at 720p and 1080p, so a price marked no sound needs "audio": false. MiniMax H3 (Hailuo 3.0) runs in the Root app only, so it is not in this table. GET /api/v1/models still lists it: start it in the Root app.

Start a clip

This asks Seedance 2.5 for a 30-second clip at 720p, the longest in the table. Sound is on unless you send "audio": false; this clip costs $11.81 either way.

curl https://root.film/api/v1/generations \
  -H "Authorization: Bearer rfk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"model":"seedance-2-5","project_id":"YOUR_PROJECT_ID",
       "input":{"prompt":"a fishing boat leaves the harbour at dawn, gulls overhead, the camera follows from the pier",
                "duration_seconds":30,
                "resolution":"720p"}}'
  • Make an API key in Root under Settings, then API, and choose a daily spending limit for it.
  • The finished file is saved to the project you name, so your team sees it in the app too.
  • Send an Idempotency-Key header and a retry never charges twice.
  • Always send duration_seconds. If you leave it out, some models pick the length, and you pay for the length they pick.

The life of a video job

A clip takes a while to make, so the API answers at once and you come back for the clip.

  1. Submit. POST /api/v1/generations answers straight away with the job's id, the status queued, and credits_held: what is set aside from your balance while it runs.
  2. Check. GET /api/v1/generations/{id} until the status is succeeded, failed or canceled. Every few seconds is enough: asking more often than once every 5 seconds gets the same answer back. A busy model can sit in the queue before it starts.
  3. Fetch. When it has succeeded, output holds a link to the clip. Download the file then, rather than keeping the link: it stops working after a while. The clip itself stays in the project.
  4. Settle. credits_charged shows what the run really cost once the job is finished. Whatever was set aside and not used goes back to your balance.

How credits work by API

  • The API spends the same credits as the Root app, at the same price per clip.
  • GET /api/v1/models gives the price of each model at each size before you send anything.
  • Each key can have its own daily spending limit. When a key reaches it, or the balance runs out, the API answers 402 and starts nothing.
  • A run that fails is not charged. The one exception is a Runway run its content filter rejects: Runway charges us for those and does not refund it, so they are charged to you.
  • A workspace can start about 12 jobs a minute. Going faster gets a 429 that says how long to wait.
  • You can cancel a job the API started with POST /api/v1/generations/{id}/cancel. A job started in the app is stopped in the app.

Video from Claude and ChatGPT, with no code

Connect Root to Claude or ChatGPT and ask for a clip in the chat. You don't need an API key for that: the assistant starts the job, waits for it and hands you the clip, with the same models, prices and projects as the API.

For every field and error code, read the API article in Root's docs, under Support, then Docs, then API.

Related guides

Video API questions

Is there one API for many AI video models?

Yes. Root's API runs the 12 video models in the table above with one key: Seedance 2.5, Seedance 2.0, Seedance 2.0 Fast, Seedance 2.0 Mini, Kling 3.0, Kling 3.0 Omni, Kling 2.6, Kling 2.5 Turbo, Veo 3.1, Runway Gen-4.5, Luma Ray 3.2 and FLUX 3 Video. Each request names one of them, with a prompt and a project, at the same endpoint. The cheapest clip in the table is $0.25.

How do I know when an API video is ready?

Ask for its status with GET /api/v1/generations/{id}. It moves from queued to running, then to succeeded, failed or canceled. Asking every few seconds is enough; more often than every 5 seconds returns the same answer.

How much does the video API cost?

The same as making the clip in the Root app: the price depends on the model, the length, the size and whether it has sound. In the table above it starts at $0.25 for Kling 2.5 Turbo (5 s, 720p). GET /api/v1/models gives each model's price at each size before you send anything.

Can I send a start frame or reference images to the video API?

Yes, on the models that take them. Send a first frame as image_url, a last frame as last_frame_url, and reference images as reference_urls, each a link Root can fetch. Files already in your workspace go in asset_ids instead. Of these models, Seedance 2.5 takes the most reference images, up to 30.

Can I make the same video request twice without paying twice?

Yes, if you send an Idempotency-Key header and reuse it on the retry. A retry with the same key never starts a second clip. If the first attempt is still running, the API answers 409: wait, then ask again with the same key.

Where do videos made by API end up?

In the project you name in project_id, on the shot you name in shot_id, or on the project's first shot. Your team sees them in the Root app next to everything else, and can approve or compare takes there.

Which video models in this guide are not on the API?

MiniMax H3 (Hailuo 3.0). It runs on Root's own machines, in the Root app only.

Can I try the video API for free?

For a month, yes. The first month of Root's Beginner plan is free and comes with 650 credits, enough for 26 Kling 2.5 Turbo clips (5 s, 720p). After that the plan is $9 a month, and you can cancel whenever you like.

Try Root free for a month

The first month of the Beginner plan is free and comes with 650 credits to spend on any model. After that it's $9 a month, and you can cancel whenever you like.