Nodes/ComfyUI LTXV API/LTXV API Text to Video
ComfyUI Node

LTXV API Text to Video

LTX over the API

By am-pipeline-prod·Created 5 months ago·Updated 4 months ago· 1
LTXV API Text to Video
    • video
    • info
    • width
    • height
    • frame_rate
    • frame_count
    prompt
    modelltx-2-3-fast
    duration4
    resolution1920x1080
    resolution_custom
    fps24
    generate_audiotrue
    camera_motion(unset)

    The name is a little lie, in the best way: LTXV API Text to Video doesn't run LTX on your machine at all. It packages your prompt, sends it to Lightricks' hosted API at api.ltx.video, and drops the returned MP4 back into your graph as a native VIDEO. No 100GB of weights, no 32GB VRAM, no VAE decode on your card. The trade is real, though - it bills per second of video, and every frame of your prompt leaves the machine.

    Why you'd reach for this

    LTX-2 and LTX-2.3 are Lightricks' synced-audio-video family - by mid-2026 the community's pick for the best all-round locally runnable video model. "Locally runnable" is doing a lot of work there. LTX-2 pairs a 19B DiT with a Gemma text encoder and is comfortable around 24GB+ of VRAM; LTX-2.3 is 22B. If your card isn't there - or you just don't want to babysit a 100GB download and a Python environment that fights back - the hosted API is the door that stays open. This node is the classic "open model on someone else's GPU" play: you keep the LTX look and the long, prose-y prompting style, you just don't keep the model.

    How it works

    Hit Queue Prompt and the node assembles a JSON body from its widgets, POSTs to /v1/text-to-video, and streams the response MP4 to a temp file as it arrives. That file is wrapped in ComfyUI's native VIDEO type with lazy decoding - nothing is actually rasterized to pixels until a downstream node asks for it. When generate_audio is on, the API bakes a synced audio track into the same container, and it rides along on the video socket automatically. Save it straight with stock SaveVideo, or split it apart with GetVideoComponents when you want the frames and the audio track as separate things.

    The inputs that actually matter

    There are no image inputs here - this is widgets-only, which makes it the simplest node in the pack. Most runs touch just three of them:

    • prompt - LTX is famously prompt-hungry; short prompts reliably underperform. Give it a paragraph of concrete scene detail, camera direction, and mood. Let an LLM write it if you can.
    • model - ltx-2-3-fast is the default and a fine starting point; ltx-2-pro / ltx-2-3-pro cost more for better quality, and the -fast variants are the budget tier.
    • duration - seconds, and this is the one that hits your wallet. Billed per second, so 4s at 1080p is a very different day from 30s.

    Also worth knowing: resolution is a dropdown (1920x1080, 1080x1920, or (custom) with a literal WxH in resolution_custom), because the API only accepts certain (model, resolution, fps) combinations and rejects the rest with an HTTP 400. fps defaults to 24. camera_motion is optional - (unset) lets the model pick.

    The outputs are the same shape across the three sync nodes: video (the MP4, audio inline), plus info (a human-readable summary) and width / height / frame_rate / frame_count metadata sockets you can wire anywhere.

    Installing it

    It's a normal custom node, and it needs no model files at all - everything remote:

    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 ComfyUI and you'll have the LTXV API category. (Or search comfyui-ltxv-api in ComfyUI Manager once it's published there.) Dependencies are light - requests, imageio, Pillow, numpy, opencv-python - and there's no weights directory to babysit.

    The key is deliberately not a widget (widgets get baked into saved workflows and screenshots). Set it as an environment variable:

    export LTXV_API_KEY="ltxv_..."
    

    or drop api_key = "ltxv_..." into ~/.config/comfyui-ltxv-api/config.toml. One honest warning: the author calls this a self-serve project - it works, it's MIT, and bug reports may sit unanswered. Don't build a production pipeline on it without keeping a fork.

    Where people get burned

    • No LTX API key found - the env var or config file isn't where the node looks.
    • HTTP 401 / 402 - bad or revoked key, then insufficient credits. Top up the console.
    • HTTP 422 - the prompt tripped LTX's safety filter. Soften it and retry; the hosted API is not the uncensored local weights.
    • HTTP 400 with "FPS ... not supported ... at resolution ..." - you picked a combination off the accepted list. Try 1920x1080 at fps=24, which is confirmed across models.
    • HTTP 429 - you're queuing too fast. The sync endpoints surface it as an error rather than retrying, so space out your queue.

    And the quiet one: early LTX-2 API users complained about audio fumbles and the occasional still frame. LTX-2.3 is a different, better model - but if a clip comes back with a weird audio track, that's the API, not your wiring.

    CategoryLTXV API

    Inputs (8)

    NameTypeDefaultDescription
    promptSTRINGText prompt describing the desired video content.
    modelCOMBOltx-2-3-fastLTX model variant. ltx-2-fast / ltx-2-3-fast = lower cost, lower quality. ltx-2-pro / ltx-2-3-pro = higher quality, higher cost. The 2-3 line is the newer LTX-2.3 family.
    durationINT41–30Output video length in seconds. Billed per second.
    resolutionCOMBO1920x1080Output frame size. Pick (custom) and type into resolution_custom for non-listed sizes.
    resolution_customSTRINGLiteral 'WxH' override. Ignored unless resolution=(custom).
    fpsINT241–60Output frame rate (LTX API default 24).
    generate_audioBOOLEANtrueWhen On, the API generates a synced audio track and includes it in the MP4 (rides through the VIDEO socket). Off = silent video.
    camera_motionCOMBO(unset)Optional camera-motion hint. (unset) = let the model pick. Other values steer the camera deterministically.

    Outputs (6)

    NameTypeDescription
    videoVIDEONative ComfyUI VIDEO wrapping the downloaded MP4 (lazy decode). Wire to SaveVideo / GetVideoComponents / partner API nodes. Carries the API-generated audio track when generate_audio=True.
    infoSTRINGHuman-readable summary: dimensions, fps, frame count, model.
    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.