> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ltx.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ltx.io/_mcp/server.

# LTX-2.5

> LTX-2.5 supports text-to-video, image-to-video, and audio-to-video in portrait and landscape — ltx-2-5-fast up to 4K, ltx-2-5-pro up to 1080p.

LTX-2.5 comes in two variants: `ltx-2-5-fast` for speed and low cost, and `ltx-2-5-pro` for higher fidelity. Fast produces portrait and landscape video up to 4K; Pro tops out at 1080p.

LTX-2.5 improves every stage of generation on a stronger foundation: a Diffusion Video Decoder with industry-leading pixel quality, higher fidelity, native multi-shot scenes, and a better distilled model.

Native multi-shot means a single generation can produce multiple connected shots, holding character, scene, lighting, visual style, and voice consistent across cuts.

## Supported endpoints

| Endpoint       | ltx-2-5-fast | ltx-2-5-pro |
| -------------- | ------------ | ----------- |
| text-to-video  | ✓            | ✓           |
| image-to-video | ✓            | ✓           |
| audio-to-video | ✓            | ✓           |
| retake         | —            | —           |
| extend         | —            | —           |
| reframe        | —            | —           |

Both variants accept `camera_motion`, `generate_audio: false` for silent video, `last_frame_uri` on image-to-video, and [automatic duration](#automatic-duration).

## Support matrix

Resolutions, FPS values, and duration options supported by each variant.

The tables below apply to text-to-video and image-to-video. Audio-to-video has its own
resolution, FPS, and duration limits — see the
[audio-to-video reference](/api-documentation/api-reference/async-video-generation/submit-audio-to-video).

| Model            | Resolution | FPS            | Duration (seconds)           |
| ---------------- | ---------- | -------------- | ---------------------------- |
| **ltx-2-5-fast** | 720p       | 24, 25         | 6, 8, 10, 12, 14, 16, 18, 20 |
|                  | 720p       | 48, 50         | 6, 8, 10                     |
|                  | 1080p      | 24, 25         | 6, 8, 10, 12, 14, 16, 18, 20 |
|                  | 1080p      | 48, 50         | 6, 8, 10                     |
|                  | 1440p      | 24, 25, 48, 50 | 6, 8, 10                     |
|                  | 4K         | 24, 25, 48, 50 | 6, 8, 10                     |
| **ltx-2-5-pro**  | 720p       | 24, 25, 50     | 6, 8, 10                     |
|                  | 1080p      | 24, 25, 50     | 6, 8, 10                     |

### Resolutions

| Resolution | 16:9 (landscape) | 9:16 (portrait) |
| ---------- | ---------------- | --------------- |
| 720p       | `1280x720`       | `720x1280`      |
| 1080p      | `1920x1080`      | `1080x1920`     |
| 1440p      | `2560x1440`      | `1440x2560`     |
| 4K         | `3840x2160`      | `2160x3840`     |

## Automatic duration

Send `"duration": null` and the model picks the length itself, from your prompt. Use it when the prompt describes the shot rather than a fixed slot — a one-line action stays short, a multi-shot sequence runs longer.

Available on `ltx-2-5-fast` and `ltx-2-5-pro`, on both API versions: text-to-video ([async](/api-documentation/api-reference/async-video-generation/submit-text-to-video), [sync](/api-documentation/api-reference/video-generation/text-to-video)) and image-to-video ([async](/api-documentation/api-reference/async-video-generation/submit-image-to-video), [sync](/api-documentation/api-reference/video-generation/image-to-video)).

Send `duration` with a value of `null`. The field is still required — leaving it out returns `duration is required`.

```bash title="Text-to-video with automatic duration"
curl -X POST https://api.ltx.io/v2/text-to-video \
  -H "Authorization: Bearer $LTX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ltx-2-5-fast",
    "prompt": "A lighthouse keeper climbs the stairs, then the beam sweeps out over the water",
    "duration": null,
    "resolution": "1280x720",
    "fps": 24
  }'
```

The result never exceeds the longest duration available for your resolution and frame rate in the table above.

### Billing

You are charged for the video you actually get, at the usual [per-second rate](/pricing).

On a prepaid account, credits are held against the longest duration your resolution and frame rate allow, because the length is not known until generation finishes. The unused remainder is released when the job completes. Your balance therefore has to cover that maximum up front — a request that would have produced 6 seconds is still declined if you cannot cover 20 on `ltx-2-5-fast`, or 10 on `ltx-2-5-pro`. Postpaid accounts hold nothing and are invoiced for the generated length.

Automatic duration cannot be combined with `last_frame_uri` on image-to-video. A last frame fixes where the clip has to end, which requires a known length.