# LTX-Video 13B 0.9.8 Distilled · Extend API

> 텍스트 프롬프트로 안내하여 0.9.8 증류 13B 모델로 기존 비디오를 확장합니다

`video`로 전달한 클립을 필수 `prompt`로 안내하여 이어서 생성합니다. 해상도는 480p 또는 720p이며 `aspect_ratio`는 auto, 9:16, 1:1 또는 16:9일 수 있습니다. `num_frames` 범위는 9~1441입니다. `constant_rate_factor` (0~51)는 입력을 압축해 학습 데이터와 더 잘 맞추며 `loras`는 사용자 지정 가중치를 받습니다.

- Model id: `ltxv-13b-098-distilled/extend`
- Made by: Lightricks
- Category: Video to Video
- Output: video
- Price per second of your output video: from $0.02 / second of output video (cheapest run $0.02 (20 API credits))
- Run: `POST https://api.doitong.ru/v1/run/ltxv-13b-098-distilled/extend`
- Quote: `POST https://api.doitong.ru/v1/quote/ltxv-13b-098-distilled/extend`
- Docs page: https://doitong.com/ko/developers/models/ltxv-13b-098-distilled/extend

## Pricing

Price: **from $0.02 / second of output video** (the lowest tier; the quote prices your exact input). Price per second 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.101 = 101 API credits (5.0417 s output video × $0.02).

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/ltxv-13b-098-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 |  |  | 생성을 안내하는 텍스트 지침입니다. |
| `negative_prompt` |  | string | no | `worst quality, inconsistent motion, blurry, jittery, distorted` |  | 생성에 사용할 부정 텍스트 지침입니다. |
| `loras` |  | array of object {path, weight_name, scale} | no | `[]` |  | 생성 중 적용할 LoRA 가중치입니다. |
| `loras[].path` |  | string | yes |  |  | URL 또는 경로로 지정하는 LoRA 가중치 위치입니다. |
| `loras[].weight_name` |  | string \| null | no |  |  | HuggingFace 리포지토리에서 여러 가중치 중 선택하는 LoRA 가중치 이름입니다. 여러 가중치를 포함한 리포지토리에서만 필요합니다. `path`가 HuggingFace 리포지토리를 식별하지 않으면 적용되지 않습니다. |
| `loras[].scale` |  | number | no | `1` | 0 – 4 | LoRA 가중치를 로드할 때 가중치를 조정하는 배수입니다. |
| `resolution` |  | enum (string) | no | `720p` | `480p`, `720p` | 출력 동영상의 해상도입니다. |
| `aspect_ratio` |  | enum (string) | no | `auto` | `9:16`, `1:1`, `16:9`, `auto` | 동영상 가로세로 비율입니다. |
| `seed` |  | integer \| null | no |  |  | 생성 중 무작위성을 제어하는 시드입니다. |
| `num_frames` |  | integer | no | `121` | 9 – 1,441 | 동영상의 전체 프레임 수입니다. |
| `first_pass_num_inference_steps` |  | integer | no | `8` | 2 – 12 | 첫 번째 패스의 추론 단계 수입니다. |
| `second_pass_num_inference_steps` |  | integer | no | `8` | 2 – 12 | 두 번째 패스의 추론 단계 수입니다. |
| `second_pass_skip_initial_steps` |  | integer | no | `5` | 1 – 11 | 두 번째 패스에서 생략할 초기 추론 단계 수입니다. 이를 통해 해당 패스가 대규모 변경보다 미세한 디테일 작업에 집중하도록 합니다. |
| `frame_rate` |  | integer | no | `24` | 1 – 60 | 동영상의 프레임 속도입니다. |
| `expand_prompt` |  | boolean | no | `false` |  | 언어 모델을 통한 프롬프트 확장입니다. |
| `reverse_video` |  | boolean | no | `false` |  | 동영상 재생 순서를 반대로 바꿉니다. |
| `enable_safety_checker` |  | boolean | no | `true` |  | 안전 검사를 제어하는 스위치입니다. 끄기 설정은 승인된 계정에서만 적용됩니다. 해당 승인이 없는 모든 요청은 안전 검사를 거칩니다. |
| `enable_detail_pass` |  | boolean | no | `false` |  | 활성화하면 동영상 디테일을 개선하는 선택적 두 번째 개선 패스입니다. |
| `temporal_adain_factor` |  | number | no | `0.5` | 0 – 1 | 적응형 인스턴스 정규화(AdaIN) 강도입니다. 높은 설정에서는 색상 일관성을, 낮은 설정에서는 더 큰 색상 변화를 조절합니다. 첫 번째 청크를 제외한 생성 청크에 적용되며, 동영상 전체에서 색상 분포를 정규화해 채도 또는 대비가 점진적으로 증가하는 현상을 줄입니다. |
| `tone_map_compression_ratio` |  | number | no | `0` | 0 – 1 | 톤 매핑 압축 수준입니다. 0.0에서는 압축하지 않고 1.0에서는 최대로 압축합니다. 이러한 방식으로 동영상의 동적 범위를 압축하면 시각적 품질이 향상됩니다. |
| `constant_rate_factor` |  | integer | no | `29` | 0 – 51 | 입력 압축에 사용하는 고정 비율 인자(CRF)입니다. 제공된 미디어를 모델의 학습 데이터에 더 가깝게 만들어 동작 품질을 개선할 수 있습니다. |
| `video` |  | object {video_url, start_frame_num, strength, limit_num_frames, max_num_frames, resample_fps, target_fps, reverse_video} | yes |  |  | 확장할 소스 동영상입니다. |
| `video.video_url` |  | string (video URL) | yes |  |  | URL로 제공하는 조건화 동영상입니다. |
| `video.start_frame_num` |  | integer | no | `0` | 0 – 1,440 | 동영상에서 조건화를 시작할 위치이며 8로 나누어떨어지는 프레임 번호로 지정합니다. |
| `video.strength` |  | number | no | `1` | 0 – 1 | 조건화 강도입니다. 0.0은 조건화를 비활성화하고 1.0은 완전히 적용합니다. |
| `video.limit_num_frames` |  | boolean | no | `false` |  | 동영상 프레임 제한 스위치입니다. 활성화하면 동영상에서 가져올 프레임 수의 상한으로 `max_num_frames`를 사용합니다. |
| `video.max_num_frames` |  | integer | no | `1441` | 1 – 1,441 | 동영상에서 사용할 프레임 수의 상한입니다. None은 제한된 프레임 수가 아닌 전체 동영상을 선택합니다. |
| `video.resample_fps` |  | boolean | no | `false` |  | 동영상 프레임 속도 변환 스위치입니다. 활성화하면 `target_fps`로 지정한 속도로 동영상을 리샘플링합니다. |
| `video.target_fps` |  | integer | no | `24` | 1 – 60 | `resample_fps`가 활성화된 경우에만 적용되는 FPS 리샘플링 프레임 속도입니다. |
| `video.reverse_video` |  | boolean | no | `false` |  | 조건화가 프레임을 역순으로 따라가야 하는 작업을 위한 동영상 순서 반전입니다. |

## 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.ru/v1/run/ltxv-13b-098-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.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/ltxv-13b-098-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.ru/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/ltxv-13b-098-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.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": "ltxv-13b-098-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": "ltxv-13b-098-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": 101,
    "usd": "0.101",
    "charged": 101,
    "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.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} | 생성으로 만들어진 동영상 파일입니다. |
| `prompt` | string | 출력 생성에 사용된 프롬프트입니다. |
| `seed` | integer | 생성 중 적용되는 시드 값입니다. |

## Related models

- [LTX-Video 13B 0.9.8 Distilled](https://doitong.com/developers/models/ltxv-13b-098-distilled.md) (`ltxv-13b-098-distilled`): from $0.02 / second of output video
- [LTX-Video 13B 0.9.8 Distilled · Image to Video](https://doitong.com/developers/models/ltxv-13b-098-distilled/image-to-video.md) (`ltxv-13b-098-distilled/image-to-video`): from $0.02 / second of output video
- [LTX-Video 13B 0.9.8 Distilled · Multiconditioning](https://doitong.com/developers/models/ltxv-13b-098-distilled/multiconditioning.md) (`ltxv-13b-098-distilled/multiconditioning`): from $0.02 / 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/ltxv-13b-098-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=ltxv-13b-098-distilled/extend
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/ltxv-13b-098-distilled/extend
