Video generation API

Image-to-video, first and last frame, reference images, avatars and lip-sync over one asynchronous /v1/videos API, priced per second of output in USD.

Every video model runs on the same asynchronous endpoint, POST /v1/videos: create a task, poll it, download the file. A 202 response means the task was accepted, not that the video is ready. Prices are per second of output in USD and shown in the model directory; failed and cancelled tasks are not charged.

What the lineup covers

Image to videoAnimate a still with a prompt. Pass the first frame as image.
First & last frameAdd last_frame on models that support it to control where the shot ends.
Reference imagesKeep characters and products consistent with reference_images on models that take references.
Avatars & lip-syncA portrait or video of one person plus a voice track gives a talking clip.
Video toolsUpscale and restyle existing videos on the same endpoint.

Video models and prices · Image models for first frames

How a task runs

  1. Optional: get a price first with dry_run: true.
  2. Create a task with an Idempotency-Key header so a retry never creates a second video: POST /v1/videos
  3. Poll the status every 5 to 15 seconds: GET /v1/videos/{id}
  4. Download the result: GET /v1/videos/{id}/content

Video generation guideInputs per mode, avatar and tool models, limits, pricing and errors.

Read the guideAI short drama