# Wan API Documentation

> Generate videos with the Wan model through the AI Studio API.

## Overview

Use the AI Studio API to create Wan generation tasks and query their status. The flow is asynchronous: create a task first, then poll the task endpoint with the returned `taskId`.

## Authentication

All requests require an API key in the `Authorization` header.

```http
Authorization: Bearer YOUR_API_KEY
```

## Available models

| modelId | Version | Provider | Runtime model |
| --- | --- | --- | --- |
| `video:wan-2-7-text-to-video` | Wan 2.7 Text to Video | Wan 2.7 | wan/2-7-text-to-video |
| `video:wan-2-7-image-to-video` | Wan 2.7 Image to Video | Wan 2.7 | wan/2-7-image-to-video |
| `video:wan-2-7-video-edit` | Wan 2.7 Video Edit | Wan 2.7 | wan/2-7-videoedit |
| `video:wan-2-7-reference-to-video` | Wan 2.7 Reference to Video | Wan 2.7 | wan/2-7-r2v |
| `video:wan-2-6-text-to-video` | Wan 2.6 Text to Video | Wan 2.6 | wan/2-6-text-to-video |
| `video:wan-2-6-image-to-video` | Wan 2.6 Image to Video | Wan 2.6 | wan/2-6-image-to-video |
| `video:wan-2-6-video-to-video` | Wan 2.6 Video to Video | Wan 2.6 | wan/2-6-video-to-video |
| `video:wan-2-5-text-to-video` | Wan 2.5 Text to Video | Wan 2.5 | wan/2-5-text-to-video |
| `video:wan-2-5-image-to-video` | Wan 2.5 Image to Video | Wan 2.5 | wan/2-5-image-to-video |
| `video:wan-text-to-video` | Wan Text to Video | Wan | wan/2-2-a14b-text-to-video-turbo |
| `video:wan-image-to-video` | Wan Image to Video | Wan | wan/2-2-a14b-image-to-video-turbo |
| `video:wan-2-2-a14b-speech-to-video-turbo` | Wan 2.2 A14B Speech to Video Turbo | Wan | wan/2-2-a14b-speech-to-video-turbo |
| `video:wan-animate-move` | Wan Animate Move | Wan | wan/2-2-animate-move |
| `video:wan-animate-replace` | Wan Animate Replace | Wan | wan/2-2-animate-replace |
| `video:fal-fal-ai-wan-v2-7-text-to-video` | Wan 2.7 Text to Video | wan | fal-ai/wan/v2.7/text-to-video |
| `video:fal-fal-ai-wan-v2-7-image-to-video` | Wan 2.7 Image to Video | wan | fal-ai/wan/v2.7/image-to-video |
| `video:fal-fal-ai-wan-v2-7-reference-to-video` | Wan 2.7 Reference to Video | wan | fal-ai/wan/v2.7/reference-to-video |

## 1. Create generation task

### Endpoint

```http
POST https://localhost:3000/api/ai-studio/execute
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
```

### Request example

```json
{
  "modelId": "video:wan-2-7-text-to-video",
  "isPublic": true,
  "payload": {
    "model": "wan/2-7-text-to-video",
    "input": {
      "prompt": "A futuristic city street at night, neon reflections shimmering on the wet ground. The camera slowly pushes forward as a silver hover car glides in from the left. Giant holographic billboards flicker in the distance, creating a cinematic atmosphere.",
      "negative_prompt": "blurry, low quality, flicker, distorted characters",
      "audio_url": "https://your-domain.com/audio/custom-track.mp3",
      "resolution": "1080p",
      "ratio": "16:9",
      "duration": 5,
      "prompt_extend": true,
      "watermark": false,
      "seed": 123456
    }
  }
}
```

### Success response

```json
{
  "success": true,
  "data": {
    "modelId": "video:wan-2-7-text-to-video",
    "generationId": "generation-id",
    "reservedCredits": 20,
    "taskId": "provider-task-id",
    "state": "queued"
  }
}
```

## 2. Query task status

### Endpoint

```http
GET https://localhost:3000/api/ai-studio/tasks/{taskId}
Authorization: Bearer YOUR_API_KEY
```

### Success response

```json
{
  "success": true,
  "data": {
    "generationId": "generation-id",
    "taskId": "provider-task-id",
    "modelId": "video:wan-2-7-text-to-video",
    "state": "succeeded",
    "mediaUrls": [
      "https://example.com/result.mp4"
    ],
    "reservedCredits": 20,
    "refundedCredits": 0
  }
}
```

## Request fields

### Wan 2.7 Text to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-7-text-to-video"` | wan/2-7-text-to-video | The model name used for generation. This field is required. - This endpoint must use the `wan/2-7-text-to-video` model |
| `input` | object | Yes | `-` | - | Input parameters for the text-to-video task. |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `prompt` | string | Yes | `-` | - | Positive prompt. Minimum length: 1 character. Maximum length: 5000 characters. |
| `negative_prompt` | string | No | `-` | - | Negative prompt. Maximum length: 500 characters. |
| `audio_url` | string | No | `-` | - | Optional custom audio URL. |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Video resolution. - `720p`: 720p<br>- `1080p`: 1080p |
| `ratio` | enum | No | `"16:9"` | 16:9, 9:16, 1:1, 4:3, 3:4 | Video aspect ratio. - `16:9`: Landscape<br>- `9:16`: Portrait<br>- `1:1`: Square<br>- `4:3`: Landscape 4:3<br>- `3:4`: Portrait 3:4 |
| `duration` | number | No | `5` | - | Video duration in seconds. - Minimum: `2`<br>- Maximum: `15`<br>- Default: `5` |
| `prompt_extend` | boolean | No | `true` | - | Whether to enable intelligent prompt rewriting. Default value: `true`. |
| `watermark` | boolean | No | `false` | - | Whether to add an AI-generated watermark. Default value: `false`. |
| `seed` | number | No | `-` | - | Random seed. - Minimum: `0`<br>- Maximum: `2147483647` |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan 2.7 Image to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-7-image-to-video"` | wan/2-7-image-to-video | The model name used for generation. This field is required. This endpoint must use the `wan/2-7-image-to-video` model. |
| `input` | object | Yes | `-` | - | Input parameters for the image-to-video task. |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `prompt` | string | Yes | `-` | - | Positive prompt. Maximum length: 5000 characters. |
| `negative_prompt` | string | No | `-` | - | Negative prompt. Maximum length: 500 characters. |
| `first_frame_url` | string | No | `-` | - | First frame image URL. |
| `last_frame_url` | string | No | `-` | - | Last frame image URL. |
| `first_clip_url` | string | No | `-` | - | First clip video URL, used for video continuation. |
| `driving_audio_url` | string | No | `-` | - | Driving audio URL. |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Video resolution. - `720p`: 720p<br>- `1080p`: 1080p |
| `duration` | number | No | `5` | - | Total output video duration in seconds. - Minimum: `2`<br>- Maximum: `15`<br>- Default: `5` |
| `prompt_extend` | boolean | No | `true` | - | Whether to enable intelligent prompt rewriting. Default value: `true`. |
| `watermark` | boolean | No | `false` | - | Whether to add an AI-generated watermark. Default value: `false`. |
| `seed` | number | No | `-` | - | Random seed. - Minimum: `0`<br>- Maximum: `2147483647` |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan 2.7 Video Edit

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-7-videoedit"` | wan/2-7-videoedit | The model name used for generation. This field is required. This endpoint must use the `wan/2-7-videoedit` model. |
| `input` | object | Yes | `-` | - | Input parameters for the video editing task. |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `prompt` | string | No | `"Change the character's outfit and add the hat shown in the reference image."` | - | Optional text prompt describing the expected elements and visual features in the generated video. Supports Chinese and English. Maximum length: 5000 characters. |
| `negative_prompt` | string | No | `"low resolution, errors, worst quality, low quality, malformed, extra fingers, bad proportions"` | - | Optional negative prompt describing content that should not appear in the video. Supports Chinese and English. Maximum length: 500 characters. |
| `video_url` | string | Yes | `"https://example.com/demo/video.mp4"` | - | URL of the source video to edit. Required. Only one video is supported. - Formats: `mp4`, `mov`<br>- Duration: `2` to `10` seconds<br>- Resolution: width and height range `[240,4096]` pixels<br>- Aspect ratio: `1:8` to `8:1`<br>- File size: up to `100MB`<br>- Supports public `http/https` URLs or temporary `oss` URLs |
| `reference_image` | string | No | `"https://example.com/demo/reference.png"` | - | Optional reference image URL for character, clothing, or style guidance. - Formats: `JPEG`, `JPG`, `PNG` (no alpha channel), `BMP`, `WEBP`<br>- Resolution: width and height range `[240,8000]` pixels<br>- Aspect ratio: `1:8` to `8:1`<br>- Supports public `http/https` URLs or temporary `oss` URLs |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Output video resolution tier. `1080p` costs more than `720p`. Default value: `1080p`. - `720p`: 720p<br>- `1080p`: 1080p |
| `aspect_ratio` | enum | No | `"16:9"` | 16:9, 9:16, 1:1, 4:3, 3:4 | Output video aspect ratio. - If omitted: the output uses an aspect ratio close to the input video<br>- If provided: the output uses the specified aspect ratio<br>- Available values: `16:9`, `9:16`, `1:1`, `4:3`, `3:4` |
| `duration` | number | No | `0` | - | Output video duration in seconds. - Default `0` means using the full input video duration without truncation<br>- If a value is provided, the output is clipped from second `0` to the specified length<br>- Valid values are `0` or any integer in `[2,10]` |
| `audio_setting` | enum | No | `"auto"` | auto, origin | Video audio setting. - `auto`: default, the model decides whether to regenerate audio based on the `prompt`<br>- `origin`: force keeping the original input video audio |
| `prompt_extend` | boolean | No | `true` | - | Whether to enable prompt rewriting. When enabled, the model expands the input prompt. This usually works better for short prompts but increases processing time. |
| `watermark` | boolean | No | `false` | - | Whether to add a watermark. The watermark is placed in the lower-right corner of the video with the fixed text "AI generated". |
| `seed` | number | No | `0` | - | Random seed. Range: `0-2147483647`. If omitted, the system generates one automatically. |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan 2.7 Reference to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-7-r2v"` | wan/2-7-r2v | The model name used for generation. This field is required. This endpoint must use the `wan/2-7-r2v` model. |
| `input` | object | Yes | `-` | - | Input parameters for the reference-to-video task. |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `prompt` | string | Yes | `"Image 1 is eating, while video 1 and image 2 are singing beside it."` | - | Text prompt. Required. Describes the desired elements and visual features in the generated video. Supports Chinese and English. Maximum length: 5000 characters. |
| `negative_prompt` | string | No | `"low resolution, errors, worst quality, low quality, malformed, extra fingers, bad proportions"` | - | Optional negative prompt describing what should not appear in the video. Supports Chinese and English. Maximum length: 500 characters. |
| `reference_image` | string[] | No | `["https://example.com/demo/ref-image-1.png","https://example.com/demo/ref-image-2.png"]` | - | Array of reference image URLs. At least one of `reference_image` or `reference_video` must be provided. The total number of images and videos cannot exceed 5. |
| `reference_video` | string[] | No | `["https://example.com/demo/ref-video-1.mp4"]` | - | Array of reference video URLs. At least one of `reference_image` or `reference_video` must be provided. The total number of images and videos cannot exceed 5. |
| `first_frame` | string | No | `"https://example.com/demo/first-frame.png"` | - | First frame image URL. At most one image can be provided. If supplied, `aspect_ratio` is ignored and the output uses a ratio close to the first frame image. |
| `reference_voice` | string | No | `"https://example.com/demo/reference-voice.mp3"` | - | Audio URL used to specify the voice timbre of the subject in the reference material. Rules:<br>- If `reference_video` contains audio and `reference_voice` is not provided, the original video audio is used by default<br>- If both `reference_video` and `reference_voice` are provided, `reference_voice` takes priority Audio limits:<br>- Formats: `wav`, `mp3`<br>- Duration: `1` to `10` seconds<br>- File size: up to `15MB` |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Output video resolution tier. Available values: `720p`, `1080p`. Default value: `1080p`. |
| `aspect_ratio` | enum | No | `"16:9"` | 16:9, 9:16, 1:1, 4:3, 3:4 | Output video aspect ratio. Effective logic:<br>- If `first_frame` is not provided: the video is generated using the specified `aspect_ratio`<br>- If `first_frame` is provided: `aspect_ratio` is ignored and the output uses a ratio close to the first frame image |
| `duration` | number | No | `5` | - | Output video duration in seconds. Valid range is an integer from `2` to `10`. Default value: `5`. |
| `prompt_extend` | boolean | No | `true` | - | Whether to enable prompt rewriting. When enabled, the model expands the input prompt. This usually works better for short prompts but increases processing time. |
| `watermark` | boolean | No | `false` | - | Whether to add a watermark. The watermark is placed in the lower-right corner of the video with the fixed text "AI generated". |
| `seed` | number | No | `0` | - | Random seed. Range: `0-2147483647`. If omitted, the system generates one automatically. |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan 2.6 Text to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-6-text-to-video"` | wan/2-6-text-to-video | The model name to use for generation. Required field. - Must be `wan/2-6-text-to-video` for this endpoint |
| `input` | object | No | `-` | - | Input parameters for the generation task |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `prompt` | string | Yes | `"In a hyperrealistic ASMR video, a hand uses a knitted knife to slowly slice a burger made entirely of knitted wool. The satisfyingly crisp cut reveals a detailed cross-section of knitted meat, lettuce, and tomato slices. Captured in a close-up with a shallow depth of field, the scene is set against a stark, matte black surface. Cinematic lighting makes the surreal yarn textures shine with clear reflections. The focus is on the deliberate, satisfying motion and the unique, tactile materials."` | - | Text prompts for video generation. Supports both Chinese and English, with a minimum of 1 characters and a maximum of 5,000 characters. (Max length: 5000 characters) |
| `duration` | enum | No | `"5"` | 5, 10, 15 | The duration of the generated video in seconds |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Video resolution tier |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan 2.6 Image to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-6-image-to-video"` | wan/2-6-image-to-video | The model name to use for generation. Required field. - Must be `wan/2-6-image-to-video` for this endpoint |
| `input` | object | No | `-` | - | Input parameters for the generation task |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `prompt` | string | Yes | `"Anthopmopric fox singing a Christmas song at the rubbish dump in the rain."` | - | Text prompts for video generation. Supports both Chinese and English, with a minimum of 2 characters and a maximum of 5,000 characters. (Max length: 5000 characters) |
| `image_urls` | string[] | Yes | `["https://static.aiquickdraw.com/tools/example/1765957673717_awiBAidD.webp"]` | - | Upload an image file to use as input for the API (File URL after upload, not file content; Accepted types: image/jpeg, image/png, image/webp; Max size: 10.0MB),All images must be at least 256x256px. |
| `duration` | enum | No | `"5"` | 5, 10, 15 | The duration of the generated video in seconds |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Video resolution tier |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan 2.6 Video to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-6-video-to-video"` | wan/2-6-video-to-video | The model name to use for generation. Required field. - Must be `wan/2-6-video-to-video` for this endpoint |
| `input` | object | No | `-` | - | Input parameters for the generation task |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `prompt` | string | Yes | `"The video drinks milk tea while doing some improvised dance moves to the music."` | - | Text prompts for video generation. Supports both Chinese and English, with a minimum of 2 characters and a maximum of 5,000 characters. (Max length: 5000 characters) |
| `video_urls` | string[] | Yes | `["https://static.aiquickdraw.com/tools/example/1765957777782_cNJpvhRx.mp4"]` | - | The URL of the image used to generate video (File URL after upload, not file content; Accepted types: video/mp4, video/quicktime, video/x-matroska; Max size: 10.0MB) |
| `duration` | enum | No | `"5"` | 5, 10 | The duration of the generated video in seconds |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Video resolution tier |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan 2.5 Text to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-5-text-to-video"` | wan/2-5-text-to-video | The model name used for generation. This field is required. - This endpoint must use the `wan/2-5-text-to-video` model |
| `input` | object | Yes | `-` | - | Input parameters for the text-to-video task. |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `prompt` | string | Yes | `"A dimly lit jazz bar at night, wooden tables glowing under warm pendant lights. Patrons sip drinks and chat quietly while a three-piece band performs on stage. The saxophone player stands under a spotlight, gleaming instrument reflecting the light. No dialogue. Ambient audio: smooth live jazz music with saxophone and piano, clinking glasses, low murmur of audience conversations, occasional burst of laughter from a nearby table. Camera: slow pan across the crowd, then gentle zoom toward the saxophone player's solo, focusing on expressive hand movements."` | - | The text prompt for video generation. Supports Chinese and English. Maximum length: 800 characters. |
| `duration` | enum | Yes | `"5"` | 5, 10 | The duration of the generated video in seconds. - `5`: 5 seconds<br>- `10`: 10 seconds |
| `aspect_ratio` | enum | No | `"16:9"` | 16:9, 9:16, 1:1 | The aspect ratio of the generated video. - `16:9`: Landscape<br>- `9:16`: Portrait<br>- `1:1`: Square |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Video resolution tier. - `720p`: 720p<br>- `1080p`: 1080p |
| `negative_prompt` | string | No | `-` | - | Negative prompt used to describe content to avoid. Maximum length: 500 characters. |
| `enable_prompt_expansion` | boolean | No | `true` | - | Whether to enable prompt rewriting using LLM. Improves results for short prompts but increases processing time. - Boolean value: `true` / `false` |
| `seed` | number | No | `-` | - | Random seed for reproducibility. If omitted, a random seed is chosen. |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan 2.5 Image to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-5-image-to-video"` | wan/2-5-image-to-video | The model name used for generation. This field is required. - This endpoint must use the `wan/2-5-image-to-video` model |
| `input` | object | Yes | `-` | - | Input parameters for the image-to-video task. |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `prompt` | string | Yes | `"The same woman from the reference image looks directly into the camera, takes a breath, then smiles brightly and speaks with enthusiasm: \"Have you heard? Alibaba Wan 2.5 API is now available on AI Studio!\" Ambient audio: quiet indoor atmosphere, soft natural room tone. Camera: medium close-up, steady framing, natural daylight mood, accurate lip-sync with dialogue."` | - | The text prompt describing the desired video motion. Maximum length: 800 characters. |
| `image_url` | string | Yes | `"https://file.aiquickdraw.com/custom-page/akr/section-images/1758796480945qb63zxq8.webp"` | - | URL of the image to use as the first frame. Must be publicly accessible. - Please provide the URL of the uploaded file, not raw file content<br>- Accepted types: `image/jpeg`, `image/png`, `image/webp`<br>- Max size: 10.0MB |
| `duration` | enum | Yes | `"5"` | 5, 10 | The duration of the generated video in seconds. - `5`: 5 seconds<br>- `10`: 10 seconds |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Video resolution. Valid values: `720p`, `1080p`. |
| `negative_prompt` | string | No | `-` | - | Negative prompt used to describe content to avoid. Maximum length: 500 characters. |
| `enable_prompt_expansion` | boolean | No | `true` | - | Whether to enable prompt rewriting using LLM. - Boolean value: `true` / `false` |
| `seed` | number | No | `-` | - | Random seed for reproducibility. If omitted, a random seed is chosen. |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan Text to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-2-a14b-text-to-video-turbo"` | wan/2-2-a14b-text-to-video-turbo | The model name to use for generation. Required field. - Must be `wan/2-2-a14b-text-to-video-turbo` for this endpoint |
| `input` | object | No | `-` | - | Input parameters for the generation task |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `prompt` | string | Yes | `"Drone shot, fast traversal, starting inside a cracked, frosty circular pipe. The camera bursts upward through the pipe to reveal a vast polar landscape bathed in golden sunrise light. Workers in orange suits operate steaming machinery. The camera tilts up, revealing the scene from the perspective of a rising hot air balloon. It continues ascending into a glowing sky, the balloon trailing steam and displaying the letters \"AI Studio\" as it rises into breathtaking polar majesty."` | - | The text prompt to guide video generation. (Max length: 5000 characters) |
| `resolution` | enum | No | `"720p"` | 480p, 720p | Resolution of the generated video (480p or 720p). Default value: "720p" |
| `aspect_ratio` | enum | No | `"16:9"` | 16:9, 9:16 | Aspect ratio of the generated video (16:9 or 9:16). Default value: "16:9" |
| `enable_prompt_expansion` | boolean | No | `false` | - | Whether to enable prompt expansion. This will use a large language model to expand the prompt with additional details while maintaining the original meaning. (Boolean value (true/false)) |
| `seed` | number | No | `0` | - | Random seed for reproducibility. If None, a random seed is chosen. (Min: 0, Max: 2147483647, Step: 1) (step: 1) |
| `acceleration` | enum | No | `"none"` | none, regular | Acceleration level to use. The more acceleration, the faster the generation, but with lower quality. The recommended value is 'none'. Default value: "none" |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan Image to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-2-a14b-image-to-video-turbo"` | wan/2-2-a14b-image-to-video-turbo | The model name to use for generation. Required field. - Must be `wan/2-2-a14b-image-to-video-turbo` for this endpoint |
| `input` | object | No | `-` | - | Input parameters for the generation task |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `image_url` | string | Yes | `"https://file.aiquickdraw.com/custom-page/akr/section-images/1755166042585gtf2mlrk.png"` | - | URL of the input image. If the input image does not match the chosen aspect ratio, it is resized and center cropped. (File URL after upload, not file content; Accepted types: image/jpeg, image/png, image/webp; Max size: 10.0MB) |
| `prompt` | string | Yes | `"Overcast lighting, medium lens, soft lighting, low contrast lighting, edge lighting, low angle shot, desaturated colors, medium close-up shot, clean single shot, cool colors, center composition.The camera captures a low-angle close-up of a Western man outdoors, sharply dressed in a black coat over a gray sweater, white shirt, and black tie. His gaze is fixed on the lens as he advances. In the background, a brown building looms, its windows glowing with warm, yellow light above a dark doorway. As the camera pushes in, a blurred black object on the right side of the frame drifts back and forth, partially obscuring the view against a dark, nighttime background."` | - | The text prompt to guide video generation. (Max length: 5000 characters) |
| `resolution` | enum | No | `"720p"` | 480p, 720p | Resolution of the generated video (480p or 720p). Default value: "720p" |
| `enable_prompt_expansion` | boolean | No | `false` | - | Whether to enable prompt expansion. This will use a large language model to expand the prompt with additional details while maintaining the original meaning. (Boolean value (true/false)) |
| `seed` | number | No | `0` | - | Random seed for reproducibility. If None, a random seed is chosen. (Min: 0, Max: 2147483647, Step: 1) (step: 1) |
| `acceleration` | enum | No | `"none"` | none, regular | Acceleration level to use. The more acceleration, the faster the generation, but with lower quality. The recommended value is 'none'. Default value: "none" |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan 2.2 A14B Speech to Video Turbo

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-2-a14b-speech-to-video-turbo"` | wan/2-2-a14b-speech-to-video-turbo | The model name to use for generation. Required field. - Must be `wan/2-2-a14b-speech-to-video-turbo` for this endpoint |
| `input` | object | No | `-` | - | Input parameters for the generation task |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `prompt` | string | Yes | `"The lady is talking"` | - | The text prompt used for video generation (Max length: 5000 characters) |
| `image_url` | string | Yes | `"https://file.aiquickdraw.com/custom-page/akr/section-images/1756797663082u4pjmcrq.png"` | - | URL of the input image. If the input image does not match the chosen aspect ratio, it is resized and center cropped (File URL after upload, not file content; Accepted types: image/jpeg, image/png, image/webp; Max size: 10.0MB) |
| `audio_url` | string | Yes | `"https://file.aiquickdraw.com/custom-page/akr/section-images/17567977044127d1emlmc.mp3"` | - | The URL of the audio file (File URL after upload, not file content; Accepted types: audio/mp3, audio/wav, audio/ogg, audio/m4a, audio/flac, audio/aac, audio/x-ms-wma, audio/mpeg; Max size: 10.0MB) |
| `num_frames` | number | No | `80` | - | Number of frames to generate. Must be between 40 to 120, (must be multiple of 4) (Min: 40, Max: 120, Step: 4) (step: 4) |
| `frames_per_second` | number | No | `16` | - | Frames per second of the generated video. Must be between 4 to 60. When using interpolation and adjust_fps_for_interpolation is set to true (default true,) the final FPS will be multiplied by the number of interpolated frames plus one. For example, if the generated frames per second is 16 and the number of interpolated frames is 1, the final frames per second will be 32. If adjust_fps_for_interpolation is set to false, this value will be used as-is (Min: 4, Max: 60, Step: 1) (step: 1) |
| `resolution` | enum | No | `"480p"` | 480p, 580p, 720p | Resolution of the generated video (480p, 580p, or 720p) |
| `negative_prompt` | string | No | `""` | - | Negative prompt for video generation (Max length: 500 characters) |
| `seed` | number | No | `-` | - | Random seed for reproducibility. If None, a random seed is chosen |
| `num_inference_steps` | number | No | `27` | - | Number of inference steps for sampling. Higher values give better quality but take longer (Min: 2, Max: 40, Step: 1) (step: 1) |
| `guidance_scale` | number | No | `3.5` | - | Classifier-free guidance scale. Higher values give better adherence to the prompt but may decrease quality (Min: 1, Max: 10, Step: 0.1) (step: 0.1) |
| `shift` | number | No | `5` | - | Shift value for the video. Must be between 1.0 and 10.0 (Min: 1, Max: 10, Step: 0.1) (step: 0.1) |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan Animate Move

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-2-animate-move"` | wan/2-2-animate-move | The model name to use for generation. Required field. - Must be `wan/2-2-animate-move` for this endpoint |
| `input` | object | No | `-` | - | Input parameters for the generation task |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `video_url` | string | Yes | `"https://file.aiquickdraw.com/custom-page/akr/section-images/17586254974931y2hottk.mp4"` | - | URL of the input video. (File URL after upload, not file content; Accepted types: video/mp4, video/quicktime, video/x-matroska; Max size: 10.0MB) |
| `image_url` | string | Yes | `"https://file.aiquickdraw.com/custom-page/akr/section-images/1758625466310wpehpbnf.png"` | - | URL of the input image. If the input image does not match the chosen aspect ratio, it is resized and center cropped. (File URL after upload, not file content; Accepted types: image/jpeg, image/png, image/webp; Max size: 10.0MB) |
| `resolution` | enum | No | `"480p"` | 480p, 580p, 720p | Resolution of the generated video (480p, 580p, or 720p). |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan Animate Replace

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `model` | enum | Yes | `"wan/2-2-animate-replace"` | wan/2-2-animate-replace | The model name to use for generation. Required field. - Must be `wan/2-2-animate-replace` for this endpoint |
| `input` | object | No | `-` | - | Input parameters for the generation task |

#### Input fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `video_url` | string | Yes | `"https://file.aiquickdraw.com/custom-page/akr/section-images/17586199429271xscyd5d.mp4"` | - | URL of the input video. (File URL after upload, not file content; Accepted types: video/mp4, video/quicktime, video/x-matroska; Max size: 10.0MB) |
| `image_url` | string | Yes | `"https://file.aiquickdraw.com/custom-page/akr/section-images/17586199255323tks43kq.png"` | - | URL of the input image. If the input image does not match the chosen aspect ratio, it is resized and center cropped. (File URL after upload, not file content; Accepted types: image/jpeg, image/png, image/webp; Max size: 10.0MB) |
| `resolution` | enum | No | `"480p"` | 480p, 580p, 720p | Resolution of the generated video (480p, 580p, or 720p). |
| `nsfw_checker` | boolean | No | `-` | - | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself.<br>Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |

### Wan 2.7 Text to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `seed` | object | No | `-` | - | Random seed for reproducibility (0-2147483647). |
| `enable_prompt_expansion` | boolean | No | `true` | - | Enable intelligent prompt rewriting. |
| `audio_url` | object | No | `-` | - | URL of driving audio. Supports WAV and MP3. Duration: 3-30s. Max 15 MB. If not provided, the model auto-generates matching background music. |
| `duration` | enum | No | `5` | 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 | Output video duration in seconds (2-15). |
| `prompt` | string | Yes | `"A kitten running in a meadow, cinematic lighting, smooth camera movement."` | - | Text prompt describing the desired video. Max 5000 characters. |
| `enable_safety_checker` | boolean | No | `true` | - | Enable content moderation for input and output. |
| `aspect_ratio` | enum | No | `"16:9"` | 16:9, 9:16, 1:1, 4:3, 3:4 | Aspect ratio of the generated video. |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Output video resolution tier. |
| `negative_prompt` | object | No | `"low resolution, errors, worst quality, low quality"` | - | Content to avoid in the video. Max 500 characters. |

#### Input fields

_No fields are configured for this model._

### Wan 2.7 Image to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `enable_prompt_expansion` | boolean | No | `true` | - | Enable intelligent prompt rewriting. |
| `seed` | object | No | `-` | - | Random seed for reproducibility (0-2147483647). |
| `duration` | enum | No | `5` | 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 | Output video duration in seconds (2-15). |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Output video resolution tier. |
| `negative_prompt` | object | No | `"low resolution, errors, worst quality, low quality, incomplete, extra fingers, bad proportions, blurry, distorted"` | - | Content to avoid in the video. Max 500 characters. |
| `end_image_url` | object | No | `-` | - | URL of the last frame image for first-and-last-frame-to-video. Same constraints as image_url. |
| `audio_url` | object | No | `-` | - | URL of driving audio. Supports WAV and MP3. Duration: 2-30s. Max 15 MB. |
| `prompt` | object | No | `"The massive humpback whale glides slowly through the deep blue water. It turns gracefully, its huge pectoral fin sweeping through the water like a wing. Sunbeams penetrate from above, illuminating the whale's textured skin. Small fish scatter. Awe-inspiring scale and grace."` | - | Text prompt describing the desired video. Max 5000 characters. |
| `image_url` | object | No | `"https://v3b.fal.media/files/b/0a9413bb/qH6QY4JRzWxHOFKtCe70S_uPDJyzKZ.png"` | - | URL of the first frame image. Formats: JPEG, JPG, PNG, BMP, WEBP. Max 20 MB. |
| `video_url` | object | No | `-` | - | URL of a video clip to continue from. Format: MP4, MOV. Duration: 2-10s. Max 100 MB. Cannot be combined with image_url. |
| `enable_safety_checker` | boolean | No | `true` | - | Enable content moderation for input and output. |

#### Input fields

_No fields are configured for this model._

### Wan 2.7 Reference to Video

#### Payload fields

| Field | Type | Required | Default / Example | Options | Description |
| --- | --- | --- | --- | --- | --- |
| `reference_video_urls` | object | No | `-` | - | Reference video URLs for character/object appearance and motion. Pass multiple videos for multi-subject generation. Max 100 MB each. |
| `negative_prompt` | object | No | `"low resolution, errors, worst quality, low quality"` | - | Content to avoid in the video. Max 500 characters. |
| `aspect_ratio` | enum | No | `"16:9"` | 16:9, 9:16, 1:1, 4:3, 3:4 | Aspect ratio of the generated video. |
| `prompt` | string | Yes | `"A person walking through a beautiful garden, cinematic style."` | - | Text prompt describing the desired video. Max 5000 characters. |
| `multi_shots` | boolean | No | `false` | - | When true, enables intelligent multi-shot segmentation. When false (default), generates a single continuous shot. |
| `seed` | object | No | `-` | - | Random seed for reproducibility (0-2147483647). |
| `resolution` | enum | No | `"1080p"` | 720p, 1080p | Output video resolution tier. |
| `reference_image_urls` | object | No | `-` | - | Reference image URLs for character/object appearance. Pass multiple images for multi-subject generation. Max 20 MB each. |
| `duration` | enum | No | `5` | 2, 3, 4, 5, 6, 7, 8, 9, 10 | Output video duration in seconds (2-10). |
| `enable_safety_checker` | boolean | No | `true` | - | Enable content moderation for input and output. |

#### Input fields

_No fields are configured for this model._

## Pricing

Credits are reserved when a generation task is created. The `reservedCredits` value in the create-task response is the final amount reserved for that request.

| Model | Type | Spec | Price | Billing |
| --- | --- | --- | --- | --- |
| Wan 2.7 Text to Video | Text to Video | 720p | 16 credits/s | Output seconds × 16 |
| Wan 2.7 Text to Video | Text to Video | 1080p | 24 credits/s | Output seconds × 24 |
| Wan 2.7 Image to Video | Image to Video | 720p | 16 credits/s | Output seconds × 16 |
| Wan 2.7 Image to Video | Image to Video | 1080p | 24 credits/s | Output seconds × 24 |
| Wan 2.7 Video Edit | Text/Image to Video | 720p | 16 credits/s | Output seconds × 16 |
| Wan 2.7 Video Edit | Text/Image to Video | 1080p | 24 credits/s | Output seconds × 24 |
| Wan 2.7 Reference to Video | Text/Image to Video | 720p | 16 credits/s | Output seconds × 16 |
| Wan 2.7 Reference to Video | Text/Image to Video | 1080p | 24 credits/s | Output seconds × 24 |
| Wan 2.6 Text to Video | Text to Video | 720p | 70 credits | Fixed per generation |
| Wan 2.6 Text to Video | Text to Video | 720p | 140 credits | Fixed per generation |
| Wan 2.6 Text to Video | Text to Video | 720p | 210 credits | Fixed per generation |
| Wan 2.6 Text to Video | Text to Video | 1080p | 105 credits | Fixed per generation |
| Wan 2.6 Text to Video | Text to Video | 1080p | 210 credits | Fixed per generation |
| Wan 2.6 Text to Video | Text to Video | 1080p | 315 credits | Fixed per generation |
| Wan 2.6 Image to Video | Image to Video | 720p | 70 credits | Fixed per generation |
| Wan 2.6 Image to Video | Image to Video | 720p | 140 credits | Fixed per generation |
| Wan 2.6 Image to Video | Image to Video | 720p | 210 credits | Fixed per generation |
| Wan 2.6 Image to Video | Image to Video | 1080p | 105 credits | Fixed per generation |
| Wan 2.6 Image to Video | Image to Video | 1080p | 210 credits | Fixed per generation |
| Wan 2.6 Image to Video | Image to Video | 1080p | 315 credits | Fixed per generation |
| Wan 2.6 Video to Video | Text/Image to Video | 720p | 70 credits | Fixed per generation |
| Wan 2.6 Video to Video | Text/Image to Video | 720p | 140 credits | Fixed per generation |
| Wan 2.6 Video to Video | Text/Image to Video | 1080p | 105 credits | Fixed per generation |
| Wan 2.6 Video to Video | Text/Image to Video | 1080p | 210 credits | Fixed per generation |
| Wan 2.5 Text to Video | Text to Video | 720p | 12 credits/s | Output seconds × 12 |
| Wan 2.5 Text to Video | Text to Video | 1080p | 20 credits/s | Output seconds × 20 |
| Wan 2.5 Image to Video | Image to Video | 720p | 12 credits/s | Output seconds × 12 |
| Wan 2.5 Image to Video | Image to Video | 1080p | 20 credits/s | Output seconds × 20 |
| Wan Text to Video | Text to Video | 480p | 8 credits | Fixed per generation |
| Wan Text to Video | Text to Video | 720p | 16 credits | Fixed per generation |
| Wan Image to Video | Image to Video | 480p | 8 credits | Fixed per generation |
| Wan Image to Video | Image to Video | 720p | 16 credits | Fixed per generation |
| Wan 2.2 A14B Speech to Video Turbo | Text/Image to Video | 480p | 12 credits/s | Output seconds × 12 |
| Wan 2.2 A14B Speech to Video Turbo | Text/Image to Video | 580p | 18 credits/s | Output seconds × 18 |
| Wan 2.2 A14B Speech to Video Turbo | Text/Image to Video | 720p | 24 credits/s | Output seconds × 24 |
| Wan Animate Move | Text/Image to Video | 480p | 6 credits | Fixed per generation |
| Wan Animate Move | Text/Image to Video | 580p | 10 credits | Fixed per generation |
| Wan Animate Move | Text/Image to Video | 720p | 13 credits | Fixed per generation |
| Wan Animate Replace | Text/Image to Video | 480p | 6 credits | Fixed per generation |
| Wan Animate Replace | Text/Image to Video | 580p | 10 credits | Fixed per generation |
| Wan Animate Replace | Text/Image to Video | 720p | 13 credits | Fixed per generation |
| Wan 2.7 Text to Video | Text to Video | 720p | 20 credits/s | Output seconds × 20 |
| Wan 2.7 Text to Video | Text to Video | 1080p | 30 credits/s | Output seconds × 30 |
| Wan 2.7 Image to Video | Image to Video | 720p | 20 credits/s | Output seconds × 20 |
| Wan 2.7 Image to Video | Image to Video | 1080p | 30 credits/s | Output seconds × 30 |
| Wan 2.7 Reference to Video | Text/Image to Video | - | 20 credits/s | Output seconds × 20 |

## Common errors

| Status | Meaning |
| --- | --- |
| `400` | Invalid request payload |
| `401` | Missing or invalid API key |
| `402` | Insufficient credits or plan limit |
| `404` | Model or task not found |
| `429` | Rate limit exceeded |
| `500` | Server error |
