# LTX-2.3 22B Video Trainer API

> Huấn luyện LoRA LTX-2.3 22B cho phong cách và hiệu ứng video tùy chỉnh, tùy chọn có âm thanh

Huấn luyện LoRA trên mô hình LTX-2.3 22B cho phong cách và hiệu ứng tùy chỉnh từ zip chứa video hoặc hình ảnh, lý tưởng là từ 10 tệp trở lên. `number_of_steps` từ 100 đến 6000 (mặc định 2000), `frame_rate` mặc định là 25 và `first_frame_conditioning_p` mặc định là 0.5. `with_audio` buộc bật hoặc tắt huấn luyện âm thanh, còn `generate_audio_in_validation` điều khiển âm thanh trong bản xem trước.

- Model id: `ltx23-video-trainer`
- Made by: Lightricks
- Category: Training
- Output: file
- Price: $0.0048 / step (cheapest run $9.60 (9600 API credits))
- Run: `POST https://api.doitong.com/v1/run/ltx23-video-trainer`
- Quote: `POST https://api.doitong.com/v1/quote/ltx23-video-trainer`
- Docs page: https://doitong.com/vi/developers/models/ltx23-video-trainer

## Pricing

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

The full example input below costs $9.60 = 9600 API credits (2000 steps × 4.8 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-video-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 kho lưu trữ ZIP cho tập dữ liệu chỉ chứa hình ảnh hoặc chỉ chứa video; không hỗ trợ tập dữ liệu có phương tiện hỗn hợp. Nên có từ 10 tệp trở lên, tốt nhất là một bộ sưu tập lớn hơn. Phần mở rộng được chấp nhận là .png, .jpg, .jpeg cho hình ảnh và .mp4, .mov, .avi, .mkv cho video. Các tệp văn bản chú thích tùy chọn có thể đi kèm phương tiện, với mỗi tệp chú thích được đặt tên tương ứng với tệp phương tiện liên quan. |
| `rank` |  | enum (integer) | no | `32` | `8`, `16`, `32`, `64`, `128` | Cấp bậc thích ứng LoRA, đánh đổi mức tiêu thụ bộ nhớ tăng lên để có năng lực lớn hơn khi thiết lập tăng. |
| `number_of_steps` |  | integer | no | `2000` | 100 – 6,000 | Tổng số bước huấn luyện. |
| `learning_rate` |  | number | no | `0.0002` | 0.000001 – 1 | Tốc độ học tối ưu hóa, cân bằng giữa khả năng tăng tốc huấn luyện và nguy cơ overfitting khi tăng giá trị. |
| `number_of_frames` |  | integer | no | `89` | 9 – 121 | Số khung hình của mỗi mẫu huấn luyện. Chia số này cho 8 phải dư 1; ví dụ gồm 1, 9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97. |
| `frame_rate` |  | integer | no | `25` | 8 – 60 | Tốc độ khung hình video mục tiêu, được đo bằng khung hình trên giây. |
| `resolution` |  | enum (string) | no | `medium` | `low`, `medium`, `high` | Độ phân giải huấn luyện. Tăng độ phân giải sẽ tăng yêu cầu bộ nhớ. |
| `aspect_ratio` |  | enum (string) | no | `1:1` | `16:9`, `1:1`, `9:16` | Tỷ lệ khung hình huấn luyện. |
| `trigger_phrase` |  | string | no | `` |  | Cụm từ kích hoạt kiểu LoRA, được chèn vào đầu chú thích trong quá trình huấn luyện. |
| `auto_scale_input` |  | boolean | no | `false` |  | Tự động điều chỉnh video để khớp FPS và số khung hình được yêu cầu khi bật; các tập dữ liệu hình ảnh không thay đổi. |
| `split_input_into_scenes` |  | boolean | no | `true` |  | Tách cảnh cho các video vượt quá ngưỡng thời lượng, được bật khi true. |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | Điều kiện tách cảnh được biểu thị bằng thời lượng theo giây: chỉ video dài hơn ngưỡng mới được tách. |
| `debug_dataset` |  | boolean | no | `false` |  | Chế độ kiểm tra tiền xử lý để kiểm tra video, hình ảnh và chú thích trước một lượt huấn luyện đầy đủ. Khi bật, bộ huấn luyện trả về tập dữ liệu huấn luyện đã xử lý trong một tệp lưu trữ có thể tải xuống để xem xét thủ công. |
| `with_audio` |  | boolean \| null | no |  |  | Chọn True để buộc huấn luyện âm thanh cùng với huấn luyện video, hoặc False để loại trừ âm thanh. Để cài đặt ở giá trị mặc định None sẽ tự động lựa chọn dựa trên việc video được cung cấp có chứa âm thanh hay không. |
| `audio_normalize` |  | boolean | no | `true` |  | Chuẩn hóa biên độ đỉnh, được khuyến nghị để làm cho mức âm thanh nhất quán trong toàn bộ tập dữ liệu bằng cách đưa các đỉnh về cùng một mức. |
| `audio_preserve_pitch` |  | boolean | no | `true` |  | Bảo toàn cao độ khi độ dài âm thanh và video khác nhau: bật sẽ sử dụng kéo giãn hoặc nén thời gian; tắt sẽ sử dụng cắt hoặc thêm khoảng lặng. |
| `first_frame_conditioning_p` |  | number | no | `0.5` | 0 – 1 | Cải thiện hiệu suất image-to-video bằng cách tăng tần suất huấn luyện sử dụng điều kiện hóa khung hình đầu tiên; giá trị này đặt xác suất đó. |
| `validation` |  | array of object {prompt, image_url} | no | `[]` | ≤ 2 items | Danh sách lời nhắc xác thực huấn luyện, trong đó đầu vào phải либо đều bao gồm hình ảnh hoặc đều không bao gồm hình ảnh. |
| `validation[].prompt` |  | string | yes |  |  | Lời nhắc dùng trong quá trình xác thực. |
| `validation[].image_url` |  | string (image URL) \| null | no |  |  | Hình ảnh dùng để xác thực image-to-video, chỉ được phép khi mọi đầu vào xác thực khác cũng bao gồm hình ảnh. |
| `validation_negative_prompt` |  | string | no | `worst quality, inconsistent motion, blurry, jittery, distorted` |  | Lời nhắc phủ định được áp dụng trong quá trình xác thực. |
| `validation_number_of_frames` |  | integer | no | `89` | 9 – 121 | Số khung hình của mỗi video xác thực. |
| `validation_frame_rate` |  | integer | no | `25` | 8 – 60 | Tốc độ khung hình video xác thực mục tiêu, được đo bằng khung hình trên giây. |
| `validation_resolution` |  | enum (string) | no | `high` | `low`, `medium`, `high` | Độ phân giải dùng trong quá trình xác thực. |
| `validation_aspect_ratio` |  | enum (string) | no | `1:1` | `16:9`, `1:1`, `9:16` | Tỷ lệ khung hình dùng trong quá trình xác thực. |
| `stg_scale` |  | number | no | `1` | 0 – 3 | Tỷ lệ Spatio-Temporal Guidance (STG), khuyến nghị 1.0; 0.0 sẽ tắt STG. |
| `generate_audio_in_validation` |  | boolean | no | `true` |  | Kiểm soát việc các mẫu xác thực có bao gồm âm thanh được tạo hay không. |

## 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-video-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-video-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-video-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-video-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-video-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": 9600,
    "usd": "9.60",
    "charged": 9600,
    "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 của mọi video xác thực hiện có. |
| `lora_file` | object {url, content_type, file_name, file_size} | URL của trọng số LoRA đã huấn luyện ở định dạng .safetensors. |
| `config_file` | object {url, content_type, file_name, file_size} | Cấu hình thiết lập điểm cuối suy luận. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | Kho lưu trữ gỡ lỗi có thể tải xuống chỉ được trả về cho các đầu vào bật `debug_dataset`; kho lưu trữ chứa tập dữ liệu huấn luyện đã tiền xử lý, bao gồm âm thanh và video đã giải mã. |

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