Wan 2.2 Fun Control
Playground
Try it on WavespeedAI!Wan2.2-Fun-Control uses Control Codes and multi-modal inputs to generate preset-controlled videos up to 120s at 720p; released under Apache 2.0 for commercial use. Ready-to-use REST API, no coldstarts, affordable.
Features
Wan2.2-Fun-Control
Wan2.2-Fun-Control is an advanced video generation and control model developed by the Alibaba PAI team, designed for precise and creative video synthesis. By integrating Control Codes with deep learning and multi-modal conditioning, it enables users to direct motion, structure, and scene composition — achieving controllable, high-fidelity video generation under customizable guidance.
🌟 Key Features
-
🎛️ Multi-Modal Control Supports multiple input types for fine-grained video control:
- Canny: Edge or line-art guidance
- Depth: Depth map-based spatial control
- OpenPose: Human pose and skeletal motion tracking
- MLSD: Geometric line structure for scene layout
- Trajectory Control: Object or camera movement path conditioning
-
🎬 High-Quality Video Generation Built on the Wan 2.2 architecture — delivering cinematic, high-resolution video outputs with stable motion and consistent identity.
-
🌍 Multi-Language Prompting Accepts both Chinese and English descriptions for flexible creative control.
-
🧠 Intelligent Composition Aligns user-provided references (images or frames) with pose, structure, and scene layout to ensure natural transitions and realism.
💰 Pricing
| Resolution | Cost per 5 Seconds | Max Duration |
|---|---|---|
| 480p | $0.20 | 120 seconds |
| 720p | $0.40 | 120 seconds |
Billing Rules
- Standard Rate: $0.04 per second
- HD (720p) Rate: $0.08 per second
- Minimum Charge: All audio is billed for a minimum of 5 seconds.
- Standard: $0.20
- HD (720p): $0.40
- Billing Cap: To keep your costs predictable, billing is capped at a maximum of 600 seconds (10 minutes).
⚙️ Usage Tips
-
🧍 Keep reference consistency: The reference image’s composition, pose, and camera angle should match the desired video framing. Major mismatches between input and control maps (e.g., OpenPose or Canny) can lead to generation instability or artifacts.
-
🖼️ Match aspect ratios: The aspect ratio of the input image and target video should remain identical for best results.
-
🔄 Control balance: Combining too many control types simultaneously may reduce creative flexibility — start with one or two controls and tune gradually.
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/wan-2.2/fun-control" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"resolution": "480p",
"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 | - | The image for generating the output. | |
| video | string | Yes | - | The video for generating the output. | |
| prompt | string | No | - | The positive prompt for the generation. | |
| resolution | string | No | 480p | 480p, 720p | The resolution of the output video. |
| seed | integer | No | -1 | -1 ~ 2147483647 | The random seed to use for the generation. -1 means a random seed will be used. |
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 |