Kling O3 Text-to-Video
Turn a prompt into a billed clip, no GPU required
- client
- video_url
The text-to-video sibling of the Kling O3 image-to-video node. Same family, same cloud billing, one less input: instead of a starting frame you hand it a prompt and get back a video that's supposed to look like what you described. When you don't have a reference image - a mood board brainstorm, a title card test, a "here's a concept" pitch - this is the node to reach for.
It lives in the ERPK Collection, the community pack that wraps WaveSpeed AI's API. Kling O3 is closed and API-only, so there's no local weights situation to fight; you pay per clip and move on.
How it works
You type a prompt, optionally pick a model tier, duration, aspect ratio, and whether you want sound. The node sends the request to api.wavespeed.ai and polls every 10 seconds (up to a 15-minute timeout) until the render finishes. Output is a single video_url STRING - feed it into the pack's Preview Anything node to watch it and hit download. Nothing runs on your machine beyond the request itself.
The inputs that matter
prompt- the whole show. Describe the scene, the motion, the camera. The tooltip is explicit that it's required unless you providemulti_prompt, and a blank prompt raises an error before you're billed.model- Kling O3 or Kling O3 Pro. Pro is the higher-quality tier and the only one that takeselement_list(a JSON array of Kling Elements IDs, so characters or objects you've locked elsewhere in the pack stay consistent across shots).duration- 3–15 seconds on standard, 5 or 10 on Pro. Longer is not linearly better; it's mostly more chances for the model to drift.aspect_ratio- the usual suspects (16:9 and friends). Pick for the platform you're posting to, not for vibes.sound- synchronized audio at a surcharge. Default off. On a text-to-video with no reference, generated audio can genuinely sell the clip, but it's a cost toggle worth being deliberate about.multi_prompt- a JSON array of scene-segmented prompts that lets one video progress through distinct scenes instead of one continuous prompt. Mutually exclusive withprompt.
The seed widget here says "random seed for reproducibility," but read the O3 notes: the API doesn't accept a seed, so the field is effectively a cache knob kept for workflow compatibility. Randomize it; don't expect to re-run and get an identical clip.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/eRepublik-Labs/comfyui-nodes-erpk.git erpk
cd erpk
pip install -r requirements.txt
Or ComfyUI Manager → search erpk → ERPK Custom Nodes. No models to download. You need a WaveSpeed API key with credits, set once under right-click canvas > ERPK Settings (Settings > ERPK > API Keys). Keys live in your user settings, not the workflow.
Common issues
- Empty
video_urlafter a long wait - check the WaveSpeed dashboard. The likely culprit is their content filter rejecting the prompt or output; the node itself is usually blameless. multi_promptthrows a parse error - it must be valid JSON, an array like[{"prompt": "...", "duration": 3}]. A single stray quote breaks it.- Cost creep - each run is a fresh billed generation. For rough ideas, start with 5 seconds; upgrade duration once the concept earns it.
If you need the clip to start from an actual image you control, grab the Kling O3 image-to-video node instead - that's the same model with a first frame.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | Kling O3 | Model variant: Kling O3 (standard) or Kling O3 Pro (higher quality, element_list support) |
| 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. Std: 3-15. Pro: 5 or 10. |
| aspect_ratioopt | COMBO | 16:9 | Aspect ratio of the output video |
| seedopt | INT | -1-1–2147483647 | Random seed for reproducibility (-1 for random) |
| soundopt | BOOLEAN | false | Enable synchronized audio generation (surcharge applies) |
| shot_typeopt | COMBO | intelligent | Shot composition mode: 'intelligent' auto-determines, 'customize' allows manual control |
| multi_promptopt | STRING | JSON array of scene-segmented prompts (mutually exclusive with prompt) | |
| element_listopt | STRING | Pro only: JSON array of pre-generated element IDs for visual consistency |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |