Skip to main content
POST
/
v1
/
ai
/
image-to-video
/
wan-2-7
WAN 2.7 - Create video from image
curl --request POST \
  --url https://api.freepik.com/v1/ai/image-to-video/wan-2-7 \
  --header 'Content-Type: application/json' \
  --header 'x-freepik-api-key: <api-key>' \
  --data '
{
  "webhook_url": "https://www.example.com/webhook",
  "prompt": "The character walks forward slowly with wind blowing through their hair",
  "negative_prompt": "watermark, text, distortion, blurry, extra limbs",
  "start_image_url": "https://example.com/start-frame.jpg",
  "end_image_url": "https://example.com/end-frame.jpg",
  "audio_url": "<string>",
  "video_url": "https://example.com/input-video.mp4",
  "resolution": "1080P",
  "duration": 5,
  "seed": 12345,
  "additional_settings": {
    "prompt_extend": true
  }
}
'
{ "data": { "generated": [], "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91", "status": "CREATED" } }

Authorizations

x-freepik-api-key
string
header
required

Your Freepik API key. Required for authentication. Learn how to obtain an API key

Body

application/json

Generate video from an image or extend an existing video using WAN 2.7. Supports three modes:

  • First frame only: provide start_image_url to animate from a starting image
  • First + last frame: provide both start_image_url and end_image_url for controlled start-to-end animation
  • Video continuation: provide video_url to extend an existing video, optionally with end_image_url as the target ending frame
webhook_url
string<uri>

Optional callback URL that will receive asynchronous notifications whenever the task changes status. The payload sent to this URL is the same as the corresponding GET endpoint response, but without the data field.

Example:

"https://www.example.com/webhook"

prompt
string

Optional text description to guide the video generation. Describe the desired motion, camera movements, and style.

Maximum string length: 5000
Example:

"The character walks forward slowly with wind blowing through their hair"

negative_prompt
string

Elements to avoid in the generated video.

Examples: "blurry, low quality, watermark, text, distortion, extra limbs"

Maximum string length: 500
Example:

"watermark, text, distortion, blurry, extra limbs"

start_image_url
string<uri>

URL of the first-frame image to animate from. Must be publicly accessible.

Supported formats: JPEG, PNG, BMP, WEBP Dimensions: 240-8000px per side, aspect ratio between 1:8 and 8:1 Maximum file size: 20MB

Example:

"https://example.com/start-frame.jpg"

end_image_url
string<uri>

URL of the last-frame image. Use with start_image_url for controlled start-to-end animation, or with video_url as the target ending frame. Same format constraints as start_image_url.

Example:

"https://example.com/end-frame.jpg"

audio_url
string<uri>

URL of an audio file to guide the video generation.

Supported formats: WAV, MP3 Duration: 2-30 seconds Maximum file size: 15MB

video_url
string<uri>

URL of an existing video to continue or extend.

Supported formats: MP4, MOV Duration: 2-10 seconds Dimensions: 240-4096px per side Maximum file size: 100MB

Example:

"https://example.com/input-video.mp4"

resolution
enum<string>
default:1080P

Output video resolution:

  • 720P: 720p HD (1280x720)
  • 1080P: 1080p Full HD (1920x1080)
Available options:
720P,
1080P
duration
integer
default:5

Duration of the output video in seconds. When using video continuation (video_url), this is the total output length including the input video duration.

Required range: 2 <= x <= 15
Example:

5

seed
integer

Random seed for reproducible generation. Use the same seed with identical parameters to reproduce results. Leave unset for random seed.

Required range: 0 <= x <= 2147483647
Example:

12345

additional_settings
object

Additional generation settings.

Response

OK - The task exists and the status is returned

data
object
required
Example:
{
  "task_id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
  "status": "CREATED",
  "generated": [
    "https://openapi-generator.tech",
    "https://openapi-generator.tech"
  ]
}