Kling 3.0
The node with no inputs at all, and how to drive it anyway
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Yes, really: no widgets
Drop KIE_Next_kling_3_0_video_604efc51 on the canvas and you get three optional fields - timeout_seconds, callback_url, and expert_override_json. There is no prompt box. No image socket. Not a bug, not a broken install, and definitely not a "post your issue" moment.
Here's why. This pack doesn't hand-write a node per model. It reads KIE's API documentation at startup and generates a ComfyUI node for every documented endpoint, converting the documented request fields into widgets. That works great when the docs publish a request schema. Kling 3.0's page publishes example payloads - full, useful JSON - but no schema table, so the factory had nothing to convert. Result: a node that can call kling-3.0/video correctly and gives you nowhere to type.
So this node is a thin shell around the raw endpoint. Which is fine - it's the general Kling 3.0 endpoint, the one that covers image-guided generation, multi-shot mode, elements and sound in a single call. You just have to bring the payload.
Driving it
Fill in expert_override_json with the documented input object. KIE's own example for this model looks like this:
{
"prompt": "In a bright rehearsal room, sunlight streams through the window @element_dog",
"image_urls": ["https://your-uploaded-image.png"],
"sound": true,
"duration": "5",
"aspect_ratio": "16:9",
"mode": "pro",
"multi_shots": false,
"kling_elements": [
{
"name": "element_dog",
"description": "dog",
"element_input_urls": [
"https://your-uploaded-dog-1.jpeg",
"https://your-uploaded-dog-2.png"
]
}
]
}
Two things worth noticing in that example. The @element_dog token in the prompt is how a named element gets referenced from the text - that's the mechanism behind Kling's elements feature, and it's why the name has to match. And image_urls wants hosted URLs, not local files: since you're bypassing the widgets, the pack's automatic upload doesn't kick in. Wire your image into the KIE • Upload Image utility node (it's in the pack's Utility branch) and paste the url it returns. Same trick for reference footage with KIE • Upload Video.
From there it behaves like every other node in this pack: POST createTask, poll recordInfo until success with a poll interval growing from ~2.5s to a 15s cap, download the MP4 into output/KIE-Results/videos/, return it as a ComfyUI VIDEO. timeout_seconds defaults to 1200 - twenty minutes - and callback_url stays empty unless you run a webhook server.
Outputs
video (wire this into a preview, a save, or a local post-process), url (the hosted result link), all_urls_json (every URL the provider returned), task_id, raw_json (the full provider response - read this first when a job dies), credits_consumed and credits_left. The two credit numbers also print directly on the node after each run, which matters here because payloads you write by hand are the easiest way to accidentally buy a 4K multi-shot render.
A word on cost
Kling 3.0 sits at the top of the family, and the community price commentary on it is not kind: "Kling V3 Omni is not as censored, but is ludicrously expensive ($1.50 for a 5s clip at 1080p)" is a fair summary of the mood on r/StableDiffusion. KIE resells access, which is usually cheaper than going direct and much simpler to bill, but you're still paying per second of video at the top tier. Draft with the cheap nodes (V3 Turbo, V2.5 Turbo), finish here.
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. The key is validated against KIE before it overwrites anything and stays out of your workflow files; you get a masked fingerprint and a ✅ CONNECTED status. Headless setups can set KIE_API_KEY instead - it takes priority over the saved key. Dependencies are requests, Pillow, numpy, PyYAML, nothing else. ComfyUI Manager search works when the pack is listed in the registry, and the repo also ships a ZIP plus a one-click Windows installer in dist/.
Gotchas
- Malformed JSON fails the node locally, before any credits are spent - "must contain valid JSON" with the parser's complaint. It's a feature; just fix your commas.
- Missing widgets can come back. These nodes regenerate from KIE's docs, and the catalog re-syncs at most once a day. If KIE publishes a schema for this page, the node will grow real inputs. Keep the override JSON when you upgrade; it isn't lost, it just stops being the only way in.
- Wrong model name is impossible, wrong field names are not. The node pins the envelope model (
kling-3.0/video) for you; everything above it is your responsibility. - Update ComfyUI if video output errors out with a message about
comfy_api.latestand a video-from-file helper. Very old builds can't wrap the downloaded clip. - No node in the menu yet? The catalog sync hasn't finished. Restart and give it a minute; the bootstrap set only covers a handful of models on first launch.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. | |
| expert_override_jsonopt | STRING | {} | Expert-only payload overrides for APIs whose documentation has no request schema yet. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |