Nodes/SpicyAPI/Kling O3 · Video Edit
ComfyUI Node

Kling O3 · Video Edit

Change one thing in a clip and leave the rest frozen

By spicyapi-ai·Created 21 days ago·Updated 2 days ago· 2
Kling O3 · Video Edit
  • video_url
  • reference_image_urls
  • video
  • task id
◄prompt►
◄elements►
◄resolution720p►
◄keep_original_audiotrue►
◄seed0►

What this one is for

Every other Kling O3 node makes a clip. This one takes a clip you already have and rewrites part of it. You hand it a 3-to-10 second video, describe the change, and Kling 3.0 Omni re-renders the footage with that change applied and - this is the useful part - everything you didn't mention left alone. Outfit swap, weather change, a different setting, a stylistic pass over footage you shot yourself. The output runs as long as your source, so it drops back into your timeline in the same slot.

Note the price before you fall in love with it: from $0.1252 per second of output, roughly double the other Kling O3 endpoints. Editing is priced as a premium job, and a 10-second source is a real amount of money per attempt.

How the mechanism actually works

The node uploads your source clip - MP4 bytes are remuxed without re-encoding, which is nice, and the 90 MiB upload ceiling is the hard wall you'll hit first with anything long or high-bitrate. Decode issues there look like a value error, not a Kling problem: if your clip is bigger than that, re-encode it smaller before the node ever sees it. Then the request carries your prompt, the source, and whatever references you attached, gets quoted, is submitted, and is polled until the result comes back and is decoded into an ordinary ComfyUI VIDEO.

One caveat in the schema: the tooltip asks for a source clip "at least 720 pixels on each side". Portrait phone footage is often 1080x1920, fine; a 512-wide vertical export is not, and it's rejected rather than upscaled for you.

The inputs

  • video_url - the source clip. A VIDEO socket; wire it from Load Video or straight out of another SpicyAPI video node, which is how chained edits are usually built.
  • prompt - "say what to change in the clip: the subject, outfit, setting, style or weather. Anything you do not mention stays as it is." That's the author's own tooltip and it's the whole skill of this node. Editing prompts are subtraction, not description. The moment you write a sentence about the lighting, you've asked for the lighting to be re-rendered.
  • resolution - 720p default; higher tiers cost more per second.
  • keep_original_audio - on by default. It keeps the source clip's own sound in the result, which is what you want for nearly everything except a full restyle.
  • elements - optional JSON, same mechanism as the Kling O3 reference-to-video node: a list of named subjects, each built from 2 to 4 images of the same character or object, with name, description, image_urls and optional reference_audio_urls. Refer to one in the prompt as @name.
  • reference_image_urls - optional, up to 4 stills, for a character, outfit, object or style you want brought in. Referred to as "Image 1", "Image 2", and so on.

Outputs: video (→ Save Video) and task id, the string that names the exact request if you have to ask support about it.

Install

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

Restart ComfyUI, then Settings > SpicyAPI and paste a key from spicyapi.ai/console/keys. Restart once more so the node list is rebuilt from your account; on a remote machine set SPICY_API_KEY instead. No dependencies to install and nothing to download - the pack's own project metadata declares an empty dependency list, and it leans on aiohttp, torch, Pillow and PyAV, all of which ComfyUI already ships. Current ComfyUI (V3 node API, tested on 0.39) and Python 3.10+.

Traps

Long sources are expensive twice. Once in the per-second rate, once because a 10-second edit at $0.1252/s is about $1.25 a pop - and with no seed on this node, you can't reproduce the one you liked. Cut the clip down to the shot you actually want changed, then edit that.

Over 90 MiB won't upload. The node is explicit about it, but the failure arrives as a ValueError that reads like a bug rather than a size limit. Transcode first.

Invalid JSON in elements kills the run before anything is charged. It's a multiline text widget, not a file, so a stray comma paste is all it takes.

40004 no deployment serves this combination means exactly that - usually a resolution/edit combination the endpoint doesn't offer. Change the option the message names.

A cancelled run isn't a cancelled job. It keeps running on SpicyAPI, is charged if it succeeds, and its result sits in your console for up to 14 days. If you cancelled because it looked pricey, consider that it may still be pricey.

Set Max cost per run in the settings panel the day you install this, not the day you overspend. Editing the same 10-second clip four times to get a phrase right is exactly the workflow that limit was built for.

CategorySpicyAPI/Video/Kling

Inputs (7)

NameTypeDefaultDescription
promptSTRINGSay what to change in the clip: the subject, outfit, setting, style or weather. Anything you do not mention stays as it is.
video_urlVIDEOSource clip to edit, 3 to 10 seconds, at least 720 pixels on each side. The result is as long as this clip.
elementsSTRINGNamed subjects to bring into the edited clip, each built from 2 to 4 images of the same character or object. Refer to one in the prompt as @name. JSON. A list of objects with "description", "image_urls", "name", "reference_audio_urls"?.
resolutionCOMBO720pOutput resolution. Higher tiers cost more per second.
keep_original_audioBOOLEANtrueKeep the source clip's own sound in the result.
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.
reference_image_urlsoptCOMFY_AUTOGROW_V3Optional reference images, up to 4, for a new character, outfit, object or style. Refer to them as Image 1, Image 2 and so on.

Outputs (2)

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