---
title: "Extend video duration"
method: POST
path: "/v2/extend"
tags: ["asyncVideoGeneration"]
---

# Extend video duration

`POST /v2/extend`

Extend a video by generating additional frames at the beginning or end. The model uses context frames from the input to produce a seamless continuation with consistent motion and audio.

Responds immediately with the job `id` and `created_at` timestamp. Poll `GET /v2/extend/{id}` until the status is `completed`, then download from `result.video_url`.

Billed per second, based on the extended portion plus the context frames used from the input video. See [Pricing](/pricing).

## Headers

- `Authorization` string, required

## Request body

- ExtendVideoRequest
  - `video_uri` string, required — Input video for extending. See [Input Formats](/input-formats#video-input) for supported formats and codecs. - Supported aspect ratios: 16:9 and 9:16 - Maximum resolution: 3840x2160 (4K) - Minimum frame count: 73 (around 3 seconds at 24fps) The output video preserves the input video's resolution.
  - `prompt` string — Description of what should happen in the extended portion of the video.
  - `duration` number, double, required — Duration in seconds to extend the video. Minimum 2 seconds, maximum 20 seconds (480 frames at 24fps).
  - `mode` 'start' | 'end' — Where to extend the video: - `end` (default): Extends the video at the end. - `start`: Extends the video at the beginning.
  - `model` 'ltx-2-3-pro' — Model to use for video generation.
  - `context` number, double — **Advanced parameter:** Number of seconds from the input video to use as context for the extension (maximum 20 seconds). The model uses context frames from the input video to generate a more coherent extension. The sum of `context` + `duration` (converted to frames using the input video's FPS) cannot exceed 505 frames (~21 seconds at 24fps). For higher-FPS inputs, the maximum total duration in seconds will be proportionally lower; for lower-FPS inputs, it will be proportionally higher. If not provided, defaults to maximize available context within the 505 frame limit while respecting the 20-second cap.

## Response `202`

Job submitted successfully

- V2JobCreatedResponse — Response returned when a V2 async job is successfully submitted.
  - `id` string, required — Unique job identifier. Use this to poll for status.
  - `created_at` string, date-time, required — ISO 8601 timestamp of when the job was created.

## Other responses

- `400` — The request is invalid or malformed
- `401` — Authentication failed
- `402` — Insufficient credits
- `422` — Content rejected by safety filters
- `429` — Concurrency or queue limit exceeded
- `500` — An unexpected error occurred
- `503` — Service temporarily unavailable

---

[API](https://skmtc.dev/ltx/apis/api-reference.md) · [All operations](https://skmtc.dev/ltx/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ltx/api-reference/revisions/6ad7c87b252c/schema)
