Loading playground
Input
Additional Settings
Customize your input with more control.
Result
Idle
Customize your input with more control.
Customize your input with more control.
Hint: Upload a prepared .zip archive or provide a URL. See the field description for the required file layout.
Customize your input with more control.
The cost of training depends on the number of steps. The formula is: 0.0024 * steps. With 1000 steps, your request will cost $2.40.
Fine-tune your training parameters and start right now.
/interpolate)The /interpolate endpoint trains a LoRA for the LTX 2.3 model that generates the video between keyframes. During training, the first and last frames (and optionally a middle frame) of each clip are kept clean and the model learns to generate the in-between motion. At inference you supply a start image and an end image (and optionally a middle image), and the model produces a smooth video connecting them.
Key features:
Provide a single .zip archive (linked via training_data_url) of plain videos:
.mp4, .mov, .webm, .mkv, .avi.txt with the same base name as each video (optional but recommended).Images are rejected (there is nothing to interpolate over time on a still). The first and last frames of each clip (and the middle, if enabled) become the kept keyframes; the model learns to generate the rest. Aim for at least 10 clips. File names must be unique across the archive.
Minimum clip length: with auto_scale_input off (the default), each video should have at least number_of_frames frames (default 89, ≈ 3.7 s at 24 fps). Shorter clips are dropped during preprocessing; if no clip is long enough, the run fails with no usable training data. Turn on auto_scale_input to resample shorter clips to the target frame count instead.
training_data_url (required)Type: string
URL to the .zip archive of videos.
trigger_phraseType: string
Default: ""
Phrase prepended to captions during training; include it at inference.
rankType: integer (8, 16, 32, 64, 128)
Default: 32
LoRA capacity.
number_of_stepsType: integer
Default: 2000 (range 100–20000)
Number of optimization steps.
learning_rateType: number
Default: 0.0002
Optimization step size.
include_middle_keyframeType: boolean
Default: false
When true, a middle keyframe is also kept (first + middle + last → video) instead of just first + last. When enabled, every validation sample must also provide a middle keyframe image.
number_of_framesType: integer
Default: 89 (range 9–121)
Frames per training clip. Must satisfy frames % 8 == 1; other values are snapped down to the nearest valid count.
frame_rateType: integer
Default: 24 (range 8–60)
Target frames per second.
resolutionType: string (low, medium, high)
Default: medium
| Resolution | 16:9 | 1:1 | 9:16 |
|---|---|---|---|
| low | 512×288 | 512×512 | 288×512 |
| medium | 768×448 | 768×768 | 448×768 |
| high | 960×544 | 960×960 | 544×960 |
aspect_ratioType: string (16:9, 1:1, 9:16)
Default: 1:1
auto_scale_inputType: boolean
Default: false
Fit videos to the target frame count and frame rate.
split_input_into_scenesType: boolean
Default: true
Split long clips into scenes before training.
split_input_duration_thresholdType: number
Default: 30.0 (range 1.0–60.0)
Duration above which a clip is eligible for scene splitting.
validationType: array
Default: [] (max 2 entries)
Validation samples, each an object with:
prompt (string) — the text prompt.start_image_url (string, required) — the first-frame keyframe image.end_image_url (string, required) — the last-frame keyframe image.middle_image_url (string, optional) — a middle keyframe image; required when include_middle_keyframe is true.validation_negative_promptType: string
Default: a built-in quality negative prompt.
validation_number_of_framesType: integer
Default: 89 (range 9–121)
validation_frame_rateType: integer
Default: 24 (range 8–60)
validation_resolutionType: string
Default: high
validation_aspect_ratioType: string
Default: 1:1
stg_scaleType: number
Default: 1.0 (range 0.0–3.0)
debug_datasetType: boolean
Default: false
Return an archive of the preprocessed data for inspection.
lora_file — the trained LoRA weights (.safetensors).config_file — JSON describing the trigger phrase and training type.video — combined validation reel (when validation samples were provided).debug_dataset — preprocessed-data archive, only when debug_dataset is enabled.A successful run is billed max(100, number_of_steps) billable units. Requests that fail before training completes (input-validation errors / HTTP 422, or dataset-download failures) are billed 0 units.
.zip is unpacked; macOS metadata and hidden files are ignored.auto_scale_input they are resampled to the target frame rate/count.The model is trained to fill in the motion between fixed keyframes. The trained LoRA specializes the base model at producing smooth, plausible transitions consistent with your footage. At inference you supply the start and end images (and optionally a middle image) plus a prompt.
Good caption: a flower blooming from bud to full bloom
Weak caption: flower
At inference, supply start and end images (and a middle image if you trained with include_middle_keyframe), and use the same caption style and trigger phrase.
json{ "training_data_url": "https://example.com/motion_clips.zip", "trigger_phrase": "", "rank": 32, "number_of_steps": 2000, "learning_rate": 0.0002, "include_middle_keyframe": false, "number_of_frames": 89, "frame_rate": 24, "resolution": "medium", "aspect_ratio": "1:1", "validation": [ { "prompt": "a flower blooming", "start_image_url": "https://example.com/bud.png", "end_image_url": "https://example.com/bloom.png" } ] }
include_middle_keyframe is true, every validation sample needs middle_image_url.rank, more clips.include_middle_keyframe but omitting middle_image_url in validation.