# LTX-Video 13B 0.9.8 Distilled · Multiconditioning API

> 複数の画像と動画、およびプロンプトを同時に条件とする0.9.8 distilled 13B生成

必須の`prompt`と条件画像`images`および動画`videos`のリストから動画を生成し、複数の参照で1つの結果を形作れます。出力は480pまたは720pで、`aspect_ratio`はauto、9:16、1:1、16:9です。`num_frames`は9～1441で、`loras`によりカスタム重みを追加できます。

- Model id: `ltxv-13b-098-distilled/multiconditioning`
- Made by: Lightricks
- Category: Video to Video
- Output: video
- Price per second of your output video: from $0.02 / second of output video (cheapest run $0.02 (20 API credits))
- Run: `POST https://api.doitong.ru/v1/run/ltxv-13b-098-distilled/multiconditioning`
- Quote: `POST https://api.doitong.ru/v1/quote/ltxv-13b-098-distilled/multiconditioning`
- Docs page: https://doitong.com/ja/developers/models/ltxv-13b-098-distilled/multiconditioning

## Pricing

Price: **from $0.02 / 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.

The full example input below costs $0.101 = 101 API credits (5.0417 s output video × $0.02).

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/ltxv-13b-098-distilled/multiconditioning` 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

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `prompt` |  | string | yes |  |  | 生成をガイドするテキスト指示。 |
| `negative_prompt` |  | string | no | `worst quality, inconsistent motion, blurry, jittery, distorted` |  | 生成用のネガティブテキスト指示。 |
| `loras` |  | array of object {path, weight_name, scale} | no | `[]` |  | 生成中に適用する LoRA 重み。 |
| `loras[].path` |  | string | yes |  |  | LoRA 重みの場所。URL またはパスで指定します。 |
| `loras[].weight_name` |  | string \| null | no |  |  | HuggingFaceリポジトリ内の複数の重みから選択するLoRAの重み名。複数の重みを含むリポジトリでのみ必要です。`path` がHuggingFaceリポジトリを示す場合にだけ効果があります。 |
| `loras[].scale` |  | number | no | `1` | 0 – 4 | 読み込み時に LoRA 重みをスケーリングする乗数。 |
| `resolution` |  | enum (string) | no | `720p` | `480p`, `720p` | 出力動画の解像度。 |
| `aspect_ratio` |  | enum (string) | no | `auto` | `9:16`, `1:1`, `16:9`, `auto` | 動画のアスペクト比です。 |
| `seed` |  | integer \| null | no |  |  | 生成中のランダム性を制御するシード。 |
| `num_frames` |  | integer | no | `121` | 9 – 1,441 | 動画の総フレーム数。 |
| `first_pass_num_inference_steps` |  | integer | no | `8` | 2 – 12 | 第 1 パスの推論ステップ数。 |
| `second_pass_num_inference_steps` |  | integer | no | `8` | 2 – 12 | 第 2 パスの推論ステップ数。 |
| `second_pass_skip_initial_steps` |  | integer | no | `5` | 1 – 11 | 第 2 パスで省略する初期推論ステップ数。この値により、第 2 パスを大きな変更ではなく細部の処理に寄せます。 |
| `frame_rate` |  | integer | no | `24` | 1 – 60 | 動画のフレームレート。 |
| `expand_prompt` |  | boolean | no | `false` |  | 言語モデルによるプロンプト拡張。 |
| `reverse_video` |  | boolean | no | `false` |  | 動画の再生順を逆にします。 |
| `enable_safety_checker` |  | boolean | no | `true` |  | 安全性チェックの切り替え。オフ設定が有効になるのは承認済みアカウントのみです。承認されていないすべてのリクエストには安全性チェックが実行されます。 |
| `enable_detail_pass` |  | boolean | no | `false` |  | 有効にすると動画の詳細を改善する、オプションの第 2 リファインメントパス。 |
| `temporal_adain_factor` |  | number | no | `0.5` | 0 – 1 | 適応的インスタンス正規化（AdaIN）の強度。高い値では色の一貫性を、低い値では色の変化を優先します。最初を除く生成チャンクに適用され、動画全体の色分布を正規化して、彩度やコントラストが徐々に上昇する現象を抑えます。 |
| `tone_map_compression_ratio` |  | number | no | `0` | 0 – 1 | トーンマッピングの圧縮レベル。0.0 では圧縮なし、1.0 では最大圧縮です。この方法で動画のダイナミックレンジを圧縮すると、画質が向上します。 |
| `constant_rate_factor` |  | integer | no | `29` | 0 – 51 | 入力圧縮に使用する固定レート係数（CRF）。指定したメディアをモデルの学習データに近づけることで、動きの品質が向上する場合があります。 |
| `images` |  | array of object {image_url, start_frame_num, strength} | no | `[]` |  | URL で指定する条件付け画像。 |
| `images[].image_url` |  | string (image URL) | yes |  |  | URL で指定する条件付け画像。 |
| `images[].start_frame_num` |  | integer | no | `0` | 0 – 1,440 | 画像条件付けの開始位置。8 で割り切れるフレーム番号で指定します。 |
| `images[].strength` |  | number | no | `1` | 0 – 1 | 条件付け強度。0.0 では条件付けを無効にし、1.0 では完全に適用します。 |
| `videos` |  | array of object {video_url, conditioning_type, preprocess, start_frame_num, strength, limit_num_frames, max_num_frames, resample_fps, target_fps, reverse_video} | no | `[]` |  | 条件付けに使用する動画。 |
| `videos[].video_url` |  | string (video URL) | yes |  |  | URL で指定する条件付け動画。 |
| `videos[].conditioning_type` |  | enum (string) \| null | no | `rgb` | `rgb`, `depth`, `pose`, `canny` | 動画の条件付けカテゴリ。前処理が有効な場合の前処理パイプラインの選択と、インコンテキスト LoRA 重みの正しい適用に使用します。 |
| `videos[].preprocess` |  | boolean | no | `false` |  | 動画の条件付けタイプに合わせた前処理を有効にします。RGB 条件付けでは、有効にしても変更はありません。 |
| `videos[].start_frame_num` |  | integer | no | `0` | 0 – 1,440 | 動画内の条件付け開始位置。8 で割り切れるフレーム番号で指定します。 |
| `videos[].strength` |  | number | no | `1` | 0 – 1 | 条件付け強度。0.0 では条件付けを無効にし、1.0 では完全に適用します。 |
| `videos[].limit_num_frames` |  | boolean | no | `false` |  | 動画フレーム数の上限スイッチ。有効にすると、動画から取得するフレーム数の上限が `max_num_frames` になります。 |
| `videos[].max_num_frames` |  | integer | no | `1441` | 1 – 1,441 | 動画から使用するフレーム数の上限。None を指定すると、制限せず動画全体を選択します。 |
| `videos[].resample_fps` |  | boolean | no | `false` |  | 動画フレームレート変換スイッチ。有効にすると、`target_fps` で指定したレートで動画をリサンプリングします。 |
| `videos[].target_fps` |  | integer | no | `24` | 1 – 60 | リサンプリングするフレームレート（FPS）。`resample_fps` が有効な場合のみ適用されます。 |
| `videos[].reverse_video` |  | boolean | no | `false` |  | 動画の順序を逆にします。フレームを逆方向に追従させる条件付けが必要なタスクで使用します。 |

## Example input

Required parameters only:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

A fuller example:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

## 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/ltxv-13b-098-distilled/multiconditioning?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"
  }'

# 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/ltxv-13b-098-distilled/multiconditioning?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"
  }),
});
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",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/ltxv-13b-098-distilled/multiconditioning", 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": "ltxv-13b-098-distilled/multiconditioning",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
      },
      "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": "ltxv-13b-098-distilled/multiconditioning",
  "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": 101,
    "usd": "0.101",
    "charged": 101,
    "refunded": 0
  },
  "input": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  },
  "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": "A vibrant, abstract composition featuring a person with outstretched arms, rendered in a kaleidoscope of colors against a deep, dark background. The figure is composed of intricate, swirling patterns reminiscent of a mosaic, with hues of orange, yellow, blue, and green that evoke the style of artists such as Wassily Kandinsky or Bridget Riley. The camera zooms into the face striking portrait of a man, reimagined through the lens of old-school video-game graphics. The subject's face is rendered in a kaleidoscope of colors, with bold blues and reds set against a vibrant yellow backdrop. His dark hair is pulled back, framing his profile in a dramatic pose.",
    "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

- [LTX-Video 13B 0.9.8 Distilled](https://doitong.com/developers/models/ltxv-13b-098-distilled.md) (`ltxv-13b-098-distilled`): from $0.02 / second of output video
- [LTX-Video 13B 0.9.8 Distilled · Image to Video](https://doitong.com/developers/models/ltxv-13b-098-distilled/image-to-video.md) (`ltxv-13b-098-distilled/image-to-video`): from $0.02 / second of output video
- [LTX-Video 13B 0.9.8 Distilled · Extend](https://doitong.com/developers/models/ltxv-13b-098-distilled/extend.md) (`ltxv-13b-098-distilled/extend`): from $0.02 / second of output video
- [Ltx 2.3](https://doitong.com/developers/models/ltx-2.3/reframe.md) (`ltx-2.3/reframe`): from $0.10 / second of input video
- [LTX 2.3 22B](https://doitong.com/developers/models/ltx-2.3-22b/reference-video-to-video/lora.md) (`ltx-2.3-22b/reference-video-to-video/lora`): $0.00181 / megapixel of output video
- [Ltx 2.3 Quality · Clean Plate](https://doitong.com/developers/models/ltx-2.3-quality/clean-plate.md) (`ltx-2.3-quality/clean-plate`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Colorization](https://doitong.com/developers/models/ltx-2.3-quality/colorization.md) (`ltx-2.3-quality/colorization`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Cross Eyed](https://doitong.com/developers/models/ltx-2.3-quality/cross-eyed.md) (`ltx-2.3-quality/cross-eyed`): $0.00241 / megapixel of output video

## Links

- HTML page: https://doitong.com/developers/models/ltxv-13b-098-distilled/multiconditioning
- 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=ltxv-13b-098-distilled/multiconditioning
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/ltxv-13b-098-distilled/multiconditioning
