Kling Task Status
Peek at a running Kling job without polling or paying twice
- auth
- status
- result_json
- task_id
Every generation node in this pack blocks until Kling finishes: submit the task, poll the API, download the result. That's fine for the normal "click run, wait, get video" flow. But if you're building anything more clever - a workflow that fires off a job and checks on it later, a pipeline that decides what to do based on a task's state, or a queue that shouldn't hold up the whole graph - you want KlingDirect_TaskStatus, the one-shot status check that does no polling and no downloading.
It's a deliberately simple node: feed it auth, the endpoint the task was submitted to, and the task_id you saved from an earlier generation, and it returns the current status string plus the raw result JSON. One call, no waiting, no credits burned on a re-render.
The inputs that matter
- endpoint - a dropdown of the task endpoints this pack can submit to: text2video, image2video, omni-video, video-extend, lip-sync, motion-control, effects, upscale, image generations, and more. The long list exists because Kling's status API is per-endpoint; pick the one that matches the node that produced your
task_id. Getting this wrong returns a status for the wrong task space. - task_id - the ID from a previous generation node's
task_idoutput. It'sforceInput, so wire it directly rather than retyping.
Outputs
Three STRINGs: status (e.g. succeed, processing, failed, unknown), result_json (the full task response, pretty-printed and truncated to 8000 chars - this is where the video URL lives once the task completes), and task_id passed through so you can keep chaining.
The trick that makes it useful: since the generation nodes are blocking, this node earns its keep in async arrangements - a workflow that submits, saves the task_id, runs other local work, then comes back to check. Combined with the pack's ApiHealthCheck and the task_id passthrough, you can build a poor man's job queue inside ComfyUI where a status check decides the next branch.
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. Requires auth (access key + secret key from https://app.klingai.com/global/dev, KYC required, wired via the Kling AI Authentication node or env vars) and the correct region selected - same setup as every node in the pack, no extra dependencies.
Where people get burned
- Wrong endpoint. The status call hits the endpoint you selected, so a
task_idfrom lip-sync checked against thetext2videoendpoint will not find the task. Match the node that made the ID. - Expecting it to poll. It doesn't. One check, one answer. If the status says
processing, run the node again later - that's on you, and that's the point. - The truncated JSON.
result_jsonis capped at 8000 characters; for huge responses the tail (sometimes including the download URL) can be cut. Thestatusfield andtask_idare never affected.
One honest caveat: because this is a one-shot check on an async task, a plain workflow (submit → immediately check) will usually report processing and then you've got nothing to show. Use it where you'd genuinely queue - it's a control-flow tool, not a progress bar.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| auth | KLING_AUTH | — | |
| endpoint | COMBO | /v1/videos/text2video | The endpoint the task was submitted to. |
| task_id | STRING | Task ID returned from a previous generation node. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |
| result_json | STRING | — |
| task_id | STRING | — |