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

> Referans kontrol videosuyla yönlendirilen, eşleştirilmiş önce/sonra kliplerinden video-video LoRA'sı eğitir

Eşleştirilmiş önce ve sonra kliplerinden bir dönüşüm öğrenen ve çıkarım sırasında bir referans video tarafından yönlendirilen bir LoRA eğitir. Varsayılanlar 3000 adım ve 0.1 `first_frame_conditioning_p` değeridir. `reference_downscale_factor` ve `reference_temporal_scale_factor` (1 ile 8 arası), kaba veya düşük FPS'li referans proxy'lerine olanak tanır.

- Model id: `ltx23-trainer-v2/v2v`
- Made by: Lightricks
- Category: Training
- Output: file
- Price: $0.0059 / step (cheapest run $17.70 (17700 API credits))
- Run: `POST https://api.doitong.com/v1/run/ltx23-trainer-v2/v2v`
- Quote: `POST https://api.doitong.com/v1/quote/ltx23-trainer-v2/v2v`
- Docs page: https://doitong.com/tr/developers/models/ltx23-trainer-v2/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.com/v1/quote/ltx23-trainer-v2/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 |  |  | Seçilen eğitim moduna göre düzenlenmiş eğitim verilerini içeren bir `.zip` dosyasının URL'si. Her medya dosyasına, aynı temel ada sahip bir `.txt` açıklaması eşlik edebilir. |
| `rank` |  | enum (integer) | no | `32` | `8`, `16`, `32`, `64`, `128` | LoRA uyarlama derecesi; değer yükseldikçe artan bellek tüketimi karşılığında daha yüksek kapasite sağlar. |
| `number_of_steps` |  | integer | no | `3000` | 100 – 10,000 | Toplam eğitim adımı sayısı. |
| `learning_rate` |  | number | no | `0.0002` | 0.000001 – 1 | Optimizasyon öğrenme hızı. |
| `number_of_frames` |  | integer | no | `89` | 9 – 121 | Her eğitim örneğindeki kare sayısı. Sayının 8'e bölünmesinden kalan 1 olmalıdır; örnekler: 1, 9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97. |
| `frame_rate` |  | integer | no | `24` | 8 – 60 | Eğitim videosunun saniye başına kare cinsinden hedef kare hızı. LTX-2.3 için yerel hız 24'tür. |
| `resolution` |  | enum (string) | no | `medium` | `low`, `medium`, `high` | Eğitim çözünürlüğü. Çözünürlüğün artırılması bellek gereksinimlerini yükseltir. |
| `aspect_ratio` |  | enum (string) | no | `1:1` | `16:9`, `1:1`, `9:16` | Eğitim en-boy oranı. |
| `trigger_phrase` |  | string | no | `` |  | Eğitim sırasında açıklamaların başına eklenen LoRA stil etkinleştirme ifadesi. |
| `auto_scale_input` |  | boolean | no | `false` |  | Etkinleştirildiğinde videoyu istenen FPS ve kare sayısına uyacak şekilde otomatik ayarlar; görsel veri kümeleri değişmeden kalır. |
| `split_input_into_scenes` |  | boolean | no | `true` |  | Süre eşiğini aşan videolar için sahne bölme; true olduğunda etkinleştirilir. |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | Saniye cinsinden süre olarak ifade edilen sahne bölme tetikleyicisi: yalnızca eşikten uzun videolar bölünür. |
| `debug_dataset` |  | boolean | no | `false` |  | Tam eğitim çalıştırmasından önce videoları, görselleri ve açıklamaları denetlemek için ön işleme inceleme modu. Etkinleştirildiğinde eğitici, işlenmiş eğitim veri kümesini manuel inceleme için indirilebilir bir arşivde döndürür. |
| `first_frame_conditioning_p` |  | number | no | `0.1` | 0 – 1 | Eğitimin ilk kare koşullandırmasını kullanma sıklığını azaltarak videodan videoya dönüşümü öne çıkarır; bu değer olasılığı belirler. |
| `validation` |  | array of object {prompt, reference_video_url} | no | `[]` | ≤ 2 items | İstemleri referans videolarla eşleştiren doğrulama girdi listesi. |
| `validation[].prompt` |  | string | yes |  |  | Doğrulama sırasında kullanılan istem. |
| `validation[].reference_video_url` |  | string (video URL) | yes |  | ≥ 1 characters | IC-LoRA doğrulaması sırasında dönüştürülecek videoyu URL'si üzerinden sağlayın. |
| `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.` |  | Tek aşamalı önizleme işlemi kullanan doğrulama sırasında uygulanan negatif istem. Bu işlem, iki aşamalı damıtılmış üretim çıkarımını yaklaşık olarak taklit ettiğinden yönlendirmesi ve önizleme kalitesi nihai sonuçlardan farklıdır. |
| `validation_number_of_frames` |  | integer | no | `89` | 9 – 121 | Her doğrulama videosundaki kare sayısı. |
| `validation_frame_rate` |  | integer | no | `24` | 8 – 60 | Doğrulama videoları için saniye başına kare cinsinden hedef kare hızı; LTX-2.3 yerel olarak 24 hızında çalışır. |
| `validation_resolution` |  | enum (string) | no | `high` | `low`, `medium`, `high` | Doğrulama sırasında kullanılan çözünürlük. |
| `validation_aspect_ratio` |  | enum (string) | no | `1:1` | `16:9`, `1:1`, `9:16` | Doğrulama sırasında kullanılan en-boy oranı. |
| `stg_scale` |  | number | no | `1` | 0 – 3 | 1.0 önerilen Spatio-Temporal Guidance (STG) ölçeği; 0.0 STG'yi kapatır. |
| `reference_downscale_factor` |  | integer | no | `1` | 1 – 8 | IC-LoRA kontrol referans videosu için uzamsal küçültme katsayısı; 1 varsayılandır ve çözünürlüğü ile davranışı korur. Kodlamadan önce referans, LoRA'ya küçük poz, derinlik veya eskiz vekili gibi kaba, düşük çözünürlüklü girdiden tam çözünürlüklü çıktı üretmeyi öğretmek için bu katsayıyla küçültülür. Katsayıya bölmeden önce ve sonra hem genişlik hem yükseklik için 32'ye bölünebilirlik gerekir. |
| `reference_temporal_scale_factor` |  | integer | no | `1` | 1 – 8 | IC-LoRA kontrolü için referans kare hızı küçültme katsayısı; fps'yi ve davranışı korumak üzere varsayılan değer 1'dir. Referans video, kodlamadan önce bu katsayıyla zamansal olarak alt örneklenir ve düşük fps'li bir referansın LoRA'yı yönlendirmesi sağlanır. |

## 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-trainer-v2/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.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-trainer-v2/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.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-trainer-v2/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.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-trainer-v2/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/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.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 | Video üreten uç noktalar için kullanılabildiğinde doğrulamadan birleştirilmiş video önizlemesi. |
| `audio` | object {url, content_type, file_name, file_size} \| null | Yalnızca ses rotaları için kullanılabildiğinde önizleme olarak sağlanan doğrulamadan birleştirilmiş ses: /audio-inpaint, /audio-extend-suffix, /audio-extend-prefix, /t2a, /a2a ve /v2a. |
| `lora_file` | object {url, content_type, file_name, file_size} | .safetensors biçimindeki eğitilmiş LoRA ağırlıkları için URL. |
| `config_file` | object {url, content_type, file_name, file_size} | Çıkarım uç noktası kurulumu için yapılandırma. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | `debug_dataset` etkinleştirildiğinde kullanılabilen hata ayıklama çıktısı: ön işlemeden geçmiş eğitim verilerini içeren indirilebilir bir arşiv. |

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