Nodes/SpicyAPI/Kling O3 · Text to Video
ComfyUI Node

Kling O3 · Text to Video

No image, no seed, and no free retries

By spicyapi-ai·Created 21 days ago·Updated 2 days ago· 2
Kling O3 · Text to Video
    • video
    • task id
    ◄prompt►
    ◄aspect_ratio16:9►
    ◄resolution720p►
    ◄generate_audiofalse►
    ◄duration_seconds5►
    ◄shot_typesingle►
    ◄multi_prompt►
    ◄seed0►

    What it is

    The plainest of the Kling O3 nodes: type a prompt, pick a shape and length, get 3 to 15 seconds back at up to 4K, in 16:9, 9:16 or 1:1. No frame to feed it, no reference cast, no source clip. Just words, a meter, and Kling 3.0 Omni running somewhere that isn't your computer.

    That last part is the point. Kling has never shipped weights. There is no quantized GGUF of this in anyone's models folder, and there never will be, so a hosted node is not a compromise here - it's the only mechanism that exists. The trade is the usual one for API nodes: your prompt leaves the machine, the model's filter is final, and every call costs money. In exchange you get a frontier closed model inside a graph that can still do your local upscaling, masking and compositing afterwards.

    How it runs

    The node is an HTTP client wearing a node costume. On Run it assembles a request from your widgets - omitting anything still sitting on a "model default" or -1 so the model decides - asks SpicyAPI what the run will cost, honours your per-run spending ceiling if you set one, submits, polls while printing progress on the node, then downloads the MP4 and decodes it into a ComfyUI VIDEO. Save Video writes it out. Nothing about the node is Kling-specific; the same machinery is behind all 189 model nodes in the pack.

    Inputs, in the order you should care

    prompt is where the work is. Describe the scene, the action and the camera move in plain language, and if you turned audio on, put dialogue in quotes and name the sounds you want - the node's own tooltip says exactly that, and it's the author telling you how the endpoint reads a prompt. Long beats clever: video models reward specifics about what moves and how the camera behaves, and this one is no different.

    Then the two that decide your bill:

    • duration_seconds, 3 to 15 in whole seconds, billed per second
    • resolution, 720p out of the box, with the tooltip's blunt warning that higher tiers cost more per second

    And the two that change the shape of the output:

    • aspect_ratio - 16:9, 9:16 or 1:1
    • generate_audio - off by default, native soundtrack (voices, effects, ambience) when on, and it raises the per-second rate

    shot_type governs editing. single gives one continuous shot. multi lets the model cut your prompt into several shots by itself - good for a montage feel, less predictable than it sounds. customize hands it a shot list instead: multi_prompt takes JSON, a list of objects each with a prompt and a duration_seconds, and their lengths must add up to the duration you chose. Getting that sum wrong is a validation error, not a clip.

    Outputs are video, wire it to Save Video, and task id, a string naming the exact job on SpicyAPI. Keep it when you raise a ticket; it beats describing what you did.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/spicyapi-ai/comfyui-spicyapi
    

    Restart ComfyUI. That's the whole install - no dependency list, no model file, nothing to download. Add your key under Settings > SpicyAPI (or SPICY_API_KEY in the environment on a headless box), restart once so the node list is pulled from your account, and you're done. ComfyUI Manager users can search the pack title, SpicyAPI. You'll want a recent ComfyUI - the pack uses the V3 node API and is tested against 0.39 - on Python 3.10 or newer.

    The honest downsides

    There's no seed. So there's no such thing as a repeatable draw here, and no "same settings, new dice" either - every run is a purchase and you can't dial one back in. If you're used to seed-hunting your way to a good local clip, that reflex is expensive on this node.

    Costs stack in two directions. Duration multiplies the per-second rate; resolution and audio each move the rate itself. A 15-second 4K run with sound is not a 5-second 720p silent run with a bigger number in front of it. Watch the badge as you change options, and set Max cost per run in the settings panel - an over-budget quote stops before anything is charged, which is the only guardrail you get.

    Cancel doesn't mean cancel. Your job keeps running server-side, gets charged if it succeeds, and stays in your console for up to 14 days. Abandoning a slow run doesn't abandon the bill.

    Failure codes are worth knowing. No SpicyAPI key is set means the key isn't visible to this ComfyUI user directory. 40310 is an unverified email. 40004 names an option combination no deployment serves. Anything ending in request_id ... is support's problem, and they'd like that id.

    Model list looks stale? Restart. The node list is built from your account's catalogue at startup, so anything added on the SpicyAPI side shows up only after a restart - and without a key at all, you get the list bundled with the release.

    CategorySpicyAPI/Video/Kling

    Inputs (8)

    NameTypeDefaultDescription
    promptSTRINGDescribe the scene, the action and the camera. With sound on, add dialogue in quotes and the sounds you want.
    aspect_ratioCOMBO16:9Output aspect ratio.
    resolutionCOMBO720pOutput resolution. Higher tiers cost more per second.
    generate_audioBOOLEANfalseGenerate a native soundtrack (voices, effects, ambience) with the picture. Audio costs more per second.
    duration_secondsINT53–15Output length in whole seconds, from 3 to 15. Billed per second.
    shot_typeCOMBOsinglesingle keeps one continuous shot; multi lets the model cut the prompt into several shots on its own; customize follows the shot list you give in multi_prompt.
    multi_promptSTRINGShot list for shot_type customize: one entry per shot, in order, each with its own prompt and length in seconds. The lengths must add up to duration_seconds. JSON. A list of objects with "prompt", "duration_seconds".
    seedINT00–2147483647This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed.

    Outputs (2)

    NameTypeDescription
    videoVIDEO—
    task idSTRINGThe SpicyAPI task id, for the console logs or support.