# LTX Video-0.9.7 13B Distilled · Extend API

> Extenda in video existent cun il model distillà 13B 0.9.7 e in prompt textual

Cuntinuescha il clip furnì en `video`, dirigì d'in `prompt` obligatoric. La sortida è 480p u 720p, cun `aspect_ratio` auto, 9:16, 1:1 u 16:9, e `num_frames` da 9 a 1441. `constant_rate_factor` (0 a 51) controlla la cumpressiun da l'entrada, e `loras` accepta ponderaziuns persunalizadas.

- Model id: `ltx-video-13b-distilled/extend`
- Made by: Lightricks
- Category: Video to Video
- Output: video
- Price: $0.04 / video (cheapest run $0.04 (40 API credits))
- Run: `POST https://api.doitong.com/v1/run/ltx-video-13b-distilled/extend`
- Quote: `POST https://api.doitong.com/v1/quote/ltx-video-13b-distilled/extend`
- Docs page: https://doitong.com/rm/developers/models/ltx-video-13b-distilled/extend

## Pricing

Price: **$0.04 / video**. Billed once per generated video.

The full example input below costs $0.04 = 40 API credits (1 video × 40 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/ltx-video-13b-distilled/extend` 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 |
|---|---|---|---|---|---|---|
| `prompt` |  | string | yes |  |  | Instrucziuns da text che guidan la generaziun. |
| `negative_prompt` |  | string | no | `worst quality, inconsistent motion, blurry, jittery, distorted` |  | Instrucziuns da text negativas per la generaziun. |
| `loras` |  | array of object {path, weight_name, scale} | no | `[]` |  | Ponderaziuns LoRA applitgadas durant la generaziun. |
| `loras[].path` |  | string | yes |  |  | Lieu da las ponderaziuns LoRA, furnì sco URL u via. |
| `loras[].weight_name` |  | string \| null | no |  |  | Num dal pais LoRA per tscherner tranter plirs pais en in repositori HuggingFace; necessari mo per repositoris cun plirs pais. Questa configuraziun n’ha nagin effect, sch’il `path` n’identifitgescha betg in repositori HuggingFace. |
| `loras[].scale` |  | number | no | `1` | 0 – 4 | Multiplicatur che scala la ponderaziun LoRA al chargiar. |
| `resolution` |  | enum (string) | no | `720p` | `480p`, `720p` | Resoluziun dal video d'output. |
| `aspect_ratio` |  | enum (string) | no | `auto` | `9:16`, `1:1`, `16:9`, `auto` | Proporziun d'aspect dal video. |
| `seed` |  | integer \| null | no |  |  | Seed che controlla la casualitad durant la generaziun. |
| `num_frames` |  | integer | no | `121` | 9 – 1,441 | Dumber total da frames dal video. |
| `first_pass_num_inference_steps` |  | integer | no | `8` | 2 – 12 | Dumber da pass d'inferenza per la prima passada. |
| `second_pass_num_inference_steps` |  | integer | no | `8` | 2 – 12 | Dumber da pass d'inferenza per la segunda passada. |
| `second_pass_skip_initial_steps` |  | integer | no | `5` | 1 – 11 | Dumber inizial da pass d'inferenza omess durant la segunda passada, spustond quella vers detagls fins empè da midadas grondas. |
| `frame_rate` |  | integer | no | `24` | 1 – 60 | Ritmus da frames dal video. |
| `expand_prompt` |  | boolean | no | `false` |  | Expansiun dal prompt tras in model da lingua. |
| `reverse_video` |  | boolean | no | `false` |  | Inversiun da l'urden da reproducziun dal video. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Interrupter da la verificaziun da segirezza, dal qual la configuraziun deactivada vegn respectada mo per contos autorisads. Tut las dumondas senza questa autorisaziun vegnan suttamessas a verificaziuns da segirezza. |
| `enable_detail_pass` |  | boolean | no | `false` |  | Segunda passada facultativa da refiniziun, che meglierescha ils detagls dal video sch'activada. |
| `temporal_adain_factor` |  | number | no | `0.5` | 0 – 1 | Forza da normalisaziun adattiva d'instanza (AdaIN), che equilibrescha la consistenza da colur cun valurs autas cunter dapli variaziun da colur cun valurs bassas. Ella opera sin blocs generads, exceptà il prim, normalisond las distribziuns da colur en l'entir video per cunterstar ad in augment progressiv da saturaziun u contrast. |
| `tone_map_compression_ratio` |  | number | no | `0` | 0 – 1 | Nivel da cumpressiun da tone mapping, da nagina cumpressiun tar 0.0 fin a la cumpressiun maximala tar 1.0. Questa cumpressiun dal range dinamic dal video meglierescha la qualitad visuala. |
| `constant_rate_factor` |  | integer | no | `29` | 0 – 51 | Constant rate factor (CRF) utilisà per la cumpressiun da l'input, che po meglierar la qualitad dal moviment avischinond il media furnì als datas da scolaziun dal model. |
| `video` |  | object {video_url, start_frame_num, strength, limit_num_frames, max_num_frames, resample_fps, target_fps, reverse_video} | yes |  |  | Video d'origin per l'extensiun. |
| `video.video_url` |  | string (video URL) | yes |  |  | Video da conditioning furnì via URL. |
| `video.start_frame_num` |  | integer | no | `0` | 0 – 1,440 | Posiziun da partenza dal conditioning en il video, definida sco dumber da frame divisibel cun 8. |
| `video.strength` |  | number | no | `1` | 0 – 1 | Intensitad dal conditioning: 0.0 disactivescha il conditioning, entant che 1.0 l'applitgescha cumplettamain. |
| `video.limit_num_frames` |  | boolean | no | `false` |  | Interrupter dal limit da frames dal video: activà fa da `max_num_frames` il limit dals frames prendids dal video. |
| `video.max_num_frames` |  | integer | no | `1441` | 1 – 1,441 | Limit da frames dal video utilisads, cun None che tscherna l'entir video empè d'in dumber limità da frames. |
| `video.resample_fps` |  | boolean | no | `false` |  | Interrupter da conversiun dal ritmus da frames dal video: activà fa in resampling dal video al ritmus inditgà da `target_fps`. |
| `video.target_fps` |  | integer | no | `24` | 1 – 60 | Ritmus da frames per il resampling en FPS, applitgabel mo cun `resample_fps` activà. |
| `video.reverse_video` |  | boolean | no | `false` |  | Inversiun da l'urden dal video per pensums che dovran il conditioning suandar ils frames enavos. |

## Example input

Required parameters only:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
  "video": {
    "video_url": "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": {
    "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-video-13b-distilled/extend?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": {
      "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-video-13b-distilled/extend?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": {
      "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": {
        "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-video-13b-distilled/extend", 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-video-13b-distilled/extend",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
        "video": {
          "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-video-13b-distilled/extend",
  "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": 40,
    "usd": "0.04",
    "charged": 40,
    "refunded": 0
  },
  "input": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "video": {
      "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
    },
    "prompt": "Woman walking on a street in Tokyo",
    "seed": 42
  },
  "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} | Datoteca video producida da la generaziun. |
| `prompt` | string | Prompt utilisà per generar l'output. |
| `seed` | integer | Valur da seed applitgada durant la generaziun. |

## Related models

- [LTX Video-0.9.7 13B Distilled](https://doitong.com/developers/models/ltx-video-13b-distilled.md) (`ltx-video-13b-distilled`): from $0.04 / second of output video
- [LTX Video-0.9.7 13B Distilled · Image to Video](https://doitong.com/developers/models/ltx-video-13b-distilled/image-to-video.md) (`ltx-video-13b-distilled/image-to-video`): from $0.04 / second of output video
- [LTX Video-0.9.7 13B Distilled · Multiconditioning](https://doitong.com/developers/models/ltx-video-13b-distilled/multiconditioning.md) (`ltx-video-13b-distilled/multiconditioning`): from $0.04 / second of output video
- [Ltx 2.3](https://doitong.com/developers/models/ltx-2.3/reframe.md) (`ltx-2.3/reframe`): from $0.10 / second of input video
- [LTX 2.3 22B](https://doitong.com/developers/models/ltx-2.3-22b/reference-video-to-video/lora.md) (`ltx-2.3-22b/reference-video-to-video/lora`): $0.00181 / 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-video-13b-distilled/extend
- 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-video-13b-distilled/extend
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/ltx-video-13b-distilled/extend
