Kling VIDEO 3.0 Pro
The text-to-video workhorse, with a negative prompt and real controls
- referenceImages
- frameImages
- referenceVideos
- video
If you've only got budget for one Kling node, this is probably it. Kling 3.0 Pro is the classic text-to-video and image-to-video workhorse - no reference-video rewriting, no omni gimmicks, just prompt in, video out, with the controls you actually recognize from local generation. It's the node that feels most like home to a ComfyUI user, except the render happens on Kuaishou's servers instead of your GPU.
The catch, and it's the same catch for everything in the Runware/ComfyUI-Runware pack: it's a closed API model. You pay per generation, and the node is honest about it - each run prints its cost. For one-off clips where waiting out a local render isn't an option, that's a fine trade.
How it works
The node is thin glue. Widgets become a request with model AIR klingai:kling-video@3-pro and task type videoInference, the runware-sdk sends it over REST, and when it's done the node downloads the MP4 and wraps it as a native VIDEO output you can drop into Preview Video or Save Video.
Where this one differs from the Omni line is the control surface:
negativePrompt- present here, and it works the way you'd expect. Worth noting the tooltip's honest caveat: it's ignored when guidance is disabled (CFG ≤ 1), so don't lean on it if you're running guidance-free.width/height- plain pixel widgets, 1024 default, no size dropdown. Set these directly.duration- a straight 3–15 second slider, not the gated toggle the Omni models use.characterOrientation- a Kling-specific touch: tell it whether to take character orientation from theimageor thevideoreference.sound+keepOriginalSound- native audio generation, or preserve audio from a reference.numberResults- 1–4 variations per queue.
You can also feed referenceImages and frameImages (IMAGE tensors) and referenceVideos to condition the generation, and video accepts a URL or UUID for prompt-based editing of an existing clip.
The outputs
One video socket, type VIDEO, straight into a preview or save node. On older ComfyUI builds it degrades to a saved file path string instead - the fix is upgrading ComfyUI, not the pack.
Installing it
This is a pack-level install, so you do it once for all the Kling, Luma, LTX, and Krea nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart, then set your key via ComfyUI Settings → Runware API key, the RUNWARE_API_KEY env var, or runware auth login. Dependencies are light - the SDK, pillow, soundfile - and no model files download.
Where people get burned
The classic is pasting a local path into video when it wants a URL or UUID. And because this model lets you set width/height directly, don't send it something silly like 8K just because the widget accepts a number - you'll pay for it. If the run info line shows a cost that makes you wince, check numberResults. Otherwise, this is the Kling node that just works.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| referenceImagesopt | IMAGE | — | |
| frameImagesopt | IMAGE | — | |
| referenceVideosopt | RUNWARE_REFERENCEVIDEOS | — | |
| positivePromptopt | STRING | Text prompt describing elements to include in the generated output. | |
| negativePromptopt | STRING | Prompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1). | |
| sizeopt | COMBO | 1080p (1:1) | Output size. Only one of resolution or dimensions is sent. |
| durationopt | INT | 53–15 | Length of the generated video in seconds. The total number of frames produced is determined by duration multiplied by the model's frame rate (fps). |
| numberResultsopt | INT | 11–4 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| providerSettings.klingai.characterOrientationopt | COMBO | (default) | Source for character orientation reference. |
| providerSettings.klingai.keepOriginalSoundopt | BOOLEAN | false | Maintain the original sound from the reference video. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| safety.modeopt | COMBO | fast | Safety checking mode for video generation. |
| providerSettings.klingai.soundopt | BOOLEAN | false | Enable native audio generation. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP4 | File format for the generated video. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
| advanced_jsonopt | STRING | Optional JSON merged into the request. For: inputs.elements, providerSettings.klingai.multiPrompt |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |