Wan FLF2V
Wan-2.1 flf2v generates dynamic videos by intelligently bridging a given first frame to a desired end frame through smooth, coherent motion sequences.
Features
FLF2V stands for First-Last Frame to Video. The model uses two image anchors—the first frame and last frame—and generates a short cinematic sequence that connects the two via plausible and creative motion.
Rather than simply blending frames, it leverages the architecture of Wan 2.1, integrating LoRA conditioning, diffusion guidance, and temporal consistency training to produce meaningful transitions.
The FLF2V model bridges the creative gap between keyframes. The results often feel like scenes from short animated films—with character motion, background transitions, and action unfolding fluidly.
Key Features
- Dual-Anchor Motion Synthesis: Generates video by connecting two key frames with context-aware motion sequences.
- Supports Prompt + Image Input: Combine text guidance with first/last frame images for even finer control over content and style.
- LoRA Compatible: Natively supports all LoRA models—customize characters, styles, and environments with precision.
- High Fidelity + Realism: Trained to avoid warping, artifacts, or lazy interpolation—motion unfolds naturally and consistently.
- Fast Inference with WaveSpeedAI Inference: Run WAN-FLF2V at blazing speeds with our optimized inference engine, saving time and compute costs.
ComfyUI
wan-flf2v is also available on ComfyUI, providing local inference capabilities through a node-based workflow. This ensures flexible and efficient video generation on your system, catering to various creative workflows.
Limitations
- Input Dependency: The quality of the generated video heavily relies on the clarity and relevance of the starting and ending frames, as well as the specificity of the text prompt.
- Creative Control: While FLF2V offers enhanced control over motion synthesis, achieving highly specific or complex transitions may require iterative prompt tuning and experimentation.
- Output Length: The duration of the generated video is influenced by the number of frames specified, which may limit the length of the output in certain scenarios.
Out-of-Scope Use
The model and its derivatives may not be used in any way that violates applicable national, federal, state, local, or international law or regulation, including but not limited to:
- Exploiting, harming, or attempting to exploit or harm minors, including solicitation, creation, acquisition, or dissemination of child exploitative content.
- Generating or disseminating verifiably false information with the intent to harm others.
- Creating or distributing personal identifiable information that could be used to harm an individual.
- Harassing, abusing, threatening, stalking, or bullying individuals or groups.
- Producing non-consensual nudity or illegal pornographic content.
- Making fully automated decisions that adversely affect an individual’s legal rights or create binding obligations.
- Facilitating large-scale disinformation campaigns.
Accelerated Inference
Our accelerated inference approach leverages advanced optimization technology from WavespeedAI. This innovative fusion technique significantly reduces computational overhead and latency, enabling rapid image generation without compromising quality. The entire system is designed to efficiently handle large-scale inference tasks while ensuring that real-time applications achieve an optimal balance between speed and accuracy. For further details, please refer to the blog post.
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/v2/wavespeed-ai/wan-flf2v" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"prompt": "In a breathtaking cinematic tableau, a sleek tabby cat with striking black markings gracefully traverses a sunlit road, its fur glistening under the golden-hour glow. The camera captures the feline's fluid movements in exquisite detail as it strides purposefully along the asphalt, framed by lush greenery and distant trees that hint at a serene countryside. As the cat approaches the viewer, its eyes reflect a captivating intensity, drawing us into its world. Suddenly, the scene shifts dramatically; the cat transforms into a majestic dragon, its scales shimmering in iridescent hues of blue and green. The creature's powerful wings unfurl, casting shadows over the road as it ascends gracefully into the sky, leaving behind a trail of ethereal mist. This stunning visual narrative seamlessly blends fantasy with reality, inviting viewers to marvel at the enchanting metamorphosis.",
"negative_prompt": "bright colors, overexposed, static, blurred details, subtitles, style, artwork, painting, picture, still, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, malformed limbs, fused fingers, still picture, cluttered background, three legs, many people in the background, walking backwards",
"start_image": "https://storage.googleapis.com/falserverless/web-examples/wan_flf/first_frame.png",
"end_image": "https://storage.googleapis.com/falserverless/web-examples/wan_flf/last_frame.png",
"seed": -1,
"num_frames": 81,
"frames_per_second": 16,
"resolution": "720p",
"num_inference_steps": 30,
"guide_scale": 5,
"shift": 2,
"enable_safety_checker": true,
"enable_prompt_expansion": true,
"aspect_ratio": "auto"
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v2/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
Parameter | Type | Required | Default | Range | Description |
---|---|---|---|---|---|
prompt | string | Yes | In a breathtaking cinematic tableau, a sleek tabby cat with striking black markings gracefully traverses a sunlit road, its fur glistening under the golden-hour glow. The camera captures the feline's fluid movements in exquisite detail as it strides purposefully along the asphalt, framed by lush greenery and distant trees that hint at a serene countryside. As the cat approaches the viewer, its eyes reflect a captivating intensity, drawing us into its world. Suddenly, the scene shifts dramatically; the cat transforms into a majestic dragon, its scales shimmering in iridescent hues of blue and green. The creature's powerful wings unfurl, casting shadows over the road as it ascends gracefully into the sky, leaving behind a trail of ethereal mist. This stunning visual narrative seamlessly blends fantasy with reality, inviting viewers to marvel at the enchanting metamorphosis. | - | he text prompt to guide video generation. |
negative_prompt | string | No | bright colors, overexposed, static, blurred details, subtitles, style, artwork, painting, picture, still, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, malformed limbs, fused fingers, still picture, cluttered background, three legs, many people in the background, walking backwards | - | Negative prompt for video generation |
start_image | string | Yes | https://storage.googleapis.com/falserverless/web-examples/wan_flf/first_frame.png | - | URL of the starting image. If the input image does not match the chosen aspect ratio, it is resized and center cropped. |
end_image | string | Yes | https://storage.googleapis.com/falserverless/web-examples/wan_flf/last_frame.png | - | URL of the ending image. If the input image does not match the chosen aspect ratio, it is resized and center cropped. |
seed | integer | No | -1 | -1 ~ 9999999999 | Random seed for reproducibility. If None, a random seed is chosen. |
num_frames | integer | No | 81 | 81 ~ 100 | Frames per second of the generated video. Must be between 5 to 24. |
frames_per_second | integer | No | 16 | 5 ~ 24 | Frames per second of the generated video. Must be between 5 to 24. |
resolution | string | No | 720p | - | Resolution of the generated video (480p or 720p). 480p is 0.5 billing units, and 720p is 1 billing unit. |
num_inference_steps | integer | No | 30 | 0 ~ 100 | Number of inference steps for sampling. Higher values give better quality but take longer. |
guide_scale | number | No | 5 | 0 ~ 30 | Classifier-free guidance scale. Higher values give better adherence to the prompt but may decrease quality. |
shift | number | No | 2 | - | |
enable_safety_checker | boolean | No | true | - | If set to true, the safety checker will be enabled. |
enable_prompt_expansion | boolean | No | true | - | |
aspect_ratio | string | No | auto | - | Aspect ratio of the generated video. If 'auto', the aspect ratio will be determined automatically based on the input image. |
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.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
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 Query Parameters
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 |
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.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
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 |