# LTX Video-0.9.7 13B Distilled · Multiconditioning API

> Video-to-video na may larawan at video conditioning, suporta sa LoRA at two-pass refinement na may opsyonal na detail pass

Bumubuo ng video mula sa kinakailangang `prompt`, na ginagabayan ng conditioning inputs sa `images` at `videos`. Maaaring ipasa ang custom LoRA sa `loras`. Ang output ay 480p o 720p, na may `num_frames` na 9 hanggang 1441 at `frame_rate` na 1 hanggang 60. Hinahayaan ng magkahiwalay na bilang ng hakbang para sa una at ikalawang pass, opsyonal na detail pass at mga kontrol sa kulay gaya ng `temporal_adain_factor` na iakma ang resulta.

- Model id: `ltx-video-13b-distilled/multiconditioning`
- Made by: Lightricks
- 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/ltx-video-13b-distilled/multiconditioning`
- Quote: `POST https://api.doitong.ru/v1/quote/ltx-video-13b-distilled/multiconditioning`
- Docs page: https://doitong.com/fil/developers/models/ltx-video-13b-distilled/multiconditioning

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

The full example input below costs $0.202 = 202 API credits (5.0417 s output video × $0.04).

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/ltx-video-13b-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 |  |  | Mga text instruction na gumagabay sa pagbuo. |
| `negative_prompt` |  | string | no | `worst quality, inconsistent motion, blurry, jittery, distorted` |  | Mga negatibong text instruction para sa pagbuo. |
| `loras` |  | array of object {path, weight_name, scale} | no | `[]` |  | Mga LoRA weight na inilalapat habang bumubuo. |
| `loras[].path` |  | string | yes |  |  | Lokasyon ng LoRA weights, na ibinibigay bilang URL o path. |
| `loras[].weight_name` |  | string \| null | no |  |  | Pangalan ng LoRA weight para pumili sa maraming weight sa isang HuggingFace repository; kailangan lang ito ng mga repository na naglalaman ng maraming weight. Walang epekto ang setting na ito maliban kung tinutukoy ng `path` ang isang HuggingFace repository. |
| `loras[].scale` |  | number | no | `1` | 0 – 4 | Multiplier na nagsa-scale sa LoRA weight habang nilo-load ito. |
| `resolution` |  | enum (string) | no | `720p` | `480p`, `720p` | Resolution ng output video. |
| `aspect_ratio` |  | enum (string) | no | `auto` | `9:16`, `1:1`, `16:9`, `auto` | Aspect ratio ng video. |
| `seed` |  | integer \| null | no |  |  | Seed na kumokontrol sa randomness habang bumubuo. |
| `num_frames` |  | integer | no | `121` | 9 – 1,441 | Kabuuang bilang ng frame para sa video. |
| `first_pass_num_inference_steps` |  | integer | no | `8` | 2 – 12 | Bilang ng inference step para sa unang pass. |
| `second_pass_num_inference_steps` |  | integer | no | `8` | 2 – 12 | Bilang ng inference step para sa ikalawang pass. |
| `second_pass_skip_initial_steps` |  | integer | no | `5` | 1 – 11 | Paunang bilang ng inference step na lalaktawan sa ikalawang pass, upang ituon ang pass sa fine-detail work sa halip na malalaking pagbabago. |
| `frame_rate` |  | integer | no | `24` | 1 – 60 | Frame rate para sa video. |
| `expand_prompt` |  | boolean | no | `false` |  | Pagpapalawak ng prompt sa pamamagitan ng language modelo. |
| `reverse_video` |  | boolean | no | `false` |  | Pagbabaligtad sa playback order ng video. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Switch para sa safety checking na sinusunod ang off setting lamang para sa mga awtorisadong account. Sumasailalim sa safety check ang lahat ng kahilingan na walang ganoong authorization. |
| `enable_detail_pass` |  | boolean | no | `false` |  | Opsyonal na ikalawang refinement pass na nagpapahusay sa detalye ng video kapag pinagana. |
| `temporal_adain_factor` |  | number | no | `0.5` | 0 – 1 | Adaptive instance normalization (AdaIN) strength, na nagbabalanse sa color consistency sa mas mataas na setting laban sa mas malaking color variation sa mas mababang setting. Gumagana ito sa mga nabuong chunk maliban sa una, at nino-normalize ang color distribution sa buong video upang makatulong na kontrahin ang unti-unting pagtaas ng saturation o contrast. |
| `tone_map_compression_ratio` |  | number | no | `0` | 0 – 1 | Tone-mapping compression level, mula sa walang compression sa 0.0 hanggang maximum compression sa 1.0. Pinapahusay ng ganitong compression ng dynamic range ng video ang visual quality. |
| `constant_rate_factor` |  | integer | no | `29` | 0 – 51 | Constant rate factor (CRF) na ginagamit para sa input compression, na maaaring magpahusay sa motion quality sa pamamagitan ng paglapit sa ibinigay na media sa training data ng modelo. |
| `images` |  | array of object {image_url, start_frame_num, strength} | no | `[]` |  | Mga conditioning larawan na ibinibigay sa pamamagitan ng URL. |
| `images[].image_url` |  | string (image URL) | yes |  |  | Conditioning larawan na ibinibigay sa pamamagitan ng URL. |
| `images[].start_frame_num` |  | integer | no | `0` | 0 – 1,440 | Panimulang posisyon ng larawan conditioning, na tinukoy gamit ang frame number na divisible ng 8. |
| `images[].strength` |  | number | no | `1` | 0 – 1 | Conditioning intensity: dini-disable ng 0.0 ang conditioning, habang ganap itong inilalapat ng 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 | `[]` |  | Mga video na ibinibigay para sa conditioning. |
| `videos[].video_url` |  | string (video URL) | yes |  |  | Conditioning video na ibinibigay sa pamamagitan ng URL. |
| `videos[].conditioning_type` |  | enum (string) \| null | no | `rgb` | `rgb`, `depth`, `pose`, `canny` | Kategorya ng video conditioning na ginagamit upang piliin ang preprocessing pipeline kapag naka-enable ang preprocessing, at upang mailapat nang tama ang in-context LoRA weights. |
| `videos[].preprocess` |  | boolean | no | `false` |  | Pinapagana ang preprocessing upang tumugma sa conditioning type ng video. Para sa RGB conditioning, walang pagbabagong ginagawa kapag pinagana ito. |
| `videos[].start_frame_num` |  | integer | no | `0` | 0 – 1,440 | Panimulang posisyon ng conditioning sa video, na tinukoy bilang frame number na divisible ng 8. |
| `videos[].strength` |  | number | no | `1` | 0 – 1 | Conditioning intensity: dini-disable ng 0.0 ang conditioning, habang ganap itong inilalapat ng 1.0. |
| `videos[].limit_num_frames` |  | boolean | no | `false` |  | Switch para sa limit ng video frame: kapag pinagana, ginagawa nitong cap sa mga frame na kukunin mula sa video ang `max_num_frames`. |
| `videos[].max_num_frames` |  | integer | no | `1441` | 1 – 1,441 | Cap sa bilang ng frame na gagamitin mula sa video, kung saan pinipili ng None ang buong video sa halip na limitadong bilang ng frame. |
| `videos[].resample_fps` |  | boolean | no | `false` |  | Switch para sa conversion ng video frame rate: kapag pinagana, nire-resample ang video sa rate na tinukoy ng `target_fps`. |
| `videos[].target_fps` |  | integer | no | `24` | 1 – 60 | Frame rate ng resampling sa FPS, naaangkop lamang kapag naka-enable ang `resample_fps`. |
| `videos[].reverse_video` |  | boolean | no | `false` |  | Pagbabaligtad ng order ng video para sa mga task na kailangang sumunod ang conditioning sa mga frame nang paatras. |

## 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/ltx-video-13b-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/ltx-video-13b-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/ltx-video-13b-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": "ltx-video-13b-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": "ltx-video-13b-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": 202,
    "usd": "0.202",
    "charged": 202,
    "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} | Video file na ginawa sa pagbuo. |
| `prompt` | string | Prompt na ginamit sa pagbuo ng output. |
| `seed` | integer | Seed value na inilapat sa pagbuo. |

## Related models

- [LTX Video-0.9.7 13B Distilled](https://doitong.com/developers/models/ltx-video-13b-distilled.md) (`ltx-video-13b-distilled`): from $0.04 / second of output video
- [LTX Video-0.9.7 13B Distilled · Image to Video](https://doitong.com/developers/models/ltx-video-13b-distilled/image-to-video.md) (`ltx-video-13b-distilled/image-to-video`): from $0.04 / second of output video
- [LTX Video-0.9.7 13B Distilled · Extend](https://doitong.com/developers/models/ltx-video-13b-distilled/extend.md) (`ltx-video-13b-distilled/extend`): $0.04 / 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/ltx-video-13b-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=ltx-video-13b-distilled/multiconditioning
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/ltx-video-13b-distilled/multiconditioning
