Kling AI Upscale
Kling's upscaler for image or video, targeted by task ID
- auth
- media
- media_file
- audio
- url
- task_id
The Kling pack's generation nodes download their results at full resolution, so why would you need a separate upscale step? Because "full resolution" on a closed API is whatever Kling decided to render - and when you want a bigger, sharper version of a previous result, KlingDirect_Upscale is the node that asks Kling to re-render it larger. It does images and videos, and the way you tell it what to upscale is the interesting part: you hand it a task ID from an earlier generation, not the media itself.
This is where the pack's task_id outputs stop being bookkeeping and start being workflow. Every generation node returns a task_id; this node consumes one (target_id, marked forceInput so you wire it directly). Kling keeps your generated media server-side, keyed by task, so an upscale call is literally "take the thing I made in that task and make it bigger."
What you set
- type -
imageorvideo. Changes which endpoint the job hits and what thetarget_idrefers to. - target_id - the task ID of the image or video to upscale.
- model_name -
kling-v1(default) orkling-v3. - video_url (optional) - required for video upscale as a fallback/alternative to
target_id: give it the hosted URL of the video instead of digging out its task ID.
The video_url fallback is worth knowing: if you have the hosted URL of a video but not its task ID (say, a clip from elsewhere on the web), you can upscale that instead. For images, target_id is the path.
Outputs
The pack's standard five, named for the medium: media (an IMAGE tensor of the upscaled image or video frames), media_file (downloaded path), audio (present but empty for image upscale - a media_file of "" and a silent audio tensor; don't go hunting for sound in an upscaled still), url (hosted result), and task_id.
Install and what it needs
Part of ComfyUI-Kling-Direct: ComfyUI Manager → search "Kling Direct" → install, or git clone https://github.com/IxMxAMAR/ComfyUI-Kling-Direct into ComfyUI/custom_nodes, then restart. No weights to download. You need Kling keys from https://app.klingai.com/global/dev (KYC required) in the Kling AI Authentication node or as env vars, plus the correct region - same shared setup as every node in the pack.
Where people get burned
- Upscaling a video you can't identify. If the
target_iddoesn't match a task on your account (or the wrong region), the job fails server-side. Keep thetask_idwired straight from the generation node - don't retype it. - Expecting detail invention. Kling's upscaler is good, but like all upscaling it's more pixels, not magic. For a heavily compressed source, the result can look sharpened rather than detailed - that's the honest ceiling of any upscaler, cloud or local.
- Cost. Video upscaling is a full video job, metered accordingly. Image upscaling is cheaper; if you're only ever upscaling stills, consider whether your local ESRGAN-style upscaler would do the same job for free.
The workflow-shaped use: generate → task_id → upscale → task_id again - chain it into Video Extend or save the final media with Video to File for a playable MP4.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| auth | KLING_AUTH | — | |
| type | COMBO | image | Whether to upscale an image or video. |
| target_id | STRING | ID of the image or video to upscale (from a previous generation). | |
| model_name | COMBO | kling-v1 | Upscale model version. |
| video_urlopt | STRING | URL of the video (required for video upscale). |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| media | IMAGE | — |
| media_file | STRING | — |
| audio | AUDIO | — |
| url | STRING | — |
| task_id | STRING | — |