# Wan VACE 14B · Depth API

> Generování videa řízené hloubkou pomocí VACE 14B, které sleduje strukturu zdrojového videa

Vyžaduje `prompt` a zdrojové `video_url` a generuje nové video řízené hloubkovou strukturou zdroje. Volitelné `ref_image_urls` spolu s obrázky prvního a posledního snímku přidávají reference a `transparency_mode` řídí vyplnění průhledných oblastí těchto snímků. `num_frames` může být až 241 a `resolution` je od 240p do 720p.

- Model id: `wan-vace-14b/depth`
- Made by: Alibaba
- Category: Video 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-vace-14b/depth`
- Quote: `POST https://api.doitong.ru/v1/quote/wan-vace-14b/depth`
- Docs page: https://doitong.com/cs/developers/models/wan-vace-14b/depth

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

- 240p: $0.04 / second of output video
- 360p: $0.04 / second of output video
- 480p: $0.04 / second of output video
- 580p: $0.06 / second of output video
- auto: $0.08 / 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 (auto)).

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-vace-14b/depth` 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 |
|---|---|---|---|---|---|---|
| `prompt` |  | string | yes |  |  | Textové pokyny pro řízení generování videa. |
| `negative_prompt` |  | string | no | `letterboxing, borders, black bars, bright colors, overexposed, static, blurred details, subtitles, style, artwork, painting, picture, still, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, malformed limbs, fused fingers, still picture, cluttered background, three legs, many people in the background, walking backwards` |  | Negativní prompt použitý při generování videa. |
| `match_input_num_frames` |  | boolean | no | `false` |  | Zdroj počtu snímků vygenerovaného videa: false používá `num_frames`, zatímco true kopíruje počet snímků vstupního videa. |
| `num_frames` |  | integer | no | `81` | 17 – 241 | Počet snímků výstupu včetně obou mezních hodnot, v rozsahu 81–241. |
| `match_input_frames_per_second` |  | boolean | no | `false` |  | Zdroj snímkové frekvence vygenerovaného videa: false používá `frames_per_second`, zatímco true kopíruje snímkovou frekvenci vstupního videa. |
| `frames_per_second` |  | integer \| null | no | `16` | 5 – 30 | Snímková frekvence vygenerovaného videa, použitá pouze tehdy, když `match_input_frames_per_second` není true; přijímané hodnoty jsou 5–30 snímků za sekundu. |
| `seed` |  | integer \| null | no |  |  | Seed zajišťující reprodukovatelné generování. Nastavení na None vybere seed náhodně. |
| `resolution` |  | enum (string) | no | `auto` | `auto`, `240p`, `360p`, `480p`, `580p`, `720p` | Rozlišení výstupního videa. |
| `aspect_ratio` |  | enum (string) | no | `auto` | `auto`, `16:9`, `1:1`, `9:16` | Poměr stran výsledného videa. |
| `num_inference_steps` |  | integer | no | `30` | 2 – 50 | Počet vzorkovacích kroků; vyšší počet znamená delší zpracování, ale lepší kvalitu. |
| `guidance_scale` |  | number | no | `5` | 1 – 10 | Síla zarovnání promptu řízená pomocí classifier-free guidance; zvýšení škály vede vygenerované obrázky k přesnějšímu dodržení textu. |
| `sampler` |  | enum (string) | no | `unipc` | `unipc`, `dpm++`, `euler` | Sampler použitý při generování videa. |
| `shift` |  | number | no | `5` | 1 – 15 | Nastavení posunu použité při generování videa. |
| `video_url` | `video` | string (video URL) | yes |  |  | URL souboru zdrojového videa, vyžadovaná při provádění úlohy hloubky. |
| `ref_image_urls` |  | array of image URL | no |  |  | Volitelné URL zdrojových obrázků poskytujících modelu referenční obrázky k použití. |
| `first_frame_url` | `image` | string \| null | no |  |  | Volitelná reference prvního snímku zadaná pomocí URL, kterou má model použít při zpracování videa. |
| `last_frame_url` | `end_image` | string \| null | no |  |  | Volitelná reference posledního snímku zadaná pomocí URL, kterou má model použít při zpracování videa. |
| `enable_safety_checker` |  | boolean | no | `false` |  | Přepínač bezpečnostní kontroly, jehož vypnutí vyžaduje autorizaci účtu. Bez této autorizace se kontroluje každý požadavek bez ohledu na nastavení; true kontrolu povolí. |
| `enable_prompt_expansion` |  | boolean | no | `false` |  | Určuje, zda je povoleno rozšíření promptu. |
| `preprocess` |  | boolean | no | `false` |  | Určuje předzpracování vstupního videa. |
| `acceleration` |  | enum (string) \| null | no | `regular` | `none`, `low`, `regular` | Nastavení urychlení inference s volbou 'none' nebo 'regular': urychlené zpracování výrazně zvyšuje rychlost za cenu velmi malé změny výstupu. |
| `video_quality` |  | enum (string) | no | `high` | `low`, `medium`, `high`, `maximum` | Úroveň kvality výsledného videa. |
| `video_write_mode` |  | enum (string) | no | `balanced` | `fast`, `balanced`, `small` | Režim zápisu výsledného videa. |
| `num_interpolated_frames` |  | integer | no | `0` | 0 – 5 | Počet interpolací: 0 ponechá původní snímky bez interpolace; ostatní hodnoty určují počet mezilehlých snímků vytvořených mezi nimi. |
| `temporal_downsample_factor` |  | integer | no | `0` | 0 – 5 | Faktor vynechávání snímků videa vyjádřený celým číslem; pro každý faktor podvzorkování se jednou použije automatické převzorkování. Hodnota 0 ponechá časové podvzorkování vypnuté. |
| `enable_auto_downsample` |  | boolean | no | `false` |  | Automatické přizpůsobení počtu snímků: povolení umožní modelu zpracovat časově podvzorkované video vhodné délky a následná interpolace obnoví původní počet snímků. |
| `auto_downsample_min_fps` |  | number | no | `15` | 1 – 60 | Minimální snímková frekvence ve snímcích za sekundu povolená po podvzorkování. U záběrů s malým pohybem umožní snížení této hodnoty větší podvzorkování a delší sekvence; velmi rychlý pohyb může vyžadovat vyšší hodnotu, výchozí hodnota však vyhovuje většině videí. Automatické podvzorkování používá tento práh k nalezení nejnižšího faktoru, který zachová detaily. |
| `interpolator_model` |  | enum (string) | no | `film` | `rife`, `film` | Volba modelu interpolace snímků: buď 'rife', nebo 'film'. |
| `transparency_mode` |  | enum (string) | no | `content_aware` | `content_aware`, `white`, `black` | Zpracování průhlednosti počátečních a koncových snímků, určující, jak se vyplní jejich průhledné oblasti. |
| `return_frames_zip` |  | boolean | no | `false` |  | Určuje, zda se vrátí také archiv ZIP obsahující každý vygenerovaný snímek; aktivováno při hodnotě true. |

File parameters (`video`, `ref_image_urls`) 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",
  "video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}
```

A fuller example:

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

## 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-vace-14b/depth?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",
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  }'

# 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-vace-14b/depth?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",
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  }),
});
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",
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/wan-vace-14b/depth", 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-vace-14b/depth",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
        "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
      },
      "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-vace-14b/depth",
  "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",
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  },
  "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,
      "width": 1024,
      "height": 768,
      "fps": 1.0,
      "duration": 5,
      "num_frames": 1
    },
    "prompt": "string",
    "seed": 42,
    "frames_zip": {
      "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
    }
  },
  "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, width, height, fps, duration, num_frames} | Soubor videa s hloubkou vytvořený modelem. |
| `prompt` | string | Prompt použitý k vygenerování výstupu. |
| `seed` | integer | Hodnota seedu použitá při generování. |
| `frames_zip` | object {url, content_type, file_name, file_size} \| null | Archiv ZIP obsahující každý snímek videa, vrácený na vyžádání. |

## Related models

- [Wan VACE 14B](https://doitong.com/developers/models/wan-vace-14b.md) (`wan-vace-14b`): from $0.04 / second of output video
- [Wan VACE 14B · Inpainting](https://doitong.com/developers/models/wan-vace-14b/inpainting.md) (`wan-vace-14b/inpainting`): from $0.04 / second of output video
- [Wan VACE 14B · Outpainting](https://doitong.com/developers/models/wan-vace-14b/outpainting.md) (`wan-vace-14b/outpainting`): from $0.04 / second of output video
- [Wan VACE 14B · Pose](https://doitong.com/developers/models/wan-vace-14b/pose.md) (`wan-vace-14b/pose`): from $0.04 / second of output video
- [Wan VACE 14B · Reframe](https://doitong.com/developers/models/wan-vace-14b/reframe.md) (`wan-vace-14b/reframe`): from $0.04 / second of output video
- [Happy Horse Video Edit](https://doitong.com/developers/models/alibaba/happy-horse/video-edit.md) (`alibaba/happy-horse/video-edit`): from $0.28 / second of input video
- [Wan 2.1 VACE Long Reframe](https://doitong.com/developers/models/wan-vace-apps/long-reframe.md) (`wan-vace-apps/long-reframe`): from $0.04 / 2 seconds of input video
- [Wan 2.2 VACE Fun A14B · Depth](https://doitong.com/developers/models/wan-22-vace-fun-a14b/depth.md) (`wan-22-vace-fun-a14b/depth`): from $0.05 / second of output video

## Links

- HTML page: https://doitong.com/developers/models/wan-vace-14b/depth
- 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-vace-14b/depth
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/wan-vace-14b/depth
