Modelverse Kling V3
One node that does t2v, i2v, and motion control
- client
- first_frame_image
- last_frame_image
- url
- task_id
Kling is the Chinese video model line that became a community shorthand for "this is what paid video services feel like," and V3 is its current generation. This node wraps it through UCloud's Modelverse API, which means one node in your graph can do three different jobs - text-to-video, image-to-video, and motion control - because Kling V3 is one model that handles all of them. It auto-routes based on what you feed it, and that single dropdown-less design is the first thing to understand.
What it is
A unified video node. With just a prompt you get text-to-video. Add a first_frame_image (or URL) and it switches to image-to-video. Add a reference_video_url and it becomes motion control - you transfer the movement of one video onto your subject. The kling_v3_type input defaults to auto and infers the mode from your inputs, so the node reads your intent rather than making you declare it.
The inputs that matter
- client - required, from the Modelverse Client / Secret Client node.
- prompt - the core instruction for all three modes.
- negative_prompt - genuinely useful here; Kling responds to it.
- first_frame_image / first_frame_url - one or the other, for i2v and motion control.
- last_frame_image / last_frame_url - bookend the clip in i2v mode.
- reference_video_url - the motion-control trigger. Set this and the node routes to
motion_control. - mode -
std(720p) orpro(1080p). Pro is the pricier lane. - duration - 3–15 seconds.
- aspect_ratio - 16:9, 9:16, or 1:1.
- sound - off/on for synchronized audio.
- shot_type - optional;
multifor multi-shot videos. - character_orientation - motion control: follow the image or the video orientation.
- keep_original_sound - motion control: carry the reference video's audio through.
Outputs are url + task_id; run url into the Modelverse Preview Video node to download the mp4 and preview it.
Installing and keying up
Standard for this pack. ComfyUI Manager → search "ComfyUl-UCloud" → Install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ucloud/comfyui-plugin
restart ComfyUI. Deps (requests, pillow, numpy, openai, GitPython) come via Manager; no model files, since Kling lives on UCloud's servers. Get a ModelVerse API key from the UCloud console and enter it through the Modelverse Secret Client node (secret name in the workflow, key in secrets.json) or a config.ini MODELVERSE_API_KEY=... line.
Common issues
- Mode surprises you - if it's routing somewhere unexpected, audit your inputs: a lingering
reference_video_urlforces motion control even when you thought you were doing i2v. - Audio conflicts - Kling V3 Omni requires
soundoff when a reference video is set; the base V3 node is more forgiving, but keepkeep_original_soundandsoundconsistent or you get odd results. - "API key is not set" - empty client node, as always.
- Motion control comes back weak - the reference video needs clear, unambiguous motion to transfer. Blurry or static refs give timid results.
- Long 15s pro runs - cloud video polls every 5 seconds up to ~15 minutes; the big ones ride that ceiling.
Kling V3 is the video node most likely to make you abandon your "wait for local" stance - the motion control alone is something most local stacks only fake.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| client | MODELVERSE_API_CLIENT | — | |
| prompt | STRING | Text prompt describing the desired video | |
| negative_promptopt | STRING | Negative prompt to avoid unwanted content | |
| kling_v3_typeopt | COMBO | auto | Task type; auto infers from inputs (image→i2v, video→motion_control) |
| first_frame_imageopt | IMAGE | First frame image (image-to-video / motion control) | |
| first_frame_urlopt | STRING | First frame URL (use either this OR first_frame_image, not both) | |
| last_frame_imageopt | IMAGE | Last frame image (image-to-video) | |
| last_frame_urlopt | STRING | Last frame URL (use either this OR last_frame_image, not both) | |
| reference_video_urlopt | STRING | Reference video URL (motion control; auto-selects motion_control when set) | |
| aspect_ratioopt | COMBO | 16:9 | Output aspect ratio |
| durationopt | INT | 53–15 | Video duration in seconds (3–15) |
| modeopt | COMBO | std | std: 720p, pro: 1080p |
| soundopt | COMBO | off | Generate synchronized audio |
| shot_typeopt | STRING | Optional shot type, e.g. 'multi' for multi-shot | |
| character_orientationopt | COMBO | image | Motion control: follow image or video orientation |
| keep_original_soundopt | COMBO | no | Motion control: keep original reference video sound |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| url | STRING | — |
| task_id | STRING | — |