Nodes/UIIIAIII Toolkit/Agnes Text to Video (agnes-video-v2.0)
ComfyUI Node

Agnes Text to Video (agnes-video-v2.0)

A video model you don't have to download

By uiiiaiii·Created 23 days ago·Updated 10 days ago· 0
Agnes Text to Video (agnes-video-v2.0)
    • video
    ◄prompt►
    ◄ratio16:9►
    ◄resolution720p►
    ◄duration5s►
    ◄frame_rate24►
    ◄negative_prompt►
    ◄seed0►
    ◄num_inference_steps0►
    ◄poll_interval5►
    ◄max_wait_time600►

    Video is the one place where going local still hurts. Wan and MiniMax H3 are real and good, but a 33B omni-modal checkpoint is a different kind of Saturday project than an SDXL LoRA. This node skips the download entirely: prompt in, video out, Agnes Video V2.0 doing the work on their GPUs.

    The trade is the same one every API node makes. You get a capable video model for zero VRAM and zero gigabytes; you give up reproducibility, local control, and any guarantee about capacity. If you're on a 3060 and want to see whether your idea reads as motion at all, this is the cheapest way to find out.

    The knobs

    Required:

    • prompt - what happens in the clip. Sentences, not tags.
    • ratio - 16:9, 9:16, 1:1, 4:3, 3:4. Default 16:9.
    • resolution - 480p, 720p, 1080p. Default 720p.
    • duration - 3s / 5s / 10s / 18s. Default 5s.
    • frame_rate - 1–60, default 24.

    Optional, and here's where it gets interesting:

    • negative_prompt - honoured here, unlike the image nodes.
    • seed - 0 means "not specified." This one is sent to the API when non-zero, so unlike the sibling image nodes, seeding is real. control_after_generate still applies.
    • num_inference_steps - 0 uses the API default. Up to 200.
    • poll_interval - how often the node asks "done yet?" (seconds, default 5).
    • max_wait_time - how long it's willing to wait before giving up, default 600 seconds, max 3600.

    Output is video (VIDEO) - the modern ComfyUI video type, wireable into a video preview or save. On older ComfyUI builds where that type doesn't exist, the node degrades to a video_path string and dumps an .mp4 into your output folder instead, so check what your socket says if you're on a stale install.

    Under the hood

    This is an async job, not a request/response. The node POSTs a task, gets a video_id, then polls until the job reports complete, then downloads the file. The pack wires a progress callback into that polling loop, so you'll see status text ticking in the node rather than a dead pane - which matters, because a 1080p 18-second clip is not fast, and ComfyUI's queue is blocked on this node the whole time. Nothing else in the graph runs while it waits. Bump max_wait_time if you're doing long clips and see "polling timed out."

    Two details the pack handles for you, and that explain why it works at all:

    Frame counts follow the 8n+1 rule. The duration presets map to 81 / 121 / 241 / 441 frames, all of which satisfy (n-1) % 8 == 0 with a hard ceiling of 441 frames. You don't type frame counts; you pick a duration. And since the frame count is what's actually fixed, frame_rate at anything other than 24 changes the real clip length - 121 frames at 60fps is a two-second clip, not five.

    Resolution is a table, not a promise. 720p at 16:9 is 1280×704 - not 1280×720. That's the API's own preset mapping, and it's why your output dimensions may look slightly off from the label.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/uiiiaiii/UIIIAIII_Toolkit.git
    # restart ComfyUI
    

    Or UIIIAIII Toolkit in ComfyUI Manager. Dependencies are requests and nothing else - no torch codecs, no ffmpeg, no model files. The video support path uses comfy_api.latest.InputImpl, which is present on ComfyUI 0.29+; older builds fall back to the file-path output described above.

    Get a key at platform.agnes-ai.com, then Settings → UIIIAIII Toolkit → ① Node API. For this pack the saved config beats the AGNES_API_KEY env var, so setting the env var alone and then wondering why it still says "API Key not found" is a real, ordinary mistake.

    Realistic failure modes

    "Prompt cannot be empty." Works before you spend a minute on a queue; a blank or whitespace prompt is rejected locally.

    The task is created, then the node errors after ten minutes. That's max_wait_time doing its job - the job didn't finish in the window. Raise it and re-run, but also consider that a free-tier endpoint under load will simply take longer at certain times of day.

    No progress, just a spinner. Polling failures on the connection level are retried silently rather than aborting the job (SSL blips happen), so the progress text can sit still for a poll cycle or two. It hasn't died. If it has died, you'll get the timeout error instead of silence.

    Quality mismatch between prompt and output. Same discipline as any hosted video model: describe camera motion and subject action explicitly ("slow push-in, the hair moves in the wind") rather than naming a mood. And expect the 480p preset to look exactly as soft as 480p has always looked.

    CategoryUIIIAIII Toolkit/Agnes

    Inputs (10)

    NameTypeDefaultDescription
    promptSTRINGText description of the video content
    ratioCOMBO16:9Video aspect ratio
    resolutionCOMBO720pVideo resolution preset
    durationCOMBO5sVideo duration (based on num_frames and frame_rate)
    frame_rateINT241–60Video frame rate (1-60)
    negative_promptoptSTRINGNegative prompt describing what to avoid
    seedoptINT00–18446744073709550000Random seed (0 means not specified)
    num_inference_stepsoptINT00–200Inference steps (0 uses the default value)
    poll_intervaloptINT51–60Task polling interval (seconds)
    max_wait_timeoptINT60060–3600Maximum wait time (seconds)

    Outputs (1)

    NameTypeDescription
    videoVIDEO—