Comfy-Org/ComfyUI · error · ValueError
kling-video-o1 does not support 4k resolution.
Error message
kling-video-o1 does not support 4k resolution.
What it means
Client-side capability guard: kling-video-o1 does not support 4k resolution, so resolution == '4k' with that model raises before the request. The node maps 4k->mode '4k', 1080p->'pro', else 'std'; the guard fires before that mapping.
Source
Thrown at comfy_api_nodes/nodes_kling.py:705
async def execute(
cls,
model_name: str,
prompt: str,
aspect_ratio: str,
duration: int,
resolution: str = "1080p",
storyboards: dict | None = None,
generate_audio: bool = False,
seed: int = 0,
) -> IO.NodeOutput:
_ = seed
if model_name == "kling-video-o1":
if duration not in (5, 10):
raise ValueError("kling-video-o1 only supports durations of 5 or 10 seconds.")
if generate_audio:
raise ValueError("kling-video-o1 does not support audio generation.")
if resolution == "4k":
raise ValueError("kling-video-o1 does not support 4k resolution.")
stories_enabled = storyboards is not None and storyboards["storyboards"] != "disabled"
if stories_enabled and model_name == "kling-video-o1":
raise ValueError("kling-video-o1 does not support storyboards.")
validate_string(prompt, strip_whitespace=True, min_length=0 if stories_enabled else 1, max_length=2500)
multi_shot = None
multi_prompt_list = None
if stories_enabled:
count = int(storyboards["storyboards"].split()[0])
multi_shot = True
multi_prompt_list = []
for i in range(1, count + 1):
sb_prompt = storyboards[f"storyboard_{i}_prompt"]
sb_duration = storyboards[f"storyboard_{i}_duration"]
validate_string(sb_prompt, field_name=f"storyboard_{i}_prompt", min_length=1, max_length=512)
multi_prompt_list.append(
MultiPromptEntry(
index=i,View on GitHub (pinned to 1c6d8d45b3)
Solutions
- Select 1080p (or another supported resolution) for kling-video-o1
- If 4k output is mandatory, use the dedicated 4k-capable Kling model
- Upsample the 1080p output with an upscaler node instead
Example fix
// before model_name = "kling-video-o1"; resolution = "4k" // after model_name = "kling-video-o1"; resolution = "1080p"
Defensive patterns
Strategy: validation
Validate before calling
def o1_resolution_ok(model_name: str, resolution: str) -> bool:
return model_name != "kling-video-o1" or resolution != "4k"
assert o1_resolution_ok(model_name, resolution) Type guard
def resolution_supported(model_name: str, resolution: str) -> bool:
return not (model_name == "kling-video-o1" and resolution == "4k") Try / catch
try:
out = await kling_t2v_node(model_name=model, resolution="4k", ...)
except ValueError as e:
if "does not support 4k" in str(e):
out = await kling_t2v_node(model_name=model, resolution="1080p", ...)
else:
raise Prevention
- Pair resolution choices with the model's tier (o1 tops out at 1080p/pro)
- Chain an upscaler node when you need higher-than-native output
When it happens
Trigger: Model=kling-video-o1 with resolution='4k' selected; workflows that previously used kling-v2-master-4k switched to o1 keeping 4k; programmatic calls passing resolution='4k'.
Common situations: Changing the model dropdown but leaving resolution at 4k; assuming all current Kling tiers support 4k.
Related errors
- kling-video-o1 only supports durations of 5 or 10 seconds.
- kling-video-o1 does not support audio generation.
- kling-video-o1 does not support storyboards.
- Positive prompt is empty
- Positive prompt is too long: {len(prompt)} characters
AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14).
Data as JSON: /api/errors/71a164059e3d96c3.
Report an issue: GitHub.