Nodes/ComfyUI-Kling-Direct/Kling AI Cloud Uploader
ComfyUI Node

Kling AI Cloud Uploader

The Upload Node That Asks You to Read the Fine Print

By IxMxAMAR·Created 5 months ago·Updated 2 months ago· 4
Kling AI Cloud Uploader
  • audio
  • image
  • url
providerauto
i_understand_uploads_are_publicfalse
file_path
preserve_audio_qualitytrue
audio_formatwav

Kling AI Cloud Uploader pushes media to a public paste-bin host - catbox, litterbox, 0x0, uguu, tmpfiles - and hands you back a URL. Why would a ComfyUI node want to do that? Because several Kling API calls (lip-sync, avatar audio, video extend) take media as a URL, and if your file isn't already hosted somewhere Kling can fetch, something has to put it on the internet. This node is that something.

Read that first paragraph twice, because the tradeoff is right there in the name: public. These are unauthenticated hosts. Anyone who gets the URL - indexers, scrapers, anyone - can download the file. Catbox and 0x0 are permanent; they stay up until manually deleted. That's why the node has a required i_understand_uploads_are_public boolean, and it refuses to run unless you tick it - the source raises an error if you don't. This is one of the rare cases where a consent gate isn't theater; the pack was clearly burned (or watched others get burned) and built the warning in.

How it works

Inputs:

  • provider - which host to use. auto (default) tries catbox → litterbox → 0x0 → uguu → tmpfiles in order, which is the recommended setting. The others let you force a specific host and, for litterbox, a lifetime (1h / 24h / 72h). Tooltip sums it up: catbox = permanent, 0x0 = permanent, uguu = 24h, tmpfiles = unreliable.
  • i_understand_uploads_are_public - the consent tick. Required.
  • Then the content, any one of: audio (AUDIO tensor), image (IMAGE tensor), or file_path (a local file path).
  • Two audio controls: preserve_audio_quality (default True - keep original sample rate/channels; set False to downshift to 16kHz mono, which only matters if Kling TTS will ingest it) and audio_format (wav / mp3 / flac).

Output is a single url STRING - the public URL of your uploaded file, ready to paste into any URL-based Kling input.

Where it fits

The canonical flow: you render a video or audio clip locally, need Kling to lip-sync or animate from it, but Kling wants a URL. Cloud Uploader gets the file somewhere Kling can reach, you wire the url into a lip-sync or avatar node's *_url field, done. It's also handy when you're feeding Kling from files that aren't on a server Kling can already see.

The privacy reality

The pack's own docs are blunt about this, and I'll repeat it: do not upload sensitive images, voice clones, or copyrighted material. A voice clone especially - the pack ships voice-clone nodes, and shoving a clone out to a permanent public host is how you get your own voice living on the internet. If the file shouldn't be public, this is the wrong node. Use Kling's own Asset Upload (which stays inside Kling's system) or skip the URL path entirely.

Also: tmpfiles is labeled unreliable in the tooltip, for good reason. If auto eventually lands there you may get a short-lived or flaky URL. Prefer catbox for durability, litterbox for ephemeral.

Common issues

  • "refusing to upload. Tick 'i_understand_uploads_are_public'" - the consent gate. Tick it, but only after you've actually read what it means.
  • Upload "succeeds" but Kling can't fetch the URL - the host may be rate-limiting, or the file extension/type mismatched what Kling expects. The node sets MIME from the content, so a .png upload to a video-expecting endpoint will fail on Kling's side.
  • Audio comes back at the wrong quality - leave preserve_audio_quality True unless you specifically need Kling-TTS-friendly 16kHz mono.

Install

Ships in ComfyUI-Kling-Direct:

cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-Kling-Direct

or ComfyUI Manager → search "Kling Direct" → install → restart. No models, no GPU, no extra dependencies. Just remember: this node's job is to make things public. Use it like it does that.

CategoryKling AI/Config

Inputs (7)

NameTypeDefaultDescription
providerCOMBOautoCloud host. 'auto' tries catbox -> litterbox -> 0x0 -> uguu -> tmpfiles (recommended). catbox = permanent. litterbox = 1/24/72h temp. 0x0 = permanent. uguu = 24h. tmpfiles = unreliable.
i_understand_uploads_are_publicBOOLEANfalseREQUIRED. Uploads go to a public host — anyone with the URL can view. catbox & 0x0 are permanent. Do NOT upload sensitive content.
audiooptAUDIO
imageoptIMAGE
file_pathoptSTRINGPath to a local file to upload.
preserve_audio_qualityoptBOOLEANtrueIf True, uploads audio at original sample rate and channels (no downsampling). If False, downsamples to 16kHz mono (old behavior — only useful if the audio will be fed back into Kling TTS input).
audio_formatoptCOMBOwavAudio encoding format. wav = lossless uncompressed (large). flac = lossless compressed. mp3 = lossy but small.

Outputs (1)

NameTypeDescription
urlSTRING