KlingAI 2.5 Turbo Standard
Kling 2.5 Turbo on your ComfyUI canvas, without the 80GB checkpoint
- frameImages
- video
Kling is Kuaishou's paid video model, the one people run on web dashboards and API platforms rather than their own GPU - and this node is how you get it on a ComfyUI canvas without moving the model to your machine. It's a cloud inference node: you type a prompt (or drop in a reference image), Runware's servers do the denoising, and the finished clip lands back as a native VIDEO on your canvas. No checkpoint download, no VRAM calculation, just a billed generation.
Kling 2.5 Turbo is the fast tier, and the community has strong opinions about it: in the Kling-vs-Wan 2.2 comparison threads, the recurring line is that 2.5 Turbo is "light years better than Kling 2.1" while still being a closed, paid model. If you're coming from the open Wan stack and want a quick take on what the paid tier gets you, this is a cheap experiment.
What you actually set
positivePrompt is the only required input - keep it concrete, same habits as local video gen. The settings that matter:
frameImages- wire in an image (or images) for image-to-video. It's anIMAGEsocket, so any ComfyUI image node feeds it directly.duration- 5 or 10 seconds, chosen by the model's frame rate. Longer isn't automatically better; 10s clips are where motion starts to drift on most models.CFGScale- defaults to 0.5, which is unusual. Kling Turbo is guidance-distilled, so don't crank this like an SD checkpoint; the tooltip warns that anegativePromptis ignored whenever CFGScale is at or below 1.numberResults- how many clips to generate, each with a different seed. This is also how you multiply your bill, so start at 1.
The rest are output plumbing (outputFormat MP4/WEBM/MOV, outputQuality), safety checking (safety.checkContent with fast/full modes), and the ttl toggle that controls how long a URL-hosted result stays alive.
The output is a single video socket. In current ComfyUI it carries the native VIDEO type, so wire it into a video Preview or Save node. Older setups may fall back to a file path.
Installing
This node ships inside the Runware/ComfyUI-Runware pack, which exposes the whole Runware cloud catalog as nodes. Install it once and Kling (plus every other model node) shows up together.
ComfyUI Manager: open the Custom Nodes Manager, search Runware, install, restart.
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
There are no model files - the Python deps are just runware-sdk, pillow, and soundfile. You do need a Runware API key from runware.ai/api-keys, pasted into ComfyUI Settings → Runware API key or set as RUNWARE_API_KEY.
Where people get burned
It's a paid API, so the obvious trap is billing: each numberResults is a separate generation, and the node's title bar shows your per-run cost after the fact - worth actually reading before you queue a 10-clip batch. The subtler trap is treating it like local tooling: there's no seed control exposed here and no local cache, so results aren't reproducible across runs. For reproducibility you'd want a seed parameter, and this node deliberately doesn't expose one. Use it for what it's good at - sampling the closed frontier model without renting an 80GB GPU.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| frameImagesopt | IMAGE | — | |
| negativePromptopt | STRING | Prompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1). | |
| CFGScaleopt | FLOAT | 0.500–1 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| durationopt | COMBO | 5 | 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. |
| 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. |
| 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. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |