# Wan v2.2 5B · Image to Video API

> Wan 2.2 5B 图生视频，支持灵活帧数、580p 或 720p，以及帧插值

根据文本 `prompt` 为图像（`image_url`）制作动画。`num_frames` 范围为 17 到 161，`frames_per_second` 范围为 4 到 60，分辨率为 580p 或 720p。宽高比可为 auto、16:9、9:16 或 1:1。帧插值可使用 film 或 rife，每对帧之间增加 0 到 4 帧，`video_quality` 和 `video_write_mode` 控制编码。

- Model id: `wan/v2.2-5b/image-to-video`
- Made by: Alibaba
- Category: Image to Video
- Output: video
- Price: $0.15 / video (cheapest run $0.15 (150 API credits))
- Run: `POST https://api.doitong.ru/v1/run/wan/v2.2-5b/image-to-video`
- Quote: `POST https://api.doitong.ru/v1/quote/wan/v2.2-5b/image-to-video`
- Docs page: https://doitong.com/zh/developers/models/wan/v2.2-5b/image-to-video

## Pricing

Price: **$0.15 / video**. Billed once per generated video.

The full example input below costs $0.15 = 150 API credits (1 video × 150 API credits).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.ru/v1/quote/wan/v2.2-5b/image-to-video` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

Send either the canonical name or the native field name (not both). Canonical names are the same across models.

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `image_url` | `image` | string (image URL) | yes |  |  | 源图像 URL；所选宽高比决定是否需要预处理：不匹配时会先调整大小，再进行中心裁剪。 |
| `prompt` |  | string | yes |  |  | 指导视频生成的文本指令。 |
| `num_frames` |  | integer | no | `81` | 17 – 161 | 生成所用的帧数，范围为 17–161（含边界）。 |
| `frames_per_second` |  | integer \| null | no | `24` | 4 – 60 | 生成视频的帧率，接受 4 到 60 的值；将 `adjust_fps_for_interpolation` 设置为 false 可保持该帧率不变。使用插帧且 `adjust_fps_for_interpolation` 为 true（其默认值）时，将此帧率乘以插入帧数加一，即可得到最终 FPS。例如，16 FPS 插入 1 帧后变为 32 FPS。 |
| `negative_prompt` |  | string | no | `` |  | 生成视频时应用的负面提示词。 |
| `seed` |  | integer \| null | no |  |  | 使生成结果可复现的种子。设置为 None 时会随机选择种子。 |
| `resolution` |  | enum (string) | no | `720p` | `580p`, `720p` | 输出视频分辨率，可选择 580p 或 720p。 |
| `aspect_ratio` |  | enum (string) | no | `auto` | `auto`, `16:9`, `9:16`, `1:1` | 生成视频的比例；设为 'auto' 时根据输入图像自动选择。 |
| `num_inference_steps` |  | integer | no | `40` | 2 – 50 | 采样步数；步数越多，处理时间越长，质量越高。 |
| `enable_safety_checker` |  | boolean | no | `false` |  | 处理前的输入安全筛查，仅授权账户可以关闭。缺少授权的请求始终会被筛查；否则，true 会启用筛查。 |
| `enable_output_safety_checker` |  | boolean | no | `false` |  | 控制对生成视频的安全筛查；设置为 true 会在生成后执行检查。 |
| `enable_prompt_expansion` |  | boolean | no | `false` |  | 允许大语言模型使用细节丰富提示词。启用此扩展不会改变提示词的含义。 |
| `guidance_scale` |  | number | no | `3.5` | 1 – 10 | 无分类器引导强度；比例越高，越倾向于匹配提示词，但可能损失质量。 |
| `shift` |  | number | no | `5` | 1 – 10 | 视频位移设置，允许范围为 1.0–10.0。 |
| `interpolator_model` |  | enum (string) | no | `film` | `none`, `film`, `rife` | 帧插值设置：选择 None 跳过插值，或指定执行插值的模型。 |
| `num_interpolated_frames` |  | integer | no | `0` | 0 – 4 | 在每两个生成帧之间的间隔中插入 0–4 个插值帧。 |
| `adjust_fps_for_interpolation` |  | boolean | no | `true` |  | 帧率调整开关：false 保持提供的 FPS，true 将其乘以插值帧数加一。因此，启用调整并插入 1 帧时，16 FPS 会变为 32 FPS。 |
| `video_quality` |  | enum (string) | no | `high` | `low`, `medium`, `high`, `maximum` | 输出视频质量设置；值越高，文件越大，画面效果越好。 |
| `video_write_mode` |  | enum (string) | no | `balanced` | `fast`, `balanced`, `small` | 视频写入模式。balanced 在速度和质量之间提供折中。选择 small 可获得最小文件和最慢写入速度；更快的写入会更早返回结果，但生成的文件更大。 |

File parameters (`image`) take a public `https://` URL, a `data:` URI up to 10 MB, or the `file_url` of an upload from `POST /files`.

## Example input

Required parameters only:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
  "image": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

A fuller example:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
  "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/wan/v2.2-5b/image-to-video?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.ru/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/wan/v2.2-5b/image-to-video?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/wan/v2.2-5b/image-to-video", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.ru/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "wan/v2.2-5b/image-to-video",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
        "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "wan/v2.2-5b/image-to-video",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 150,
    "usd": "0.15",
    "charged": 150,
    "refunded": 0
  },
  "input": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  },
  "output": {
    "video": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_name": "0-output.mp4",
      "file_size": 1843200
    },
    "prompt": "The white dragon warrior stands still, eyes full of determination and strength. The camera slowly moves closer or circles around the warrior, highlighting the powerful presence and heroic spirit of the character.",
    "seed": 42
  },
  "outputs": [
    {
      "type": "video",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_size": 1843200,
      "width": 1280,
      "height": 720,
      "duration": 5,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `video` | object {url, content_type, file_name, file_size} | 生成得到的视频文件。 |
| `prompt` | string | 用于生成视频的文本提示词。 |
| `seed` | integer | 生成期间应用的种子值。 |

## Related models

- [Wan · v2.2 5b · Text to Image](https://doitong.com/developers/models/wan/v2.2-5b/text-to-image.md) (`wan/v2.2-5b/text-to-image`): $0.016 / image
- [Wan v2.2 5B · Text to Video](https://doitong.com/developers/models/wan/v2.2-5b/text-to-video.md) (`wan/v2.2-5b/text-to-video`): $0.15 / video
- [Wan · v2.2 5b · Text to Video · Distill](https://doitong.com/developers/models/wan/v2.2-5b/text-to-video/distill.md) (`wan/v2.2-5b/text-to-video/distill`): $0.08 / video
- [Wan 3.0 Image to Video](https://doitong.com/developers/models/alibaba/wan-3.0/image-to-video.md) (`alibaba/wan-3.0/image-to-video`): from $0.05 / second
- [FLUX 3 Max Image to Video](https://doitong.com/developers/models/blackforestlabs/flux-3-max/image-to-video.md) (`blackforestlabs/flux-3-max/image-to-video`): from $0.0425 / second of output video
- [Grok Imagine Video 1.5 Image to Video](https://doitong.com/developers/models/xai/grok-imagine-video/v1.5/image-to-video.md) (`xai/grok-imagine-video/v1.5/image-to-video`): from $0.082 / second
- [Kling 3.0 Pro Image to Video](https://doitong.com/developers/models/kling-video/v3/pro/image-to-video.md) (`kling-video/v3/pro/image-to-video`): from $0.112 / second
- [LTX 2.5 Pro Image to Video](https://doitong.com/developers/models/lightricks/ltx-2.5/image-to-video/pro.md) (`lightricks/ltx-2.5/image-to-video/pro`): from $0.12 / second

## Links

- HTML page: https://doitong.com/developers/models/wan/v2.2-5b/image-to-video
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=wan/v2.2-5b/image-to-video
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/wan/v2.2-5b/image-to-video
