# Ltx 2.3 Quality · Extend Video · LoRA API

> Yn ymestyn fideo ymlaen neu’n ôl gyda hyd at 3 LoRA arferol wedi’u cymhwyso

Estyniad fideo sydd hefyd yn derbyn rhestr `loras` ofynnol o hyd at 3 LoRA arferol, hyd at 3 GB yr un. Mae `prompt` yn disgrifio sut mae’r clip yn parhau, ac mae `extend_direction` yn dewis `forward` neu `backward`. Mae `num_context_frames` (9 i 121) yn rheoli’r gorgyffwrdd â’r ffynhonnell, `num_frames` (9 i 481) maint y segment, a gall `end_image_url` osod ffrâm allweddol ar y diwedd.

- Model id: `ltx-2.3-quality/extend-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/extend-video/lora`
- Quote: `POST https://api.doitong.ru/v1/quote/ltx-2.3-quality/extend-video/lora`
- Docs page: https://doitong.com/cy/developers/models/ltx-2.3-quality/extend-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/extend-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 |  |  | Anogiad sy'n nodi parhad dymunol y fideo. |
| `video_url` | `video` | string (video URL) | yes |  |  | URL sy'n pwyntio at y fideo a fydd yn cael ei ymestyn. |
| `extend_direction` |  | enum (string) | no | `forward` | `forward`, `backward` | Modd estyn fideo: mae 'backward' yn creu dechrau newydd, tra bo 'forward' yn parhau â'r fideo y tu hwnt i'w ddiwedd. |
| `num_frames` |  | integer | no | `121` | 9 – 481 | Cyfrif fframiau estyniad, sy'n ddarostyngedig i gyllideb cynhyrchu sefydlog ar gydraniad wedi'i luosi â fframiau: ar 24 fps, tua 20 eiliad ar gyfer dosbarth 480p, 11 eiliad ar gyfer dosbarth 720p, neu 5 eiliad ar gyfer dosbarth 1080p. Mae ceisiadau sy'n rhagori ar y gyllideb yn dychwelyd 422; gostyngwch `num_frames` neu dewiswch gydraniad llai. Mae'r cyfrif yn cynnwys `num_context_frames` sy'n gorgyffwrdd â'r ffynhonnell, felly mae'r hyd ychwanegol tua (`num_frames` - `num_context_frames`) / `frames_per_second` eiliad. |
| `num_context_frames` |  | integer | no | `25` | 9 – 121 | Cyfrif fframiau'r ffynhonnell y gofynnir amdano ar gyfer cyd-destun/gorgyffwrdd yr estyniad, wedi'i gyfyngu gan faint o fframiau sydd yn y ffynhonnell. Caiff y cyfrif ei dalgrynnu i lawr i ffitio grid LTX o 8k+1. |
| `end_image_url` | `end_image` | string (image URL) \| null | no |  |  | Delwedd fframiau allweddol ddewisol sy'n gosod ffrâm gyntaf newydd yr estyniad wrth ymestyn am yn ôl neu ei ffrâm olaf wrth ymestyn ymlaen. |
| `end_image_strength` |  | number | no | `1` | 0 – 1 | Cryfder cyflyru ffrâm allweddol olaf dewisol: mae ei leihau yn rhoi mwy o ryddid i'r model, tra bo 1.0 yn gorfodi cyfatebiaeth union. |
| `resolution` |  | object {width, height} \| enum (string) | no | `auto` | `auto`, `square_hd`, `square`, `portrait_4_3`, `portrait_16_9`, `landscape_4_3`, `landscape_16_9` | Dimensiynau'r fideo a gynhyrchir, wedi'u halinio i gynyddiadau 32px—er enghraifft, mae 1920x1080 yn dod yn 1888x1056—gyda'r ffynhonnell wedi'i hailfeintio i'r dimensiynau hyn ar gyfer yr allbwn wedi'i bwytho. Gall estyniadau sefydlog fod yn hirach ar gydraniadau is ac yn fyrrach ar rai uwch. Mae dewis 'auto' yn cadw dimensiynau a chymhareb agwedd y ffynhonnell cyn belled ag y mae cyfyngiadau LTX yn caniatáu. |
| `match_input_fps` |  | boolean | no | `true` |  | Cydweddu cyfradd fframiau'r allbwn â'r ffynhonnell pan gaiff ei alluogi, gan ddiystyru `frames_per_second`. Caiff FPS y ffynhonnell ei dalgrynnu i gyfanrif a'i gyfyngu i'r ystod a gefnogir. |
| `frames_per_second` |  | number | no | `24` | 1 – 60 | Cyfradd fframiau fideo'r allbwn, wedi'i mesur mewn fframiau yr eiliad. |
| `video_strength` |  | number | no | `1` | 0 – 1 | Cryfder cyflyru cyd-destun y ffynhonnell: mae ei leihau yn caniatáu mwy o ryddid i'r model. Ar 1.0, mae'r fframiau sy'n gorgyffwrdd yn aros wedi'u cloi i'r ffynhonnell, gan wneud y trawsnewidiad yn ddi-dor. |
| `num_inference_steps` |  | integer | no | `15` | 8 – 30 | Gosodwch faint o gamau casglu i redeg, hyd at 30; mae gadael hwn heb ei newid yn defnyddio 15. |
| `guidance_scale` |  | number | no | `1` | 1 – 20 | Addaswch arweiniad heb ddosbarthwr gan ddefnyddio'r raddfa hon; mae ei thiwnio rhagosodedig yn targedu ansawdd uchel a chynhyrchu cyflym. |
| `generate_audio` |  | boolean | no | `true` |  | Toglo sain yr estyniad: mae i ffwrdd yn gadael y segment ychwanegol yn dawel wrth gadw trac sain y fideo ffynhonnell. Mae ymlaen yn cynhyrchu sain ar gyfer yr estyniad ac yn ei chroes-ffadio â'r ffynhonnell wrth yr uniad. |
| `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` |  | Anogiad negyddol sy'n nodi'r hyn y dylai cynhyrchu ei osgoi. |
| `seed` |  | integer \| null | no |  |  | Hadau sy'n gwneud cynhyrchu'n atgynhyrchadwy. Mae ei osod i None yn dewis hedyn ar hap. |
| `enable_prompt_expansion` |  | boolean | no | `true` |  | Yn rheoli a yw ehangu'r anogiad wedi'i alluogi. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Rheoli a yw gwiriad diogelwch wedi'i alluogi. |
| `video_quality` |  | enum (string) | no | `high` | `low`, `medium`, `high`, `maximum` | Rhagosodiad ansawdd a gymhwysir i'r fideo allbwn. |
| `video_write_mode` |  | enum (string) | no | `balanced` | `fast`, `balanced`, `small` | Modd ysgrifennu'r fideo sy'n deillio o hynny. |
| `loras` |  | array of object {path, scale, transformer} | yes |  | ≤ 3 items | Ychwanegiadau LoRA ar gyfer LTX-2.3, pob un wedi'i gyfyngu i 3 GB, gyda hyd at 3 chofnod yn cael eu caniatáu. Dim ond ar ôl i lawrlwythwr diogel SSRF y gofrestrfa adfer pob llwybr y mae llwytho'n digwydd. |
| `loras[].path` |  | string | yes |  | ≤ 2048 characters | URL HTTP(S) uniongyrchol ar gyfer ffeil LoRA .safetensors heb fod yn fwy na 3 GB. Mae llwytho'n cael ei ragflaenu gan adfer drwy lawrlwythwr diogel SSRF. |
| `loras[].scale` |  | number | no | `1` | 0 – 2 | Mae dylanwad LoRA ar y fideo a gynhyrchir yn cynyddu wrth i'r cryfder hwn godi o fewn yr ystod 0.0–2.0. |
| `loras[].transformer` |  | enum (string) | no | `both` | `high`, `low`, `both` | Baner dewis trawsnewidydd: mae 'both' yn addas i bron bawb sy'n defnyddio LTX-2.3 oherwydd mai dim ond un trawsnewidydd sydd gan y model. Mae'r faner yn bodoli i gefnogi pensaernïaethau'r dyfodol â thrawsnewidyddion lluosog. |

File parameters (`video`, `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/extend-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/extend-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/extend-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/extend-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/extend-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} | Fideo a gynhyrchwyd gan y model. |
| `seed` | integer | Yr had gwirioneddol a gymhwysir wrth gynhyrchu. |
| `prompt` | string | Anogiad cynhyrchu, gan gynnwys unrhyw ehangu a gymhwysir cyn ei ddefnyddio. |

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