Nodes/KIE.ai Nodes Next/Kling 3.0 Omni Reference To Video
ComfyUI Node

Kling 3.0 Omni Reference To Video

Character references, and the one JSON field you have to fill in yourself

By felipederosilva·Created 2 months ago·Updated 13 days ago· 4
Kling 3.0 Omni Reference To Video
  • image_urls
  • video_1
  • video
  • url
  • all_urls_json
  • task_id
  • raw_json
  • credits_consumed
  • credits_left
◄input_variantNo Video Input►
◄promptGenerate a video of the character walking along a city street, using the character appearance in the reference images.►
◄duration5►
◄resolution720p►
◄aspect_ratio16:9►
◄audiotrue►
◄customize_multi_shotsfalse►
◄prefer_multi_shotstrue►
◄multi_prompt[]►
◄elements[]►
◄timeout_seconds1200►
◄callback_url►

What "reference to video" means here

Every other mode in Kling's family takes a frame - this takes who. You hand it reference images of a subject (a character, a product, a face) and it generates a shot with that subject in it, held consistent across the clip. It's the reference-conditioning branch of the family tree, and it's the same idea as reference-image conditioning in the open ecosystem: instead of describing the character in words and hoping, you show the model.

This is the node for "my character, in a new scene, doing something" rather than "this exact still, but moving."

Kling is Kuaishou's closed model, so there's no local option. The API route here is KIE.ai - a reseller with its own account and credits, not ComfyUI's official Partner Nodes. KIE_Next_kling_3_0_omni_reference_to_video_6f0ef717 lives under KIE Next / Video / Kling.

Why this node looks half-finished

It ships with exactly one required widget: prompt. Then timeout_seconds, callback_url, and expert_override_json.

That's the pack's automatic node factory at work. KIE Next reads KIE's API documentation index and builds a ComfyUI node per documented endpoint, turning request fields into widgets. When a documentation page has example payloads but no published request schema, there are no fields to convert - so you get a prompt box and the expert override escape hatch. The reference-image fields on this endpoint are in that category.

Practical consequence: to actually send references, you fill in the JSON yourself.

A working recipe

Upload your reference image with the pack's KIE • Upload Image utility node - it takes an IMAGE, pushes it to KIE's file host and outputs the resulting url. Then paste into expert_override_json:

{
  "image_urls": ["https://your-uploaded-reference.png"],
  "prompt": "the character walks through a rain-lit alley, cinematic, handheld"
}

The node merges that object into the request input before sending, so field names have to be KIE's, not yours. The prompt widget still works if you'd rather type the prompt there - an override only wins where the keys collide.

The rest of the plumbing is the same as every generated node in this pack: upload → POST createTask → poll recordInfo until success (interval grows from ~2.5s to a 15s cap) → download the MP4 into output/KIE-Results/videos/ → hand back a native VIDEO.

Inputs and outputs, honestly

Required: prompt - the one field the factory could infer. Optional: timeout_seconds (1200 by default, so twenty minutes of patience; raise it for long or high-res jobs), callback_url (leave empty unless you're running a webhook server), expert_override_json (your reference URL goes here for now).

Outputs: video, url, all_urls_json, task_id, raw_json, credits_consumed, credits_left. Wire video into a Save Video or preview; keep raw_json for failure forensics; watch the credit receipt that prints on the node after every successful run. If KIE's balance service is briefly down, credits_left returns -1 and the generation still completes.

The honest caveat about consistency

A reference image is a condition, not an identity lock. The pack's own documentation says this out loud, and the open-model community learned it the hard way through 2025 and 2026: reference conditioning is strong for a face and weaker for full-body design - outfit, proportions, hair length in non-frontal views. If you need the same character across fifty shots, the reliable answer remains a trained LoRA or an edit model in a chain, not a single reference frame. This node is for one shot with the right character in it.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next

Restart ComfyUI. Then Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key: it's validated before being saved, kept outside your workflow, and confirmed with a masked fingerprint and ✅ CONNECTED (plus your current credit balance when KIE is reachable). Headless installs can export KIE_API_KEY; it takes priority over the saved one. Dependencies are requests, Pillow, numpy, PyYAML - nothing exotic. Manager install works where the pack is listed, and the repo ships a ZIP and one-click Windows installer under dist/.

Things that will bite you

  • The node may gain real widgets later. These nodes are generated at startup and the catalog re-syncs at most once a day. When KIE publishes a request schema for this page, an image socket shows up. The override JSON keeps working; it just stops being mandatory.
  • Older ComfyUI builds fail on video output. If you see an error about comfy_api.latest not exposing a video-from-file helper, update ComfyUI rather than the pack.
  • Bad JSON fails the run before it's sent - good, that's local validation saving you a paid failed job. The error names expert_override_json, so watch your quotes and trailing commas.
  • Moderation follows the model. Your reference images and prompt go to KIE and then to Kuaishou's filter. There is no local bypass for a closed model - nothing to abliterate, no weights to nudge.
CategoryKIE Next/Video/Kling

Inputs (14)

NameTypeDefaultDescription
input_variantCOMBONo Video InputChoose the provider's input mode. Only fields documented for that mode are submitted; its required inputs are checked before upload.
promptSTRINGGenerate a video of the character walking along a city street, using the character appearance in the reference images.Video description. It must not be empty after leading and trailing whitespace is removed. Maximum length: 3,072 characters.
image_urlsoptIMAGEArray of reference image URLs. The maximum number of images depends on the number and types of reference subjects. When there is no reference video and only multi-image subjects are used, the combined number of reference images and multi-image subjects must not exceed 7. When there is no reference video and both video character and multi-image subjects are used, the combined number of reference images and multi-image subjects must not exceed 4. HTTP, HTTPS, and OSS URLs are supported. Images must be in JPG, JPEG, or PNG format; each file must not exceed 50 MB; both width and height must be at least 300 px; and the aspect ratio must be between 0.4 and 2.5.
durationoptCOMBO5Total video duration in seconds. Optional; the default is 5 seconds. Supports integer values from 3 to 15.
resolutionoptCOMBO720pVideo resolution. `720p` outputs a 720p video, `1080p` outputs a 1080p video, and `4k` outputs a 4K video.
aspect_ratiooptCOMBO16:9When no video is provided, `16:9`, `9:16`, and `1:1` are supported.
audiooptBOOLEANtrueWhether to enable audio. When no video is provided, both `true` and `false` are supported.
customize_multi_shotsoptBOOLEANfalseOptional, default false. Set true for custom multi-shot (multi_prompt required).
prefer_multi_shotsoptBOOLEANtrueWhether to enable intelligent shot planning. This field is mutually exclusive with `customize_multi_shots`.
multi_promptoptSTRING[]List of custom shots. When `customize_multi_shots=true`, this field is required, must not be empty, and may contain up to 6 shots. When `customize_multi_shots=false`, it must be an empty array or omitted.
elementsoptSTRING[]List of one-time subject assets. The default is an empty array. The number of subjects is jointly limited by the reference images, reference video, and subject types. When there is no reference video and only multi-image subjects are used, the combined number of reference images and multi-image subjects must not exceed 7. When there is no reference video and only video character subjects are used, the number of video character subjects must not exceed 3. When there is no reference video and both video character and multi-image subjects are used, the number of video character subjects must not exceed 3, and the combined number of reference images and multi-image subjects must not exceed 4.
video_1optVIDEOArray of video URLs. Exactly 1 video is required. HTTP, HTTPS, and OSS URLs are supported. Videos must be in MP4 or MOV format; each file must not exceed 200 MB; duration must be between 3 and 15.5 seconds; width and height must each be between 700 and 4,553 px; total pixels must not exceed 8,294,400; the aspect ratio must be between 0.4 and 2; and the frame rate must be between 24 and 60 fps.
timeout_secondsoptINT120030–7200—
callback_urloptSTRINGOptional KIE callback URL. Leave empty for normal ComfyUI use.

Outputs (7)

NameTypeDescription
videoVIDEO—
urlSTRING—
all_urls_jsonSTRING—
task_idSTRING—
raw_jsonSTRING—
credits_consumedFLOAT—
credits_leftFLOAT—