# LTX-2.3 22B Video Trainer API

> Þjálfar LTX-2.3 22B LoRA fyrir sérsniðna myndskeiðsstíla og áhrif, með valfrjálsu hljóði

Þjálfar LoRA á LTX-2.3 22B-líkaninu fyrir sérsniðna stíla og áhrif úr zip-safni mynda eða myndskeiða, helst 10 eða fleiri skrám. `number_of_steps` er á bilinu 100 til 6000 (sjálfgefið 2000), `frame_rate` er sjálfgefið 25 og `first_frame_conditioning_p` er sjálfgefið 0.5. `with_audio` þvingar fram eða slekkur á hljóðþjálfun og `generate_audio_in_validation` stjórnar hljóði í forskoðunum.

- 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/is/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 ZIP-skjalasafns fyrir gagnasafn sem inniheldur eingöngu myndir eða eingöngu myndbönd; gagnasöfn með blönduðum miðlum eru ekki studd. Stefndu að 10 skrám eða fleiri, helst stærra safni. Samþykktar viðbætur eru .png, .jpg, .jpeg fyrir myndir og .mp4, .mov, .avi, .mkv fyrir myndbönd. Valfrjálsar textaskrár með lýsingum mega fylgja miðlunum, þar sem hver lýsingarskrá ber sama heiti og tengd miðlaskrá. |
| `rank` |  | enum (integer) | no | `32` | `8`, `16`, `32`, `64`, `128` | Aðlögunarstig LoRA, þar sem aukin minnisnotkun fæst gegn meiri getu eftir því sem stillingin hækkar. |
| `number_of_steps` |  | integer | no | `2000` | 100 – 6,000 | Heildarfjöldi þjálfunarskrefa. |
| `learning_rate` |  | number | no | `0.0002` | 0.000001 – 1 | Námshraði bestunar, sem vegur mögulegan hraðaauka í þjálfun á móti hættu á ofþjálfun þegar hann er hækkaður. |
| `number_of_frames` |  | integer | no | `89` | 9 – 121 | Fjöldi ramma í hverju þjálfunarsýni. Deiling fjöldans með 8 verður að skilja eftir afganginn 1; dæmi eru 1, 9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97. |
| `frame_rate` |  | integer | no | `25` | 8 – 60 | Markrammatíðni myndbands, mæld í römmum á sekúndu. |
| `resolution` |  | enum (string) | no | `medium` | `low`, `medium`, `high` | Þjálfunarupplausn. Hærri upplausn eykur minnisþörf. |
| `aspect_ratio` |  | enum (string) | no | `1:1` | `16:9`, `1:1`, `9:16` | Þjálfunarstærðarhlutfall. |
| `trigger_phrase` |  | string | no | `` |  | LoRA-stílvirkjunarsetning, sett fremst í texta við þjálfun. |
| `auto_scale_input` |  | boolean | no | `false` |  | Sjálfvirk aðlögun myndbands að umbeðinni FPS og rammtölu þegar hún er virk; myndgagnasöfn haldast óbreytt. |
| `split_input_into_scenes` |  | boolean | no | `true` |  | Senuskipting fyrir myndbönd sem fara yfir lengdarþröskuld, virk þegar gildið er true. |
| `split_input_duration_threshold` |  | number | no | `30` | 1 – 60 | Kveikja senuskiptingar gefin upp sem lengd í sekúndum: aðeins myndböndum sem eru lengri en þröskuldurinn er skipt. |
| `debug_dataset` |  | boolean | no | `false` |  | Skoðunarhamur forvinnslu til að yfirfara myndbönd, myndir og texta áður en full þjálfun keyrir. Þegar hann er virkur skilar þjálfarinn unnu þjálfunargagnasafni í skráasafni sem hægt er að hlaða niður til handvirkrar yfirferðar. |
| `with_audio` |  | boolean \| null | no |  |  | Veldu True til að knýja fram hljóðþjálfun samhliða myndbandsþjálfun eða False til að útiloka hljóð. Ef stillingin er látin vera sjálfgefið None er valið sjálfkrafa út frá því hvort uppgefin myndbönd innihaldi hljóð. |
| `audio_normalize` |  | boolean | no | `true` |  | Stöðlun hámarksstyrks, ráðlögð til að gera hljóðstyrk samræmdan í gagnasafninu með því að færa toppa á sameiginlegt stig. |
| `audio_preserve_pitch` |  | boolean | no | `true` |  | Varðveisla tónhæðar þegar lengd hljóðs og myndbands er ólík: virkt notar tímateygju eða þjöppun; óvirkt notar þess í stað klippingu eða þögn til uppfyllingar. |
| `first_frame_conditioning_p` |  | number | no | `0.5` | 0 – 1 | Bættu frammistöðu myndar-í-myndbandi með því að auka tíðni þess að þjálfun noti skilyrðingu fyrsta ramma; þetta gildi stillir þær líkur. |
| `validation` |  | array of object {prompt, image_url} | no | `[]` | ≤ 2 items | Staðfestingarkvaðningalisti þjálfunar þar sem inntak verður annaðhvort allt að innihalda myndir eða allt að sleppa þeim. |
| `validation[].prompt` |  | string | yes |  |  | Kvaðning notuð við staðfestingu. |
| `validation[].image_url` |  | string (image URL) \| null | no |  |  | Mynd fyrir staðfestingu myndar-í-myndband; aðeins leyfð ef hvert annað staðfestingarinn­tak inniheldur einnig mynd. |
| `validation_negative_prompt` |  | string | no | `worst quality, inconsistent motion, blurry, jittery, distorted` |  | Neikvæð kvaðning notuð við staðfestingu. |
| `validation_number_of_frames` |  | integer | no | `89` | 9 – 121 | Fjöldi ramma í hverju staðfestingarmyndbandi. |
| `validation_frame_rate` |  | integer | no | `25` | 8 – 60 | Markrammatíðni staðfestingarmyndbands, mæld í römmum á sekúndu. |
| `validation_resolution` |  | enum (string) | no | `high` | `low`, `medium`, `high` | Upplausn notuð við staðfestingu. |
| `validation_aspect_ratio` |  | enum (string) | no | `1:1` | `16:9`, `1:1`, `9:16` | Stærðarhlutfall notað við staðfestingu. |
| `stg_scale` |  | number | no | `1` | 0 – 3 | Spatio-Temporal Guidance (STG)-kvarði, þar sem mælt er með 1.0 en 0.0 slekkur á STG. |
| `generate_audio_in_validation` |  | boolean | no | `true` |  | Stýrir því hvort staðfestingarsýni innihaldi búið til hljóð. |

## 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 allra tiltækra staðfestingarmyndbanda. |
| `lora_file` | object {url, content_type, file_name, file_size} | URL á þjálfaðar LoRA-vigtir á .safetensors-sniði. |
| `config_file` | object {url, content_type, file_name, file_size} | Uppsetning fyrir uppsetningu ályktunarendapunkts. |
| `debug_dataset` | object {url, content_type, file_name, file_size} \| null | Villuleitarsafn sem hægt er að sækja og skilað er aðeins fyrir inntak með virkt `debug_dataset`; það inniheldur forunnið þjálfunargagnasafn, þar á meðal afkóðað hljóð og myndband. |

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