# Ltx 2.3 Quality · Extend Video API

> ویڈیو کو آگے یا پیچھے جاری کرتا ہے، اختیاری آخری کی فریم تصویر کے ساتھ

موجودہ کلپ کو مطلوبہ `prompt` کی رہنمائی میں نیا فوٹیج بنا کر بڑھاتا ہے۔ `extend_direction` میں `forward` اختتام سے جاری رکھتا ہے، جبکہ `backward` نیا آغاز بناتا ہے۔ `num_context_frames` (9 to 121) ماخذ کے اوورلیپ کی مقدار، اور `num_frames` (9 to 481) سیگمنٹ کی لمبائی مقرر کرتا ہے۔ اختیاری `end_image_url` آخری کی فریم طے کرتا ہے، جبکہ `match_input_fps` ماخذ کی فریم ریٹ برقرار رکھتا ہے۔

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

## Pricing

Price: **$0.00241 / 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.27 = 270 API credits (112 MP output video × $0.002408).

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/ltx-2.3-quality/extend-video` 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 |  |  | ویڈیو کے مطلوبہ تسلسل کی وضاحت کرنے والا پرامپٹ۔ |
| `video_url` | `video` | string (video URL) | yes |  |  | اس ویڈیو کی طرف اشارہ کرنے والا URL جسے توسیع دی جائے گی۔ |
| `extend_direction` |  | enum (string) | no | `forward` | `forward`, `backward` | ویڈیو extension mode: 'backward' نیا آغاز بناتا ہے، جبکہ 'forward' ویڈیو کو اس کے اختتام سے آگے جاری رکھتا ہے۔ |
| `num_frames` |  | integer | no | `121` | 9 – 481 | توسیعی فریم تعداد، جس پر ریزولوشن کو فریموں سے ضرب دینے والا stable-generation بجٹ لاگو ہے: 24 fps پر 480p-class کے لیے تقریباً 20 سیکنڈ، 720p-class کے لیے 11 سیکنڈ، یا 1080p-class کے لیے 5 سیکنڈ۔ بجٹ سے تجاوز پر 422 واپس ہوتا ہے؛ `num_frames` کم کریں یا کم ریزولوشن منتخب کریں۔ تعداد میں ماخذ سے overlap کرنے والے `num_context_frames` شامل ہیں، اس لیے شامل کیا گیا دورانیہ تقریباً (`num_frames` - `num_context_frames`) / `frames_per_second` سیکنڈ ہے۔ |
| `num_context_frames` |  | integer | no | `25` | 9 – 121 | توسیعی context/overlap کے لیے مطلوبہ ماخذ فریم تعداد، جو ماخذ میں موجود فریموں کی تعداد سے محدود ہے۔ تعداد کو LTX grid کے 8k+1 میں فٹ ہونے کے لیے نیچے کی طرف round کیا جاتا ہے۔ |
| `end_image_url` | `end_image` | string (image URL) \| null | no |  |  | اختیاری keyframe تصویر، جو backward توسیع میں نیا پہلا فریم یا forward توسیع میں آخری فریم متعین کرتی ہے۔ |
| `end_image_strength` |  | number | no | `1` | 0 – 1 | اختیاری آخری keyframe conditioning strength: اسے کم کرنے سے ماڈل کو زیادہ آزادی ملتی ہے، جبکہ 1.0 عین مطابقت نافذ کرتا ہے۔ |
| `resolution` |  | object {width, height} \| enum (string) | no | `auto` | `auto`, `square_hd`, `square`, `portrait_4_3`, `portrait_16_9`, `landscape_4_3`, `landscape_16_9` | تیار کردہ ویڈیو کے ابعاد، 32px increments سے ہم آہنگ؛ مثال کے طور پر 1920x1080، 1888x1056 بن جاتا ہے، اور stitched آؤٹ پٹ کے لیے ماخذ کو ان ابعاد میں resize کیا جاتا ہے۔ کم ریزولوشن پر stable extensions طویل اور زیادہ ریزولوشن پر مختصر ہو سکتی ہیں۔ 'auto' منتخب کرنے پر LTX limits کے اندر ماخذ کے ابعاد اور aspect ratio برقرار رہتے ہیں۔ |
| `match_input_fps` |  | boolean | no | `true` |  | فعال ہونے پر آؤٹ پٹ frame-rate کو ماخذ سے ملاتا ہے اور `frames_per_second` کو override کرتا ہے۔ ماخذ FPS کو integer میں round کر کے معاونت یافتہ range تک محدود کیا جاتا ہے۔ |
| `frames_per_second` |  | number | no | `24` | 1 – 60 | آؤٹ پٹ ویڈیو فریم rate، فریمز per سیکنڈ میں ناپا جاتا ہے۔ |
| `video_strength` |  | number | no | `1` | 0 – 1 | ماخذ context conditioning strength: اسے کم کرنے سے ماڈل کو زیادہ آزادی ملتی ہے۔ 1.0 پر overlapping فریم ماخذ سے locked رہتے ہیں، جس سے transition seamless ہوتا ہے۔ |
| `num_inference_steps` |  | integer | no | `15` | 8 – 30 | inference steps کی تعداد متعین کریں، زیادہ سے زیادہ 30؛ اسے تبدیل نہ کرنے پر 15 استعمال ہوتے ہیں۔ |
| `guidance_scale` |  | number | no | `1` | 1 – 20 | اس scale کے ذریعے classifier-free guidance ایڈجسٹ کریں؛ اس کی ڈیفالٹ tuning اعلیٰ معیار اور تیز تخلیق دونوں کے لیے ہے۔ |
| `generate_audio` |  | boolean | no | `true` |  | Extension-آڈیو ٹوگل: بند ہونے پر شامل segment خاموش رہتا ہے جبکہ ماخذ ویڈیو کا آڈیو track برقرار رہتا ہے۔ فعال ہونے پر extension کے لیے آڈیو تیار کیا جاتا ہے اور join پر ماخذ کے ساتھ crossfade کیا جاتا ہے۔ |
| `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` |  | منفی پرامپٹ جو بتاتا ہے کہ تخلیق میں کن چیزوں سے گریز کیا جائے۔ |
| `seed` |  | integer \| null | no |  |  | تخلیق کو قابلِ تکرار بنانے والا سیڈ۔ اسے None پر سیٹ کرنے سے سیڈ تصادفی طور پر منتخب ہوتا ہے۔ |
| `enable_prompt_expansion` |  | boolean | no | `true` |  | متعین کرتا ہے کہ پرامپٹ کی توسیع فعال ہے یا نہیں۔ |
| `enable_safety_checker` |  | boolean | no | `true` |  | یہ کنٹرول کرتا ہے کہ حفاظتی جانچ فعال ہو یا نہیں۔ |
| `video_quality` |  | enum (string) | no | `high` | `low`, `medium`, `high`, `maximum` | آؤٹ پٹ ویڈیو پر لاگو ہونے والا quality preset۔ |
| `video_write_mode` |  | enum (string) | no | `balanced` | `fast`, `balanced`, `small` | حاصل ہونے والی ویڈیو کا رائٹ موڈ۔ |

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
{
  "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
{
  "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.com/v1/run/ltx-2.3-quality/extend-video?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "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.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/ltx-2.3-quality/extend-video?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "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.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "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", 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": "ltx-2.3-quality/extend-video",
      "input": {
        "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",
  "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": 270,
    "usd": "0.27",
    "charged": 270,
    "refunded": 0
  },
  "input": {
    "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.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} | ماڈل کی تیار کردہ ویڈیو۔ |
| `seed` | integer | تخلیق کے دوران لاگو ہونے والی حقیقی seed۔ |
| `prompt` | string | تخلیقی پرامپٹ، جس میں استعمال سے پہلے کی گئی کوئی بھی expansion شامل ہے۔ |

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