# Wan v2.2 A14B API

> 将一张静态图像制作成视频片段，支持可选末帧、帧插值和详细采样控制

将单个 `image_url` 和文本提示词转换为视频，可选的 `end_image_url` 可设置末帧。输出分辨率为 480p、580p 或 720p，画面比例可选 auto、16:9、9:16 或 1:1，帧数为 17 到 161，帧率为 4 到 60 帧每秒。可通过推理步数、两个引导强度、shift、负面提示词和种子调整采样。可使用 film 或 rife 选项进行插帧。

- Model id: `wan/v2.2-a14b/image-to-video`
- Made by: Alibaba
- Category: Image to Video
- Output: video
- Price per second of your output video: from $0.04 / second of output video (cheapest run $0.04 (40 API credits))
- Run: `POST https://api.doitong.ru/v1/run/wan/v2.2-a14b/image-to-video`
- Quote: `POST https://api.doitong.ru/v1/quote/wan/v2.2-a14b/image-to-video`
- Docs page: https://doitong.com/zh/developers/models/wan/v2.2-a14b/image-to-video

## Pricing

Price: **from $0.04 / second of output video** (the lowest tier; the quote prices your exact input). Price per second of your output video: the input files are measured before the run (length, resolution, frame rate). The quote measures the same files and is exactly what the run charges.

Price by tier:

- 480p: $0.04 / second of output video
- 580p: $0.06 / second of output video
- 720p: $0.08 / second of output video

The full example input below costs $0.405 = 405 API credits (5.0625 s output video × $0.08 (720p)).

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-a14b/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 | `16` | 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` | `480p`, `580p`, `720p` | 输出视频分辨率：480p、580p 或 720p。 |
| `aspect_ratio` |  | enum (string) | no | `auto` | `auto`, `16:9`, `9:16`, `1:1` | 生成视频的比例；设为 'auto' 时根据输入图像自动选择。 |
| `num_inference_steps` |  | integer | no | `27` | 2 – 40 | 采样步数；步数越多，处理时间越长，质量越高。 |
| `enable_safety_checker` |  | boolean | no | `false` |  | 处理前的输入安全筛查，仅授权账户可以关闭。缺少授权的请求始终会被筛查；否则，true 会启用筛查。 |
| `enable_output_safety_checker` |  | boolean | no | `false` |  | 控制对生成视频的安全筛查；设置为 true 会在生成后执行检查。 |
| `enable_prompt_expansion` |  | boolean | no | `false` |  | 允许大语言模型使用细节丰富提示词。启用此扩展不会改变提示词的含义。 |
| `acceleration` |  | enum (string) | no | `regular` | `none`, `regular` | 加速设置，建议选择 'regular'。提高加速程度会牺牲质量以缩短生成时间。 |
| `guidance_scale` |  | number | no | `3.5` | 1 – 10 | 无分类器引导强度；比例越高，越倾向于匹配提示词，但可能损失质量。 |
| `guidance_scale_2` |  | 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 | `1` | 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 可获得最小文件和最慢写入速度；更快的写入会更早返回结果，但生成的文件更大。 |
| `end_image_url` | `end_image` | string (image URL) \| null | no |  |  | 指向结束图像的 URL。 |

File parameters (`image`, `end_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-a14b/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-a14b/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-a14b/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-a14b/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-a14b/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": 405,
    "usd": "0.405",
    "charged": 405,
    "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 A14b · Text to Image](https://doitong.com/developers/models/wan/v2.2-a14b/text-to-image.md) (`wan/v2.2-a14b/text-to-image`): $0.025 / image
- [Wan-2.2 Text-to-Video A14B](https://doitong.com/developers/models/wan/v2.2-a14b/text-to-video.md) (`wan/v2.2-a14b/text-to-video`): from $0.04 / second of output video
- [Wan · v2.2 A14b · Video to Video](https://doitong.com/developers/models/wan/v2.2-a14b/video-to-video.md) (`wan/v2.2-a14b/video-to-video`): from $0.04 / second of output video
- [Wan-2.2 Speech-to-Video 14B](https://doitong.com/developers/models/wan/v2.2-14b/speech-to-video.md) (`wan/v2.2-14b/speech-to-video`): from $0.10 / second of output 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

## Links

- HTML page: https://doitong.com/developers/models/wan/v2.2-a14b/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-a14b/image-to-video
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/wan/v2.2-a14b/image-to-video
