---
title: "Create Video"
method: POST
path: "/v3/videos"
tags: ["Videos"]
---

# Create Video

`POST /v3/videos`

## Request

- Base URL: `https://api.edenai.run`
- URL: `https://api.edenai.run/v3/videos`
- Auth: HTTP bearer

Start a video generation job.

Send `model` as `provider/model` (see GET /v3/videos/models), a `prompt`,
and optionally `seconds`, `size` and an `input_reference` image. The job
runs asynchronously: poll GET /v3/videos/{video_id} until `status` is
`completed`, then download the mp4 from GET /v3/videos/{video_id}/content.
Accepts `application/json`, or `multipart/form-data` with the reference
image as the `input_reference` file part.

## Request body

- object: Request body for ``POST /v3/videos``. OpenAI's video creation shape (`model`, `prompt`, `seconds`, `size`, `input_reference`) plus Eden extensions (`seed`, `provider_params`, `webhook_receiver`, `user_webhook_parameters`).
  - `model` string, required: Video model as `provider/model`, e.g. `pruna/p-video` or `openai/sora-2`. List the available ids with GET /v3/videos/models.
  - `prompt` string, required: Text describing the video to generate.
  - `seconds` integer, nullable: Clip length in seconds. Accepts OpenAI's string form ("4", "8", "12") or an integer. Omit to use the model's default duration.
  - `size` string, nullable: Output resolution as `WIDTHxHEIGHT`, e.g. `1280x720` or `1920x1080`. Omitted uses the provider's default; each provider maps it to its nearest tier.
  - `seed` integer, nullable: Eden extension: random seed for reproducible output.
  - `provider_params` object, nullable: Eden extension: provider-native parameters merged into the provider request, subject to the per-provider allow-list.
  - `webhook_receiver` string, uri, nullable: Eden extension: URL notified when the job finishes.
  - `user_webhook_parameters` object, nullable: Eden extension: custom fields echoed in the webhook payload.
  - `input_reference` VideoInputReference: Reference image for image-to-video generation. Set exactly one of ``file_id`` (an image uploaded to ``POST /v3/upload``) or ``image_url`` (a public http(s) URL to a JPEG or PNG). Base64 data URLs are not accepted: upload the image and pass its ``file_id`` instead.
    - `file_id` string, nullable: Id of an image previously uploaded to /v3/upload.
    - `image_url` string, nullable: Public http(s) URL of a JPEG or PNG image.

## Response `200`

Successful Response

- VideoObject: A video generation job, in OpenAI's video object shape. `provider` and `cost` are Eden extensions. Download the finished video from ``GET /v3/videos/{video_id}/content``.
  - `id` string, required: Job id. Use it to poll, download and delete.
  - `object` 'video'
  - `status` 'queued' | 'in_progress' | 'completed' | 'failed', required: queued, in_progress, completed or failed.
  - `progress` integer, nullable: 0 while running or failed, 100 when completed.
  - `created_at` integer, required: Unix timestamp (seconds) of job creation.
  - `completed_at` integer, nullable: Unix timestamp (seconds) when the job finished.
  - `expires_at` integer, nullable: Always null: Eden AI keeps the result.
  - `model` string, required: The `provider/model` that ran the job.
  - `seconds` string, nullable: Clip length in seconds, as a string.
  - `size` string, nullable: Requested resolution as `WIDTHxHEIGHT`.
  - `remixed_from_video_id` string, nullable: Always null: remix is not supported.
  - `error` VideoError: Why a video job failed.
    - `code` string, required: Machine-readable error code.
    - `message` string, required: Human-readable error message.
  - `provider` string, required: Eden extension: provider that ran the job.
  - `cost` number, required: Eden extension: cost in USD. 0 while the job is queued or in progress (the reserved estimate is not surfaced); the settled amount once the job completes or fails.

---

[API](https://skmtc.dev/edenai/apis/eden-ai-api-v3.md) - [All operations](https://skmtc.dev/edenai/apis/eden-ai-api-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/edenai/apis/eden-ai-api-v3/revisions/20ddfd49a3f4?raw)
