# Wan v2.2 A14B API

> Animescha in maletg fix en in clip, cun frame final, interpolaziun da frames e controlls da sampling detagliads opzional

Converta in `image_url` singul ed in prompt textual en in video; in `end_image_url` opzional po definir il frame final. L’output è 480p, 580p u 720p en auto, 16:9, 9:16 u 1:1, cun 17 a 161 frames e 4 a 60 frames per secunda. Il sampling po vegnir reglà cun pass d’inferenza, duas guidance scales, shift, in negative prompt ed ina semenza. L’interpolaziun da frames è disponibla cun las opziuns film u 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/rm/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 dal maletg da funtauna; la relaziun d'aspect tschernida determinescha sche in pre-processament è necessari: ina divergenza chaschuna in redimensiunament suandà d'in tagl central. |
| `prompt` |  | string | yes |  |  | Instrucziuns textualas che guidan la generaziun video. |
| `num_frames` |  | integer | no | `81` | 17 – 161 | Dumber da frames per la generaziun, cun in interval inclusiv da 17–161. |
| `frames_per_second` |  | integer \| null | no | `16` | 4 – 60 | Frequentaziun da frames dal video generà, cun valurs da 4 fin 60; definir `adjust_fps_for_interpolation` a false mantegna questa frequentaziun senza midada. Cun interpolaziun activa e `adjust_fps_for_interpolation` true (ses standard), multiplitgar questa frequentaziun per in plus il dumber da frames interpolads per obtegnair la FPS finala. Per exempel, 16 FPS cun 1 frame interpolà daventan 32 FPS. |
| `negative_prompt` |  | string | no | `` |  | Prompt negativ applitgà durant la generaziun d'in video. |
| `seed` |  | integer \| null | no |  |  | Seed che renda la generaziun reproducibla. Cun definir None vegn tschernì in seed casualmain. |
| `resolution` |  | enum (string) | no | `720p` | `480p`, `580p`, `720p` | Resoluziun dal video d'output: 480p, 580p u 720p. |
| `aspect_ratio` |  | enum (string) | no | `auto` | `auto`, `16:9`, `9:16`, `1:1` | Proporziuns dal video generà, tschernidas automaticamain dal maletg d'input cura che 'auto' è configurà. |
| `num_inference_steps` |  | integer | no | `27` | 2 – 40 | Dumber da pass da sampling, barattà temp d'elavuraziun pli lung per meglra qualitad cun l'augment dal dumber. |
| `enable_safety_checker` |  | boolean | no | `false` |  | Controlla da segirezza da l'input avant l'elavuraziun, che mo contos autorisads pon deactivar. Dumondas senza autorisaziun vegnan adina controlladas; uschiglio activa true la controlla. |
| `enable_output_safety_checker` |  | boolean | no | `false` |  | Controlla la segirezza dal video generà; true activa ina controlla suenter la generaziun. |
| `enable_prompt_expansion` |  | boolean | no | `false` |  | Permetta ad in large language model d'enritgir il prompt cun detagls. Questa expansiun mantegna il senn dal prompt. |
| `acceleration` |  | enum (string) | no | `regular` | `none`, `regular` | Configuraziun da l'acceleraziun, cun 'regular' sco tscherna recumandada. Augmentar l'acceleraziun sacrifiquescha qualitad per reducir il temp da generaziun. |
| `guidance_scale` |  | number | no | `3.5` | 1 – 10 | Furza da la guida senza classifitgat, barattà ina pussaivla perdita da qualitad per ina concordanza pli stretga cun il prompt a mesira che la scala crescha. |
| `guidance_scale_2` |  | number | no | `3.5` | 1 – 10 | Scala da guidament che controlla quant exactamain il model suonda il prompt durant sia segunda stada. |
| `shift` |  | number | no | `5` | 1 – 10 | Configuraziun dal shift dal video, cun in interval permess da 1.0–10.0. |
| `interpolator_model` |  | enum (string) | no | `film` | `none`, `film`, `rife` | Configuraziun da l'interpolaziun da frames: tscherner None per sursiglir l'interpolaziun u inditgar il model che duai far ella. |
| `num_interpolated_frames` |  | integer | no | `1` | 0 – 4 | Inserir 0–4 frames interpolads en mintga largia tranter dus frames generads. |
| `adjust_fps_for_interpolation` |  | boolean | no | `true` |  | Commutader per l'adattaziun da la frequenza da frames: false mantegna la FPS furnida, entant che true la multiplitgescha per in plus il dumber da frames interpolads. Uschia daventan 16 FPS 32 FPS cura ch'in frame vegn interpolà e l'adattaziun è activa. |
| `video_quality` |  | enum (string) | no | `high` | `low`, `medium`, `high`, `maximum` | Configuraziun da la qualitad dal video d'output, che baratta datotecas pli grondas per visuals meglers cura che la valur crescha. |
| `video_write_mode` |  | enum (string) | no | `balanced` | `fast`, `balanced`, `small` | Modus da scriver video, cun balanced sco cumpromiss tranter sveltezza e qualitad. Tscherner small per las datotecas las pli pitschnas e la scrittira la pli plauna; ina scrittira pli svelta returna ils resultats pli baud, ma creescha datotecas pli grondas. |
| `end_image_url` | `end_image` | string (image URL) \| null | no |  |  | URL che mussa al maletg final. |

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} | Datoteca video producida da la generaziun. |
| `prompt` | string | Prompt da text utilisà per generar il video. |
| `seed` | integer | Valur da seed applitgada durant la generaziun. |

## 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
