Open Video Image To Video
Playground
Try it on WavespeedAI!OpenVideo Image to Video is a fast AI image-to-video generation model that creates short cinematic clips with native audio from a single reference image. It gives users full creative control over scene, style, and motion prompts, with support for 480p, 720p, and 1080p output and 3–20 second duration tiers. Ready-to-use REST inference API for cinematic clips, product videos, social media content, advertising creatives, visual storytelling, and professional image-to-video workflows with simple integration, no coldstarts, and affordable pricing.
Features
OpenVideo — Unlimited Image-to-Video (with Audio)
Full creative control over short cinematic clips with a native audio track. Unlimited generation freedom — the model follows the prompt as-given and emits an mp4 with a synchronized audio track, no preset rails to steer you off course.
Generate any short clip from a single reference image and a text prompt: cinematic shots, dialogue, stylized scenes, hard-to-prompt directions that other endpoints water down — all on one pipeline.
Inputs
| Field | Required | Default | Notes |
|---|---|---|---|
image | yes | — | Reference image (JPG / PNG; avoid WEBP). |
prompt | yes | — | Positive prompt; describe motion + scene in one sentence. |
resolution | no | 480p | 480p, 720p, or 1080p. |
duration | no | 5 | Output seconds, 3-20. |
seed | no | -1 | -1 = random. |
Pricing
| Resolution | Per 5s | Per second | Max length |
|---|---|---|---|
| 480p | $0.10 | $0.02 / s | 20 s |
| 720p | $0.20 | $0.04 / s | 20 s |
| 1080p | $0.30 | $0.06 / s | 20 s |
- Minimum charge: 5 seconds. Shorter requests are billed as 5s.
- Maximum billed duration: 20 seconds.
Notes
- Audio track is generated alongside the video — no separate audio input needed.
- 480p is the fastest tier; 1080p is ~3× the time-per-frame of 480p.
- You retain full control over output content — by using this endpoint you confirm you have the right to generate the requested content under your jurisdiction.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/open-video/image-to-video" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"preset": "tuned",
"resolution": "480p",
"duration": 5,
"seed": -1
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| image | string | Yes | - | Reference image for the first frame (JPG/PNG recommended). | |
| prompt | string | Yes | - | Positive prompt describing the desired motion / scene. | |
| preset | string | No | tuned | tuned, original | Style preset bundle. `original` = light styling. `tuned` = the recommended general-purpose stack. |
| resolution | string | No | 480p | 480p, 720p, 1080p | Output resolution tier. |
| duration | integer | No | 5 | 3 ~ 20 | Output duration in seconds (3-20). |
| seed | integer | No | -1 | -1 ~ 2147483647 | Random seed. -1 for a random seed. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array of URLs to the generated content (empty when status is not completed). |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |