# LTX-2.3 22B Video to Video Trainer API

> טרענירט אַן LTX-2.3 22B LoRA פֿאַר ווידעאָ־טראַנספֿאָרמאַציע אָדער ווידעאָ־באַדינגטע שאַפֿונג פֿון רעפֿערענץ־ווידעאָס

טרענירט אַ LoRA אויף דעם LTX-2.3 22B מאָדעל פֿאַר ווידעאָ־טראַנספֿאָרמאַציע, ניצנדיק אַ zip פֿון ווידעאָס אָדער בילדער (mp4, mov, avi, mkv, png, jpg, jpeg), מיט לפּחות בערך 10 רעקאָמענדירטע טעקעס. `number_of_steps` גייט פֿון 1 ביז 20000 (לויטן נאָרמאַל 2000), און `frame_rate` איז לויטן נאָרמאַל 25. `first_frame_conditioning_p` איז לויטן נאָרמאַל 0.1. וואַלידאַציע נעמט אָן ביז 2 פּינטלעך־טעקסטן מיט רעפֿערענץ־ווידעאָס.

- Model id: `ltx23-v2v-trainer`
- Made by: Lightricks
- Category: Training
- Output: file
- Price: $0.0135 / step (cheapest run $27.00 (27000 API credits))
- Run: `POST https://api.doitong.com/v1/run/ltx23-v2v-trainer`
- Quote: `POST https://api.doitong.com/v1/quote/ltx23-v2v-trainer`
- Docs page: https://doitong.com/yi/developers/models/ltx23-v2v-trainer

## Pricing

Price: **$0.0135 / step**. Billed per training step (`number_of_steps`).

The full example input below costs $27.00 = 27000 API credits (2000 steps × 13.5 API credits).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.com/v1/quote/ltx23-v2v-trainer` 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 |
|---|---|---|---|---|---|---|
| `training_data_url` |  | string | yes |  |  | URL פֿון אַ ZIP אַרכיוו פֿאַר אַ דאַטאַסעט וואָס אַנטהאַלט אויסשליסלעך בילדער אָדער אויסשליסלעך ווידעאָס; געמישטע מעדיע־דאַטאַסעטן ווערן נישט געשטיצט. ציל אויף 10 פֿײַלן אָדער מער, בעסער אַ גרעסערע זאַמלונג. אנגענומענע עקסטענסיעס זענען .png, .jpg, .jpeg פֿאַר בילדער און .mp4, .mov, .avi, .mkv פֿאַר ווידעאָס. אָפּציאָנעלע קעפּשן־טעקסטפֿײַלן קענען באַגלייטן די מעדיע, מיט יעדן קעפּשן־פֿײַל געהייסן לויט זײַן צוגעפּאַסטן מעדיע־פֿײַל. |
| `rank` |  | enum (integer) | no | `32` | `8`, `16`, `32`, `64`, `128` | LoRA־אַדאַפּטאַציע־ראַנג; העכערע ווערטן געבן מער קאַפּאַציטעט אָבער נוצן מער זכּרון. |
| `number_of_steps` |  | integer | no | `2000` | 1 – 20,000 | גאַנצע צאָל טריינינג־שטאַפּלען. |
| `learning_rate` |  | number | no | `0.0002` | 0.000001 – 1 | אָפּטימיזאַציע־לערנ־קורס, וואָס באַלאַנסירט אַ מעגלעכן גיכקייט־געווינס אין טרענירונג קעגן דער סכּנה פֿון איבערפּאַסן ווען ער ווערט פֿאַרגרעסערט. |
| `number_of_frames` |  | integer | no | `89` | 9 – 121 | צאָל ראַמען אין יעדן טריינינג־בײַשפּיל. די צאָל צעטיילט דורך 8 מוז לאָזן רעשט 1; בײַשפּילן זענען 1, 9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97. |
| `frame_rate` |  | integer | no | `25` | 8 – 60 | ציל־ווידעא־ראַם־קורס, געמאסטן אין ראַמען פּער סעקונדע. |
| `resolution` |  | enum (string) | no | `medium` | `low`, `medium`, `high` | טריינינג־רעזאָלוציע. העכערע רעזאָלוציען דאַרפֿן מער זכּרון. |
| `aspect_ratio` |  | enum (string) | no | `1:1` | `16:9`, `1:1`, `9:16` | טריינינג־אַספּעקט־פאַרהעלטעניש. |
| `trigger_phrase` |  | string | no | `` |  | LoRA־סטיל־אַקטיוואַציע־פֿראַזע, אַרײַנגעשטעלט בײַם אָנהייב פֿון captions בעת טריינינג. |
| `auto_scale_input` |  | boolean | no | `false` |  | אָטאָמאַטישע ווידעא־צופּאַסונג צו דער געבעטן FPS און ראַם־צאָל; בילד־דאַטאַסעטן בלײַבן אומגעענדערט. |
| `split_input_into_scenes` |  | boolean | no | `true` |  | סצענע־צעטיילונג פֿאַר ווידעאָס איבערן לענג־שוועל, אַקטיוו ווען true. |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | טריגער פֿאַר סצענע־צעטיילונג ווי אַ לענג אין סעקונדעס: נאָר ווידעאָס לענגער ווי דער שוועל ווערן צעטיילט. |
| `debug_dataset` |  | boolean | no | `false` |  | Preprocessing־דורכזוכ־מאָדוס פֿאַר קאָנטראָלירן ווידעאָס, בילדער און captions פֿאַר אַ פולן טריינינג־לויף. |
| `first_frame_conditioning_p` |  | number | no | `0.1` | 0 – 1 | פֿאָרזעצט video-to-video פֿאַרוואַנדלונג דורך רעדוצירן ווי אָפֿט די טרענירונג ניצט ערשטע־ראַם־קאָנדיציאָנירונג; דער ווערט שטעלט די מסתּמא. |
| `validation` |  | array of object {prompt, reference_video_url} | no | `[]` | ≤ 2 items | וואַלידאַציע־אַרײַנגעבונגסליסטע מיט פּראָמפּטן צוגעפּאַסט צו רעפֿערענץ־ווידעאָס. |
| `validation[].prompt` |  | string | yes |  |  | פּראָמפּט גענוצט בעת וואַלידאַציע. |
| `validation[].reference_video_url` |  | string (video URL) | yes |  | ≥ 1 characters | צושטעלן דעם ווידעא צו פֿאַרוואַנדלען בעת IC-LoRA וואַלידאַציע דורך זײַן URL. |
| `validation_negative_prompt` |  | string | no | `worst quality, inconsistent motion, blurry, jittery, distorted` |  | נעגאַטיווער פּראָמפּט געווענדט בעת וואַלידאַציע. |
| `validation_number_of_frames` |  | integer | no | `89` | 9 – 121 | ראַם־צאָל פֿאַר יעדן וואַלידאַציע־ווידעא. |
| `validation_frame_rate` |  | integer | no | `25` | 8 – 60 | ציל־וואַלידאַציע־ווידעא־ראַם־קורס, געמאסטן אין ראַמען פּער סעקונדע. |
| `validation_resolution` |  | enum (string) | no | `high` | `low`, `medium`, `high` | רעזאָלוציע גענוצט בעת וואַלידאַציע. |
| `validation_aspect_ratio` |  | enum (string) | no | `1:1` | `16:9`, `1:1`, `9:16` | אַספּעקט־פאַרהעלטעניש גענוצט בעת וואַלידאַציע. |
| `stg_scale` |  | number | no | `1` | 0 – 3 | Spatio-Temporal Guidance (STG)־סקאַלע; 1.0 איז רעקאָמענדירט, 0.0 שטעלט STG אויס. |

## Example input

Required parameters only:

```json
{
  "training_data_url": "https://example.com/your-file.zip"
}
```

A fuller example:

```json
{
  "training_data_url": "https://example.com/your-file.zip"
}
```

## 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.com/v1/run/ltx23-v2v-trainer?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "training_data_url": "https://example.com/your-file.zip"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.com/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/ltx23-v2v-trainer?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "training_data_url": "https://example.com/your-file.zip"
  }),
});
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.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "training_data_url": "https://example.com/your-file.zip",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/ltx23-v2v-trainer", 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.com/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": "ltx23-v2v-trainer",
      "input": {
        "training_data_url": "https://example.com/your-file.zip"
      },
      "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": "ltx23-v2v-trainer",
  "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": 27000,
    "usd": "27.00",
    "charged": 27000,
    "refunded": 0
  },
  "input": {
    "training_data_url": "https://example.com/your-file.zip"
  },
  "output": {
    "video": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    },
    "lora_file": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    },
    "config_file": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    },
    "debug_dataset": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_name": "0-output.jpeg",
      "file_size": 1843200
    }
  },
  "outputs": [
    {
      "type": "file",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_size": 1843200,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `video` | object {url, content_type, file_name, file_size} \| null | URL פֿאַר אַלע בנימצא וואַלידאַציע־ווידעאָס, געוויזן צוזאַמען מיט זייערע רעפֿערענץ־ווידעאָס. |
| `lora_file` | object {url, content_type, file_name, file_size} | URL פֿאַר דער טרענירטער IC-LoRA וואָג־פֿײַל אין .safetensors פֿאָרמאַט. |
| `config_file` | object {url, content_type, file_name, file_size} | קאָנפֿיגוראַציע פֿאַר באַשטעטיקן אַן inference־ענדפּוינט. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | אַראָפּלאָדן־באַרעכטיקטער דיבאַג־אַרכיוו, בנימצא בלויז פֿאַר אַרײַנגעבונגען וואָס אַקטיווירן `debug_dataset`; זײַנע טרענירונג־דאַטן זענען פּרעפּראָסעסט און אַנטהאַלטן ווידעאָס אין דעקאָדירטער פֿאָרעם. |

## Related models

- [LTX 2.3 Trainer (V2) - Audio Inpainting](https://doitong.com/developers/models/ltx23-trainer-v2/audio-inpaint.md) (`ltx23-trainer-v2/audio-inpaint`): $0.0023 / step
- [LTX 2.3 Trainer (V2) - Audio+Video Reference IC-LoRA](https://doitong.com/developers/models/ltx23-trainer-v2/ic-lora/av2av.md) (`ltx23-trainer-v2/ic-lora/av2av`): $0.0068 / step
- [LTX 2.3 Trainer (V2) - Audio+Video Reference Transformation](https://doitong.com/developers/models/ltx23-trainer-v2/av2av.md) (`ltx23-trainer-v2/av2av`): $0.0068 / step
- [LTX 2.3 Trainer (V2) - Audio-to-Audio](https://doitong.com/developers/models/ltx23-trainer-v2/a2a.md) (`ltx23-trainer-v2/a2a`): $0.0023 / step
- [LTX 2.3 Trainer (V2) - Audio-to-Audio IC-LoRA](https://doitong.com/developers/models/ltx23-trainer-v2/ic-lora/a2a.md) (`ltx23-trainer-v2/ic-lora/a2a`): $0.0023 / step
- [LTX 2.3 Trainer (V2) - Audio-to-Video](https://doitong.com/developers/models/ltx23-trainer-v2/a2v.md) (`ltx23-trainer-v2/a2v`): $0.006 / step
- [LTX 2.3 Trainer (V2) - Backward Audio Extension](https://doitong.com/developers/models/ltx23-trainer-v2/audio-extend-suffix.md) (`ltx23-trainer-v2/audio-extend-suffix`): $0.0023 / step
- [LTX 2.3 Trainer (V2) - Backward Video Extension](https://doitong.com/developers/models/ltx23-trainer-v2/extend-suffix.md) (`ltx23-trainer-v2/extend-suffix`): $0.0061 / step

## Links

- HTML page: https://doitong.com/developers/models/ltx23-v2v-trainer
- 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=ltx23-v2v-trainer
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/ltx23-v2v-trainer
