Nodes/ComfyUI LTXV API/LTXV API Video to Video (Retake)
ComfyUI Node

LTXV API Video to Video (Retake)

Regenerate part of a clip — or all of it — without leaving ComfyUI

By am-pipeline-prod·Created 5 months ago·Updated 4 months ago· 1
LTXV API Video to Video (Retake)
  • video
  • video
  • info
  • width
  • height
  • frame_rate
  • frame_count
prompt
modelltx-2-3-pro
start_time0.0
duration4.0
modereplace_audio_and_video
resolution(auto)
fps_for_encoding24.000
video_url

"Retake" is Lightricks' official name for this endpoint, and it does what it says: it re-generates a section of a video you already have. Feed it a clip, tell it where to start and how long the redo should run, and LTX re-renders that stretch - new pixels, new motion, optionally new audio. Set start_time to 0 and duration to the full clip length and you've got a full video-to-video regen: same footage, wholesale restyle.

Why you'd reach for this

This is the node you grab when you have footage and you don't like how it came out, or when you want the LTX look applied to something that started elsewhere. The full-clip mode is the interesting one: take a clip you shot or generated with another model, point this at it with a restyle prompt, and get a version that re-renders the whole thing on Lightricks' hardware. It's the "open model, someone else's GPU" pattern from the rest of this pack - LTX-2.3's motion quality without the 100GB of local weights. And because it's video-in, video-out, it lives mid-workflow: Load Video → this node → SaveVideo, or chain it into a partner API node.

How it works

The node POSTs to /v1/retake and streams the result back as an MP4 - it's a sync call, same shape as the T2V/I2V nodes. The input arrives one of two ways: a VIDEO socket, or a public HTTPS URL in video_url (which wins when both are set). The mechanism detail that actually matters is what happens to your source:

  • If the VIDEO is file-backed - from Load Video or another LTXV node - the original MP4 bytes are uploaded directly. Audio is preserved, no re-encode.
  • If it's component-derived (a workflow that built a VIDEO from frames), the node re-encodes it as a video-only MP4, and the source audio is dropped on upload. If pristine audio matters, use video_url instead.

The endpoint minimum is 2.0 seconds and the input clip needs at least 73 frames.

The inputs that matter

  • mode - the three-way switch that decides what gets regenerated: replace_audio_and_video (both, the default), replace_video (keep original audio, swap pixels), replace_audio (keep pixels, swap audio). This controls what rides back on the video output.
  • start_time / duration - seconds into the input where the redo starts, and how long it runs. start_time=0 + duration=full clip = full-clip regen.
  • model - retake only supports the pro line: ltx-2-3-pro (newer, the API default) or ltx-2-pro.
  • video_url - the escape hatch for big inputs. Public HTTPS URL only; the request uses it verbatim instead of base64.

Outputs are the standard sync set: video (audio content depends on your mode), info, and width / height / frame_rate / frame_count.

Installing it

Same as the rest of the pack - it's one repo, four nodes, no model downloads:

cd ComfyUI/custom_nodes
git clone https://github.com/am-pipeline-prod/comfyui-ltxv-api.git
cd comfyui-ltxv-api
pip install -r requirements.txt

Restart, find LTXV API in the menu. The key lives in the environment, not a widget:

export LTXV_API_KEY="ltxv_..."

or as api_key = "ltxv_..." in ~/.config/comfyui-ltxv-api/config.toml. Remember the pack's own caveat: MIT, self-serve, not actively maintained. It works today; don't assume someone's fixing it next month.

Where people get burned

  • HTTP 400 about frame count - the input is under the 73-frame floor. Extend or re-time your source.
  • duration under 2.0 - the API minimum. The widget already floors you at 2.0, so this shows up as a 400 if something slips through.
  • Huge base64 request rejected - a long clip as a data URI balloons the body. Use video_url with a public URL.
  • Input audio went missing - you're feeding a component-derived VIDEO, which gets re-encoded video-only. Go file-backed or use video_url.
  • HTTP 402 - insufficient credits. Retake on -pro models at full clip length adds up fast; check the LTX console before you queue something long.

The mental model is simple: retake is a paid, remote re-render of footage you already own. If your card can run LTX-2.3 locally you probably don't need it - but if you're on the API path anyway, this is how you do V2V without ever downloading a weight.

CategoryLTXV API

Inputs (9)

NameTypeDefaultDescription
promptSTRINGOptional but strongly recommended -- the prompt steers what the regenerated section should look like.
modelCOMBOltx-2-3-proRetake supports the Pro variants only. ltx-2-3-pro is the newer LTX-2.3 family and is the API default.
start_timeFLOAT0.00–600Seconds into the input where the regenerated section starts. Set to 0 (combined with duration=full clip length) for a full-clip video-to-video regen.
durationFLOAT4.02–60Section length in seconds. API minimum is 2.0. Set to the full clip length (combined with start_time=0) for a full video-to-video regen.
modeCOMBOreplace_audio_and_videoWhich streams to regenerate. replace_audio_and_video = both. replace_video = keep original audio, replace pixels. replace_audio = keep pixels, replace audio.
resolutionCOMBO(auto)Output resolution. (auto) lets the API mirror the input. 1920x1080 / 1080x1920 are the documented supported outputs.
fps_for_encodingFLOAT24.0001–60FPS used when re-encoding a component-derived VIDEO (VideoFromComponents) to MP4 for the request body. Ignored when video_url is used or when the VIDEO is file-backed (the original bytes ride through unchanged).
videooptVIDEOSource video. The native input type for retake. When the VIDEO is backed by an on-disk MP4 (Load Video, another LTXV node) the original bytes are uploaded directly -- audio preserved, no re-encode.
video_urloptSTRINGPublic HTTPS URL of the input video. When non-empty, this wins over the `video` socket and the request uses the URL verbatim. Recommended for inputs too large for base64 (10s of MB+).

Outputs (6)

NameTypeDescription
videoVIDEONative ComfyUI VIDEO wrapping the downloaded MP4 (lazy decode). Wire to SaveVideo / GetVideoComponents / partner API nodes. Audio track depends on `mode`: replace_audio_and_video / replace_audio ship API-generated audio; replace_video keeps the source's audio.
infoSTRINGHuman-readable summary.
widthINTFrame width in pixels.
heightINTFrame height in pixels.
frame_rateFLOATMP4 frame rate as probed from the container.
frame_countINTNumber of frames in the MP4 container.