Nodes/ERPK Collection/Kling O3 Image-to-Video
ComfyUI Node

Kling O3 Image-to-Video

Start frame, end frame, and sound

By eRepublik-Labs·Created 11 months ago·Updated 21 days ago· 1
Kling O3 Image-to-Video
  • image
  • end_image
  • client
  • video_url
modelKling O3
prompt
image_url
duration5
seed-1
end_image_url
soundfalse
shot_typeintelligent
multi_prompt
element_list

Kling is Kuaishou's closed, API-only video line - the poster child for "you can't run this locally." This node is how you use Kling O3, its flagship, from inside ComfyUI: you feed it a starting image and a sentence about what moves, and a cloud GPU does the rest. If you don't have a video card that can breathe life into 10 seconds of footage, or you just want the newest model without chasing a quantized local workflow, this is the point.

It's part of the ERPK Collection, a community monorepo that wraps the WaveSpeed AI API (plus OpenAI, Claude, Gemini, Grok). The official WaveSpeed ComfyUI nodes have a reputation for lagging behind the model lineup; ERPK is the refresh that actually tracks what WaveSpeed ships.

How it works

Pick a model (Kling O3, or Kling O3 Pro for the heavier tier), connect an image, write a prompt about motion, camera work, and action. The node uploads your frame to api.wavespeed.ai, then polls - 10-second interval, 15-minute timeout - until the clip is rendered. The output isn't a video file or a tensor; it's a video_url STRING. Wire that into the pack's Preview Anything node to preview and download.

Everything is billed per call, so treat it like a vending machine, not a local model.

The inputs that matter

Only a few actually need your attention:

  • prompt - describes motion, camera movement, and action. Blank prompts are rejected before you're charged, so you won't pay for a typo'd empty box.
  • image - your starting frame as a ComfyUI IMAGE tensor (LoadImage → here). Preferred over image_url, and takes precedence if both are connected. If you only have a URL, image_url works as the fallback.
  • model - O3 standard or O3 Pro. Pro unlocks element_list (Kling Elements IDs for character/scene consistency) and is the tier where duration is 5 or 10 seconds; standard takes 3–15.
  • end_image - an optional end frame for guided transitions, so the clip lands on a specific final shot instead of wherever the model wanders.
  • sound - synchronized audio. Nice, but it raises the base cost, so it's a "do I actually need dialogue" decision.
  • multi_prompt - a JSON array of scene-segmented prompts if you want the video to change scene mid-clip rather than follow one prompt.

The seed widget is a lie in the best way: the O3 API doesn't accept a seed, so the field exists for workflow compatibility. Leave it randomizing. The rest - client, shot_type (intelligent vs customize), end_image_url - you can safely ignore at first.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/eRepublik-Labs/comfyui-nodes-erpk.git erpk
cd erpk
pip install -r requirements.txt
# restart ComfyUI

Or just search erpk in ComfyUI Manager and install ERPK Custom Nodes. No model files to download - that's the whole point. You do need a WaveSpeed API key with credits: right-click the canvas > ERPK Settings (or Settings > ERPK > API Keys), and it's stored per-user, never in the workflow.

Common issues

  • "Starting image is required" - you need either the image tensor or image_url. One of them has to be connected.
  • Blank video_url - the generation probably failed upstream (moderation or content filter on WaveSpeed's side). Check the WaveSpeed dashboard for the actual error; it's not your ComfyUI install.
  • It's expensive to iterate - every queue with a randomized seed is a fresh billed generation. Tune your prompt in the image, not the video.
  • element_list errors on standard O3 - that input is Pro-only. If you get a JSON parse error there, it means you pasted something that isn't a [...] array.

One honest caveat: you're renting Kling's quality per clip, and the per-clip cost adds up fast if you're iterating. For volume, the 2.5 Turbo nodes in this pack are the budget path.

CategoryERPK/WaveSpeedAI

Inputs (13)

NameTypeDefaultDescription
modelCOMBOKling O3Model variant: Kling O3 (standard) or Kling O3 Pro (adds element_list)
promptSTRINGText description of motion, camera movement, and action
image_urlSTRINGStarting image URL (use WaveSpeed Upload Image to produce one). Fallback when the IMAGE input is not connected.
imageoptIMAGEStarting image as a ComfyUI IMAGE tensor. Preferred — takes precedence over `image_url` when connected.
end_imageoptIMAGEOptional end-frame image as a ComfyUI IMAGE tensor for guided transitions. Preferred — takes precedence over `end_image_url` when connected.
clientoptWAVESPEED_AI_API_CLIENTWaveSpeed API client (optional if API key is configured in Settings)
durationoptINT53–15Video duration in seconds. Std accepts 3-15; Pro accepts 5 or 10.
seedoptINT-1-1–2147483647Retained for workflow compatibility; the O3 API does not accept a seed parameter.
end_image_urloptSTRINGEnd-frame image URL for guided transitions. Fallback when the end_image IMAGE input is not connected.
soundoptBOOLEANfalseEnable synchronized audio generation (raises base cost)
shot_typeoptCOMBOintelligentShot composition mode: 'intelligent' (auto) or 'customize' (manual)
multi_promptoptSTRINGJSON array of scene-segmented prompts guiding scene transitions
element_listoptSTRINGPro only: JSON array of Kling Elements IDs to lock for visual consistency

Outputs (1)

NameTypeDescription
video_urlSTRING