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.0055 * steps. With 1000 steps, your request will cost $5.50.
Fine-tune your training parameters and start right now.
The endpoint trains a LoRA for the LTX 2.3 model that regenerates only the masked region of a target video, guided by both the kept (unmasked) pixels and a separate reference/control video. It combines inpainting (regenerate just the masked area) with video-to-video control (a reference clip steers what goes there). You provide triplets — a reference clip, a target clip, and a mask — and the LoRA learns the masked, reference-guided transformation.
This is the right endpoint when you want a localized, control-driven edit: replace a region of footage with content guided by a reference, while everything outside the mask stays untouched.
Key features:
Provide a single archive (linked via ) of triplets sharing a base name:
Video formats: , , , , . Every target needs both a matching reference and a . A video mask is normalized to its clip's frame count automatically — a shorter mask freeze-holds its last frame, and a longer mask is trimmed. (An image mask is applied to every frame.) File names must be unique across the archive. Aim for at least 10 triplets.
Minimum clip length: with off (the default), the target () and reference () clips of each triplet must each have at least frames (default 89, ≈ 3.7 s at 24 fps). A triplet with either clip too short is skipped, and if none qualifies the request fails (422). Turn on to resample shorter clips instead.
Example layout:
Type:
URL to the archive of reference/target/mask triplets.
Type: Default:
Phrase prepended to captions during training; include it at inference.
Type: (, , , , ) Default:
LoRA capacity.
Type: Default: (range –)
Number of optimization steps. This composite transformation typically benefits from a higher step count, hence the higher default.
Type: Default:
Optimization step size.
Type: Default: (range –)
Frames per training clip. Must satisfy ; other values are snapped down to the nearest valid count.
Type: Default: (range –)
Target frames per second.
Type: (, , ) Default:
| 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 |
Type: (, , ) Default:
Type: Default:
Fit videos to the target frame count and frame rate.
Type: Default:
Off for this mode: scene splitting would desync the reference/target/mask triplet. Provide pre-split clips instead.
Type: Default: (range –)
Duration threshold for scene splitting (only relevant if splitting were enabled).
Type: Default: (max 2 entries)
Validation samples, each an object with:
Type: Default: a built-in quality negative prompt.
Type: Default: (range –)
Type: Default: (range –)
Type: Default:
Type: Default:
Type: Default: (range –)
Type: Default:
Return an archive of the preprocessed data for inspection.
A successful run is billed billable units. Requests that fail before training completes (input-validation errors / HTTP 422, or dataset-download failures) are billed 0 units.
This is a LoRA trained to perform a reference-conditioned transformation: instead of generating from text alone, it conditions on a reference clip supplied at inference and produces a transformed result. The trained file specializes the base model on your reference→target mapping. Here it also respects a mask: only the masked region is regenerated, guided by both the surrounding kept pixels and the reference clip. At inference you supply a source video, a mask, and a reference video plus a prompt.
Good caption: Weak caption:
At inference, supply a source video, a mask (WHITE=edit), and a reference video, and use the same caption style and trigger phrase.
/v2v-masked/v2v-masked.ziptraining_data_url<name>_start.<ext><name>_end.<ext><name>_mask.<ext>.png.jpg.jpeg.bmp.webp<name>.txt.mp4.mov.webm.mkv.avi_start_maskauto_scale_input_end_startnumber_of_framesauto_scale_inputsample01_start.mp4 sample01_end.mp4 sample01_mask.png sample01.txt
sample02_start.mp4 sample02_end.mp4 sample02_mask.mp4 sample02.txttraining_data_urlstring.ziptrigger_phrasestring""rankinteger816326412832number_of_stepsinteger300010020000learning_ratenumber0.0002number_of_framesinteger899121frames % 8 == 1frame_rateinteger24860resolutionstringlowmediumhighmediumaspect_ratiostring16:91:19:161:1auto_scale_inputbooleanfalsesplit_input_into_scenesbooleanfalsesplit_input_duration_thresholdnumber30.01.060.0validationarray[]promptstringvideo_urlstringmask_urlstringreference_video_urlstringvalidation_negative_promptstringvalidation_number_of_framesinteger899121validation_frame_rateinteger24860validation_resolutionstringhighvalidation_aspect_ratiostring1:1stg_scalenumber1.00.03.0debug_datasetbooleanfalselora_file.safetensorsconfig_filevideodebug_datasetdebug_datasetmax(100, number_of_steps).zip<name>_end<name>_start<name>_mask<name>.txtrepl4ce the billboard content with a sunset landscapebillboardjson{
"training_data_url": "https://example.com/v2v_masked_triplets.zip",
"trigger_phrase": "repl4ce",
"rank": 32,
"number_of_steps": 3000,
"learning_rate": 0.0002,
"number_of_frames": 89,
"frame_rate": 24,
"resolution": "medium",
"aspect_ratio": "1:1",
"validation": [
{
"prompt": "repl4ce the billboard with a sunset",
"video_url": "https://example.com/source.mp4",
"mask_url": "https://example.com/mask.png",
"reference_video_url": "https://example.com/ref.mp4"
}
]
}rank_start_end_mask