# LTX 2.3 Trainer (V2) - Video-to-Video IC-LoRA API

> 訓練影片轉影片 IC-LoRA，從配對的前後片段學習，並在推論時由控制影片驅動

從成對的來源與結果片段中學習轉換，使用時再依據參考控制影片生成結果。`first_frame_conditioning_p`（0 到 1，預設 0.1）設定使用第一幀作為條件的頻率。參考影片的空間或時間尺寸最多可縮小 8 倍，因此低解析度或低幀率的控制代理影片也能驅動輸出。預設為 3000 步，最多 10000 步。

- Model id: `ltx23-trainer-v2/ic-lora/v2v`
- Made by: Lightricks
- Category: Training
- Output: file
- Price: $0.0059 / step (cheapest run $17.70 (17700 API credits))
- Run: `POST https://api.doitong.ru/v1/run/ltx23-trainer-v2/ic-lora/v2v`
- Quote: `POST https://api.doitong.ru/v1/quote/ltx23-trainer-v2/ic-lora/v2v`
- Docs page: https://doitong.com/zh-TW/developers/models/ltx23-trainer-v2/ic-lora/v2v

## Pricing

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

The full example input below costs $17.70 = 17700 API credits (3000 steps × 5.9 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.ru/v1/quote/ltx23-trainer-v2/ic-lora/v2v` 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 |  |  | 包含訓練資料的 `.zip` URL，資料依選取的訓練模式組織。每個媒體檔案可搭配具有相同基本名稱的 `.txt` 說明檔。 |
| `rank` |  | enum (integer) | no | `32` | `8`, `16`, `32`, `64`, `128` | LoRA 適配階數；設定越高，記憶體消耗越大，但容量也越高。 |
| `number_of_steps` |  | integer | no | `3000` | 100 – 10,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 | `24` | 8 – 60 | 訓練影片的目標影格率（每秒影格數）。LTX-2.3 的原生速率為 24。 |
| `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 風格啟用片語，訓練時插入說明的開頭。 |
| `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` |  | 預處理檢查模式，用於完整訓練前檢查影片、圖像與說明。啟用後，訓練器會將處理過的訓練資料集放入可下載的封存檔，供手動檢查。 |
| `first_frame_conditioning_p` |  | number | no | `0.1` | 0 – 1 | 透過降低訓練使用第一影格條件控制的頻率，偏重影片轉影片轉換；此值設定該機率。 |
| `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 | 透過其 URL 提供 IC-LoRA 驗證期間要轉換的影片。 |
| `validation_negative_prompt` |  | string | no | `blurry, out of focus, overexposed, underexposed, low contrast, washed out colors, excessive noise, grainy texture, poor lighting, flickering, motion blur, distorted proportions, unnatural skin tones, deformed facial features, asymmetrical face, missing facial features, extra limbs, disfigured hands, wrong hand count, artifacts around text, inconsistent perspective, camera shake, incorrect depth of field, background too sharp, background clutter, distracting reflections, harsh shadows, inconsistent lighting direction, color banding, cartoonish rendering, 3D CGI look, unrealistic materials, uncanny valley effect, incorrect ethnicity, wrong gender, exaggerated expressions, wrong gaze direction, mismatched lip sync, silent or muted audio, distorted voice, robotic voice, echo, background noise, off-sync audio, incorrect dialogue, added dialogue, repetitive speech, jittery movement, awkward pauses, incorrect timing, unnatural transitions, inconsistent framing, tilted camera, flat lighting, inconsistent tone, cinematic oversaturation, stylized filters, or AI artifacts.` |  | 驗證期間套用的負面提示詞；驗證使用單階段預覽流程。由於該流程近似兩階段的蒸餾生產推論，其引導方式與預覽品質會不同於最終結果。 |
| `validation_number_of_frames` |  | integer | no | `89` | 9 – 121 | 每部驗證影片的影格數。 |
| `validation_frame_rate` |  | integer | no | `24` | 8 – 60 | 驗證影片的目標影格率（每秒影格數）；LTX-2.3 的原生速率為 24。 |
| `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 | 時空引導（STG）比例；建議使用 1.0，0.0 會關閉 STG。 |
| `reference_downscale_factor` |  | integer | no | `1` | 1 – 8 | IC-LoRA 控制參考影片的空間縮減係數；1 為預設值，可保留解析度和行為。編碼前，參考影片會依此係數縮小，讓 LoRA 學習從粗略、低解析度輸入（例如小型姿勢、深度或草圖代理）產生完整解析度輸出。寬度和高度在除以該係數前後都必須可被 32 整除。 |
| `reference_temporal_scale_factor` |  | integer | no | `1` | 1 – 8 | IC-LoRA 控制的參考影格速率縮減係數，預設為 1，以保留 fps 和行為。參考影片會在編碼前依此係數進行時間下採樣，讓低 fps 參考影片驅動 LoRA。 |

## 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.ru/v1/run/ltx23-trainer-v2/ic-lora/v2v?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.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/ltx23-trainer-v2/ic-lora/v2v?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.ru/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-trainer-v2/ic-lora/v2v", 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": "ltx23-trainer-v2/ic-lora/v2v",
      "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-trainer-v2/ic-lora/v2v",
  "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": 17700,
    "usd": "17.70",
    "charged": 17700,
    "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
    },
    "audio": {
      "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.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} \| null | 驗證產生的合併影片預覽；對可產生影片的端點，若有提供則包含此欄位。 |
| `audio` | object {url, content_type, file_name, file_size} \| null | 驗證產生的合併音訊；對以下音訊專用路由，若有提供則作為預覽：/audio-inpaint、/audio-extend-suffix、/audio-extend-prefix、/t2a、/a2a 與 /v2a。 |
| `lora_file` | object {url, content_type, file_name, file_size} | `.safetensors` 格式訓練 LoRA 權重的 URL。 |
| `config_file` | object {url, content_type, file_name, file_size} | 推論端點設定的組態。 |
| `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-trainer-v2/ic-lora/v2v
- 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-trainer-v2/ic-lora/v2v
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/ltx23-trainer-v2/ic-lora/v2v
