Kling 3.0 Text-to-Video
The flagship Kling node, in your graph
- client
- video_url
Kling 3.0 Text-to-Video is the top of the Kling line in this pack: text in, video out, powered by the current Kling 3.0 models through WaveSpeed. It's the node you reach for when a clip actually has to be good - the 3.0 family is a clear step up in motion coherence and prompt fidelity over the 2.6 tier, and you get three variants to pick from: standard, Pro (higher quality), and 4K (highest resolution). It's the full parameter surface too - negative prompts, cfg scale, sound, shot composition, scene-segmented multi-prompts, and element lists for visual consistency.
The honest framing: this is a paid API node, so "the node you reach for" means "the node you pay for." Use it for the keeper takes, not for burning through fifty draft ideas - that's what the cheaper Kling 2.6 node is for. When a shot matters, though, the gap in quality is real and visible.
How it works
You give it a prompt (required unless you provide multi_prompt), it submits the job to WaveSpeed, polls until the render finishes, and returns a video_url STRING. Wire that into Preview Anything to watch or download the clip - every video node in this pack returns a URL, not a video tensor.
The inputs that matter
- prompt - the scene description. Be explicit about subject, motion, camera.
- model - Kling 3.0, Kling 3.0 Pro, or Kling 3.0 4K.
- duration - 3 to 15 seconds, default 5.
- aspect_ratio - 16:9, 9:16, or 1:1.
- cfg_scale - prompt adherence, 0–1, default 0.5.
- sound - synchronized audio generation, off by default.
- negative_prompt - what to exclude.
Then the advanced pair: multi_prompt is a JSON array of scene-segmented prompts (mutually exclusive with prompt - the API wants one or the other, and shot_type "intelligent" requires it), and element_list is a JSON array of pre-generated element IDs for keeping visual consistency across shots. These are the fields you'll reach for once you're doing multi-shot sequences rather than one-offs.
The seed widget is cache control only - it isn't sent to the API. Randomize re-runs (and re-bills) each queue pass; a fixed value lets ComfyUI serve a cached result.
Installing it
Part of the ERPK Collection (eRepublik-Labs/comfyui-nodes-erpk). ComfyUI Manager: search erpk → ERPK Custom Nodes → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/eRepublik-Labs/comfyui-nodes-erpk.git erpk
cd erpk
pip install -r requirements.txt
WaveSpeed API key required (Settings → ERPK → API Keys). No model downloads.
Common issues
- Multi-shot setup rejected - you set
shot_typeto "intelligent" without providingmulti_prompt, or provided bothpromptandmulti_prompt. Pick one. - "Prompt cannot be empty" - fill the prompt (or supply a valid
multi_prompt). - Jobs take minutes - long renders are normal; the client polls at ~10s intervals with a generous timeout. Don't cancel a healthy poll.
- Cost creeps up on 4K - 4K is the priciest tier. Reserve it for finals and use standard/Pro for drafts.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | Kling 3.0 | Model variant: Kling 3.0 (standard), Kling 3.0 Pro (higher quality), or Kling 3.0 4K (highest resolution) |
| prompt | STRING | Text description of the video to generate (required unless multi_prompt is provided) | |
| clientopt | WAVESPEED_AI_API_CLIENT | WaveSpeed API client (optional if API key is configured in Settings) | |
| durationopt | INT | 53–15 | Video duration in seconds (3 to 15) |
| aspect_ratioopt | COMBO | 16:9 | Aspect ratio of the output video |
| seedopt | INT | -1-1–2147483647 | Random seed for reproducibility (-1 for random) |
| negative_promptopt | STRING | Elements to exclude from the generation | |
| cfg_scaleopt | FLOAT | 0.500–1 | Prompt adherence strength, 0-1 |
| soundopt | BOOLEAN | false | Enable synchronized audio generation |
| shot_typeopt | COMBO | customize | Shot composition mode. 'customize' is the API default; 'intelligent' auto-determines scope but requires multi_prompt to be set. |
| multi_promptopt | STRING | JSON array of scene-segmented prompts (mutually exclusive with prompt) | |
| element_listopt | STRING | JSON array of pre-generated element IDs for visual consistency |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |