Kling - V2.5 Turbo Image to Video Pro
Fast, and both frames are mandatory
- image_url
- tail_image_url
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Turbo means draft, not degraded
The Turbo line is Kling's speed tier: fewer compromises than you'd fear, cheaper than the flagship, and much better at being run five times while you figure out what you want. This is the Pro variant, and it's the one where you pin both ends of the clip.
KIE_Next_kling_v2_5_turbo_image_to_video_pro_2934702e, under KIE Next / Video / Kling in ComfyUI-KIE-Nodes-Next. Kling is Kuaishou's closed model - no weights - so the generation is a metered API call to KIE.ai, the reseller route with its own key and credit balance, not ComfyUI's official Partner Nodes.
The thing that will trip you up first
tail_image_url is required. Not optional, required - right there in the node's schema alongside the prompt and image_url. On the V2.1 Pro node the closing frame is optional; here both sockets must be connected or the run won't start.
Why? The node's fields come from KIE's documented request example for this endpoint, and that example includes both frames. So if your intended workflow was "animate this one still," this isn't the node - Kling V2.1 Master Image to Video or Standard is, and V2.5 Turbo Text to Video covers the prompt-only case. If you do want first-and-last-frame interpolation with Turbo speed, this node is exactly right, and the four inputs are all you need:
- prompt - up to 2500 characters. Describe the transition between your two frames.
- image_url (
IMAGE) - the opening frame. - tail_image_url (
IMAGE) - the closing frame. No way around it here. - duration -
5or10seconds. - negative_prompt - up to 500 characters, default
blur, distort, and low quality. - cfg_scale - 0 to 1, default 0.5. Lower is looser prompt adherence, higher is tighter. There's no reward for pushing it to the top of the range.
- timeout_seconds - 1200 seconds of polling. callback_url - leave empty.
Mechanism
Two PNG encodes, two uploads to KIE's file host, one POST to createTask with kling/v2-5-turbo-image-to-video-pro, then polling of the task record until the state is success - the interval climbs from about 2.5 seconds to a 15-second cap - then a download into output/KIE-Results/videos/ and a native ComfyUI VIDEO out the far end. Retries with backoff handle 429s and transient server errors internally.
Since the result is a VIDEO object, you can keep the graph hybrid: local generation for both frames, this node for the motion, local tooling afterwards. Nothing forces you to do the whole thing through the API.
Outputs
video, url, all_urls_json, task_id, raw_json, credits_consumed, credits_left. Credits spent and remaining are also displayed on the node after every run, so a batch of drafts is auditable at a glance. credits_left shows -1 when KIE's balance lookup fails; the clip is unaffected.
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 verified against KIE before it replaces an existing one, stored in Comfy's user config rather than your workflow, and confirmed with a masked fingerprint plus a ✅ CONNECTED status. Servers can set KIE_API_KEY, which takes priority. Dependencies are only requests, Pillow, numpy, PyYAML. Manager search works where the pack is listed; a ZIP and a one-click Windows installer sit in the repo's dist/.
Traps
- Forgetting the tail frame. You'll get a "required input is missing" style failure before anything is sent. That's the good news - you didn't pay for it.
- Two frames from different shots. If start and end don't match in lighting and lens character, the interpolation looks like a morph. Matching them is the craft.
- Assuming "Turbo" means "cheap enough to spam." It's cheaper, not free, and the node blocks until the job returns. Queue one, read the receipt, then decide.
- Fresh-install missing node. The pack builds its model nodes from KIE's documentation index at startup and re-syncs at most once every 24 hours, so first launch only shows a bootstrap set. Restart and give it a minute.
- Old ComfyUI. If the node fails while wrapping the downloaded clip as a
VIDEOwith a message aboutcomfy_api.latest, update ComfyUI rather than reinstalling the pack.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A team of paratroopers descends into enemy territory, as they pass through clouds, the camera switches to a slow pan above the battlefield lighting up with | The text prompt describing the video to generate (Max length: 2500 characters) |
| image_url | IMAGE | — | |
| tail_image_url | IMAGE | — | |
| durationopt | COMBO | 5 | The duration of the generated video in seconds |
| negative_promptopt | STRING | blur, distort, and low quality | Negative prompt to exclude certain elements from the video (Max length: 500 characters) |
| cfg_scaleopt | FLOAT | 0.500–1 | The CFG (Classifier Free Guidance) scale is a measure of how close you want the model to stick to your prompt (Min: 0, Max: 1, Step: 0.1) (step: 0.1) |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
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 | — |