# Ltx 2.3 Quality · Reference Video to Video · LoRA API

> Uzalishaji wa video ya marejeleo kama toleo la msingi, lakini ukitumia hadi LoRA 3 maalum

Huzalisha video kutoka kwa `prompt` ya lazima na `video_url` ya rejeleo kwa mwendo na muundo, na pia inahitaji `loras`, hadi faili 3 za LoRA zenye ukubwa wa juu wa 3 GB kila moja. Picha za hiari za fremu muhimu ya kwanza, ya kati na ya mwisho (`image_url`, `mid_image_url`, `end_image_url`) huweka mwonekano. `video_strength` na `strength` huanzia 0 hadi 1, na `num_frames` huanzia 9 hadi 481.

- Model id: `ltx-2.3-quality/reference-video-to-video/lora`
- Made by: Lightricks
- Category: Video to Video
- Output: video
- Price per megapixel of your output video: $0.00271 / megapixel of output video (cheapest run $0.003 (3 API credits))
- Run: `POST https://api.doitong.ru/v1/run/ltx-2.3-quality/reference-video-to-video/lora`
- Quote: `POST https://api.doitong.ru/v1/quote/ltx-2.3-quality/reference-video-to-video/lora`
- Docs page: https://doitong.com/sw/developers/models/ltx-2.3-quality/reference-video-to-video/lora

## Pricing

Price: **$0.00271 / megapixel of output video**. Price per megapixel of your output video: the input files are measured before the run (length, resolution, frame rate). The quote measures the same files and is exactly what the run charges.

The full example input below costs $0.304 = 304 API credits (112 MP output video × $0.002708).

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/ltx-2.3-quality/reference-video-to-video/lora` 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

Send either the canonical name or the native field name (not both). Canonical names are the same across models.

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `prompt` |  | string | yes |  |  | Kidokezo kinachotumika kuelekeza uzalishaji. |
| `video_url` | `video` | string (video URL) | yes |  |  | URL inayoelekeza kwenye video rejeleo inayotumiwa kuongoza mwendo na muundo. |
| `control_video_url` |  | string (video URL) \| null | no |  |  | Video ya hiari ya udhibiti iliyohesabiwa awali, inayotumiwa badala ya makadirio ya udhibiti yaliyojengwa ndani inapotolewa pamoja na `skip_control_preprocess`. Inakuwa ishara ya moja kwa moja ya udhibiti baada ya kubadilishwa ukubwa ili kuendana na vipimo vya tokeo na idadi ya fremu. Video inaweza, kwa mfano, kuwa na mchanganyiko wa kina, kingo au mkao uliotengenezwa tayari. |
| `skip_control_preprocess` |  | boolean | no | `false` |  | Hali ya udhibiti wa moja kwa moja inayotumia `control_video_url` badala ya kukadiria kina, kingo au mkao ndani; bila URL hiyo, mpangilio huu hupuuzwa. Upimaji wa tokeo katika hali hii huheshimu vipimo vilivyobainishwa kwa ulinganifu wa 64 ili video za RGB na udhibiti zilingane, huku `auto` ikichukua vipimo na uwiano wa chanzo ndani ya mipaka ya LTX. |
| `preserve_original_video` |  | boolean | no | `false` |  | Hali ya kuhifadhi video asili, inayopatikana tu pamoja na `skip_control_preprocess`, `video_url`, na `control_video_url`. Imezimwa kwa chaguomsingi na huacha uchakataji wa kawaida wa udhibiti ukiwa hai; kuiwasha huanzisha uzalishaji kutoka `video_url` huku ikihifadhi mwongozo wa muundo kutoka `control_video_url`. Kuondoa kelele kupitia `strength` huweka kiasi kinachohifadhiwa, huku mipangilio ya chini ikihifadhi pikseli zaidi za asili. |
| `image_url` | `image` | string (image URL) \| null | no |  |  | Mtindo wa hiari wa kuweka picha nanga au utambulisho wa mhusika kama fremu muhimu ya kwanza. |
| `mid_image_url` |  | string (image URL) \| null | no |  |  | Mwonekano wa hiari wa kuweka picha nanga karibu na katikati ya klipu, ukikamilisha fremu muhimu ya awali ya `image_url`. Husaidia mwonekano kufuatilia mwendo wa kamera badala ya kuyumba; inahitaji `image_url`. |
| `end_image_url` | `end_image` | string (image URL) \| null | no |  |  | Mwonekano wa hiari wa kuweka picha nanga kwenye fremu ya mwisho ya klipu. Ni muhimu mwendo wa kamera unapoishia mahali tofauti na picha ya kuanzia; inahitaji `image_url`. |
| `video_strength` |  | number | no | `0.6` | 0 – 1 | Uhuru wa kubadilisha mwendo na muundo kutoka kwenye video rejeleo hudhibitiwa na nguvu hii ya urekebishaji: mipangilio midogo huruhusu mabadiliko makubwa zaidi. |
| `strength` |  | number | no | `1` | 0 – 1 | Udhibiti wa kuondoa kelele kwa sampuli za video-kwa-video za rejeleo, ambao athari yake hutegemea `preserve_original_video`. Hali hiyo ikiwa imezimwa, hupunguza tu ratiba ya kuondoa kelele; ikiwa imewashwa, hudhibiti ubadilishaji wa pikseli za chanzo, ambapo 1.0 huzalisha kila kitu upya na mipangilio ya chini huhifadhi zaidi. |
| `num_frames` |  | integer | no | `121` | 9 – 481 | Idadi ya fremu za tokeo, kulingana na bajeti ya uthabiti ya IC-LoRA inayotegemea mwonekano kuzidishwa kwa fremu. Jibu la 422 linamaanisha bajeti hiyo imezidiwa: punguza mwonekano au `num_frames`. Bajeti inaruhusu takribani fremu 150 kwa vipimo vya daraja la 720p na zaidi kwa ukubwa mdogo. |
| `resolution` |  | object {width, height} \| enum (string) | no | `auto` | `auto`, `square_hd`, `square`, `portrait_4_3`, `portrait_16_9`, `landscape_4_3`, `landscape_16_9` | Vipimo vya video ya tokeo, ambavyo pia huathiri muda thabiti: ukubwa mdogo huruhusu fremu zaidi, huku mkubwa ukipunguza kiwango cha juu. Makadirio ya udhibiti yaliyojengwa ndani huweka ukubwa karibu na mtiririko rasmi wa udhibiti; udhibiti wa moja kwa moja kupitia `skip_control_preprocess` na `control_video_url` huheshimu vipimo vilivyobainishwa kwa ulinganifu wa 64. Katika hali ya udhibiti wa moja kwa moja, `auto` hurithi vipimo na uwiano wa chanzo ndani ya mipaka ya LTX. |
| `frames_per_second` |  | number | no | `24` | 1 – 60 | Kiwango cha fremu za video ya tokeo, kinachopimwa kwa fremu kwa sekunde. |
| `num_inference_steps` |  | integer | no | `15` | 8 – 30 | Weka idadi ya hatua za inference za kuendesha, hadi 30; kuiacha bila kubadilishwa hutumia 15. |
| `guidance_scale` |  | number | no | `1` | 1 – 20 | Rekebisha mwongozo usio na classifier kwa kutumia kipimo hiki; urekebishaji wake chaguomsingi hulenga ubora wa juu na uzalishaji wa haraka. |
| `generate_audio` |  | boolean | no | `true` |  | Kigeuzi cha wimbo wa sauti kwa MP4 inayorejeshwa: ikiwa kimezimwa hutengeneza faili ya video pekee, na kikiwa kimewashwa hujumuisha sauti. |
| `negative_prompt` |  | string | no | `color distortion, overexposure, static, blurry details, subtitles, style, artwork, painting, frame, still, dim overall tone, worst quality, low quality, JPEG compression artifacts, ugly, mutilated, extra fingers, poorly drawn hands, poorly drawn face, deformed, disfigured, malformed limbs, fused fingers, motionless frame, cluttered background, three legs, crowded background, walking backwards` |  | Kidokezo hasi kinachobainisha kile ambacho uzalishaji unapaswa kuepuka. |
| `seed` |  | integer \| null | no |  |  | Seed inayofanya uzalishaji uweze kurudiwa. Kuiweka kuwa None huchagua seed bila mpangilio. |
| `enable_prompt_expansion` |  | boolean | no | `true` |  | Hudhibiti ikiwa upanuzi wa kidokezo umewashwa. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Hudhibiti ikiwa ukaguzi wa usalama umewashwa. |
| `video_quality` |  | enum (string) | no | `high` | `low`, `medium`, `high`, `maximum` | Preset ya ubora inayotumika kwenye video ya tokeo. |
| `video_write_mode` |  | enum (string) | no | `balanced` | `fast`, `balanced`, `small` | Hali ya kuandika ya video inayotokana. |
| `loras` |  | array of object {path, scale, transformer} | yes |  | ≤ 3 items | Nyongeza za LoRA za LTX-2.3, kila moja ikiwa na kikomo cha 3 GB, na zinazoruhusu hadi maingizo 3. Upakiaji hutokea tu baada ya downloader salama dhidi ya SSRF wa registry kupata kila njia. |
| `loras[].path` |  | string | yes |  | ≤ 2048 characters | URL ya moja kwa moja ya HTTP(S) ya faili ya LoRA .safetensors isiyozidi 3 GB. Upakiaji hutanguliwa na upatikanaji kwa kutumia downloader salama dhidi ya SSRF. |
| `loras[].scale` |  | number | no | `1` | 0 – 2 | Ushawishi wa LoRA kwenye video iliyozalishwa huongezeka kadiri nguvu hii inavyoongezeka ndani ya masafa ya 0.0–2.0. |
| `loras[].transformer` |  | enum (string) | no | `both` | `high`, `low`, `both` | Bendera ya uteuzi wa Transformer: 'both' inafaa karibu kila mtumiaji wa LTX-2.3 kwa sababu modeli ina transformer moja pekee. Bendera ipo kusaidia usanifu wa baadaye wenye transformer nyingi. |

File parameters (`video`, `control_video_url`, `image`, `mid_image_url`, `end_image`) take a public `https://` URL, a `data:` URI up to 10 MB, or the `file_url` of an upload from `POST /files`.

## Example input

Required parameters only:

```json
{
  "loras": [
    {
      "path": "https://example.com/your-file.safetensors"
    }
  ],
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
  "video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}
```

A fuller example:

```json
{
  "loras": [
    {
      "path": "https://example.com/your-file.safetensors"
    }
  ],
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
  "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}
```

## 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/ltx-2.3-quality/reference-video-to-video/lora?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "loras": [
      {
        "path": "https://example.com/your-file.safetensors"
      }
    ],
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  }'

# 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/ltx-2.3-quality/reference-video-to-video/lora?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "loras": [
      {
        "path": "https://example.com/your-file.safetensors"
      }
    ],
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  }),
});
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 = {
    "loras": [
        {
            "path": "https://example.com/your-file.safetensors",
        },
    ],
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/ltx-2.3-quality/reference-video-to-video/lora", 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": "ltx-2.3-quality/reference-video-to-video/lora",
      "input": {
        "loras": [
          {
            "path": "https://example.com/your-file.safetensors"
          }
        ],
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
        "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
      },
      "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": "ltx-2.3-quality/reference-video-to-video/lora",
  "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": 304,
    "usd": "0.304",
    "charged": 304,
    "refunded": 0
  },
  "input": {
    "loras": [
      {
        "path": "https://example.com/your-file.safetensors"
      }
    ],
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  },
  "output": {
    "video": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_name": "0-output.mp4",
      "file_size": 1843200
    },
    "seed": 42,
    "prompt": "string"
  },
  "outputs": [
    {
      "type": "video",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_size": 1843200,
      "width": 1280,
      "height": 720,
      "duration": 5,
      "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} | Video iliyozalishwa na modeli. |
| `seed` | integer | Seed halisi iliyotumika wakati wa uzalishaji. |
| `prompt` | string | Kidokezo cha uzalishaji, pamoja na upanuzi wowote uliotumika kabla ya matumizi. |

## Related models

- [Ltx 2.3 Quality · Text to Video](https://doitong.com/developers/models/ltx-2.3-quality/text-to-video.md) (`ltx-2.3-quality/text-to-video`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Text to Video · LoRA](https://doitong.com/developers/models/ltx-2.3-quality/text-to-video/lora.md) (`ltx-2.3-quality/text-to-video/lora`): $0.00271 / megapixel of output video
- [Ltx 2.3 Quality · Image to Video](https://doitong.com/developers/models/ltx-2.3-quality/image-to-video.md) (`ltx-2.3-quality/image-to-video`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Image to Video · LoRA](https://doitong.com/developers/models/ltx-2.3-quality/image-to-video/lora.md) (`ltx-2.3-quality/image-to-video/lora`): $0.00271 / megapixel of output video
- [Ltx 2.3 Quality · Ingredient](https://doitong.com/developers/models/ltx-2.3-quality/ingredient.md) (`ltx-2.3-quality/ingredient`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Clean Plate](https://doitong.com/developers/models/ltx-2.3-quality/clean-plate.md) (`ltx-2.3-quality/clean-plate`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Colorization](https://doitong.com/developers/models/ltx-2.3-quality/colorization.md) (`ltx-2.3-quality/colorization`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Cross Eyed](https://doitong.com/developers/models/ltx-2.3-quality/cross-eyed.md) (`ltx-2.3-quality/cross-eyed`): $0.00241 / megapixel of output video

## Links

- HTML page: https://doitong.com/developers/models/ltx-2.3-quality/reference-video-to-video/lora
- 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=ltx-2.3-quality/reference-video-to-video/lora
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/ltx-2.3-quality/reference-video-to-video/lora
