Nodes/EmpirioLabs AI/EmpirioLabs AI Generate Video
ComfyUI Node

EmpirioLabs AI Generate Video

Ten minutes of queue time, and it won't take a local image

By EmpirioLabs-AI·Created 22 days ago·Updated 8 days ago· 1
EmpirioLabs AI Generate Video
    • video
    • url
    ◄modelhunyuan-video-1-5►
    ◄prompt►
    ◄duration0►
    ◄resolutiondefault►
    ◄aspect_ratiodefault►
    ◄seed0►
    ◄image_url►
    ◄extra_parameters►

    Video is the one modality where renting makes obvious sense even to people who own the GPU. A local video stack is a checkpoint in the tens of gigabytes, a text encoder, a VAE, a sampler config and an hour of your evening before the first clip. This node replaces all of it with a dropdown and a prompt - and then makes you wait, because the model is running somewhere else and you're at the end of somebody's queue.

    What it actually does

    Two jobs in one node. Text-to-video: give it a prompt, get a clip. Image-to-video: give it a prompt and a start frame, get that frame moving. Which one you get depends entirely on whether image_url has something in it.

    The default model, hunyuan-video-1-5, is worth a note. Hunyuan Video won 2024 and lost 2025: the 1.5 update cut it to 8.3B and a ~14GB floor, but by mid-2026 the local crowd had settled on Wan for quality and LTX for speed, with Hunyuan a distant third. As a hosted call most of that history stops mattering - you're not maintaining the stack or hunting the right workflow, you're renting the endpoint. Whether it beats the other hosted models for your prompt is an empirical question, and cheap enough to test.

    How it works

    It POSTs to /v1/videos/generations. That call usually comes back as a job rather than a finished file, so the node then polls every five seconds, updating the ComfyUI progress bar and a live elapsed-time readout while it waits. When the job lands, it downloads the first video, checks with PyAV that the file actually has a video track (so a broken response fails with a clear message instead of a mystery downstream), and wraps it as a ComfyUI VIDEO value. Your prompt, your start image link and your key go to one fixed host and nowhere else.

    Cancelling the run in ComfyUI does stop the node and cancels the job it's waiting on. It may not stop the bill: a generation that already started can still be charged. That's in the README, and it's the one piece of fine print here you'd genuinely regret skipping.

    The inputs that matter

    • model - combo built from the EmpirioLabs catalog, filtered to video models. hunyuan-video-1-5 is the default and the internal fallback if the catalog can't load.
    • prompt - required, and a blank one is an error rather than a request.
    • image_url (optional) - a public http/https link to the start frame. This is the trap: it's a STRING, not an IMAGE slot, and anything that isn't a link is rejected. You cannot wire a locally generated tensor in here. What you can do is wire the url output of EmpirioLabs AI Generate Image straight in - that's the intended image-to-video path, and the pack ships an example workflow for it.
    • duration - seconds, 0 to 120, where 0 means the model's own default. Supported lengths vary by model; ask for something a model doesn't do and the API says so.
    • resolution and aspect_ratio - combos filled from the catalog, default for the model's own choice. Image-to-video usually follows the start frame's shape whatever you pick.
    • seed - change it to force a new request; only sent on to models that accept one.
    • extra_parameters - JSON for other request fields. It can't set model or prompt; the node owns those.

    Outputs: video (VIDEO), which goes to a Save Video node - do that, because the other output, url, expires.

    Install and the key

    Manager → Custom Nodes Manager → search EmpirioLabs AI → install → restart. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/EmpirioLabs-AI/comfyui-empiriolabs.git
    

    ComfyUI 0.3.48 or later, since the pack is built on the newer comfy_api node class. No extra Python packages - it leans on libraries ComfyUI already carries, PyAV included.

    Key from platform.empiriolabs.ai: set EMPIRIOLABS_API_KEY and restart ComfyUI, or copy config.example.ini to config.ini in the pack folder and paste the key after api_key = (read every run, no restart). The folder is custom_nodes/comfyui-empiriolabs after a git clone, custom_nodes/empiriolabs after a Manager install.

    Where people get burned

    It blocks your queue for 1 to 15 minutes. ComfyUI runs one job at a time, so a video request stops everything behind it. Batch overnight, or accept that your image workflow is paused.

    The start-image link expires. image_url is a link with a lifetime. A workflow that ran fine yesterday can fail today because the source image is gone - regenerate it, or animate in the same run.

    One model in the dropdown. The catalog fetch failed at startup; the node keeps working on its fallback and retries in the background. Reload the browser page to refresh the list.

    CategoryEmpirioLabs AI

    Inputs (8)

    NameTypeDefaultDescription
    modelCOMBOhunyuan-video-1-5Video model from the EmpirioLabs AI catalog. Prices and details: https://empiriolabs.ai/models
    promptSTRINGDescription of the video to create.
    durationINT00–120Video length in seconds. 0 uses the model's default. Supported lengths depend on the model.
    resolutionCOMBOdefaultOutput resolution. default uses the model's default. Supported values depend on the model.
    aspect_ratioCOMBOdefaultOutput aspect ratio. default uses the model's default. Image-to-video usually follows the image.
    seedINT00–2147483647Change the seed to run the node again. Models that accept a seed also receive it.
    image_urloptSTRINGOptional public link to a start image for image-to-video. Connect the url output of EmpirioLabs AI Generate Image here.
    extra_parametersoptSTRINGOptional request fields as a JSON object, for example {"negative_prompt": "blurry"}. Each model lists the fields it accepts on its page at https://empiriolabs.ai/models. Fields set here take precedence over the dropdowns above.

    Outputs (2)

    NameTypeDescription
    videoVIDEO—
    urlSTRINGLink to the video file. It expires, so save the video to keep it.