{"record":{"id":"7ae3ce7562506b08","repo":"Comfy-Org/ComfyUI","slug":"kling-video-o1-does-not-support-storyboards","errorCode":null,"errorMessage":"kling-video-o1 does not support storyboards.","messagePattern":"kling-video-o1 does not support storyboards\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"comfy_api_nodes/nodes_kling.py","lineNumber":708,"sourceCode":"        prompt: str,\n        aspect_ratio: str,\n        duration: int,\n        resolution: str = \"1080p\",\n        storyboards: dict | None = None,\n        generate_audio: bool = False,\n        seed: int = 0,\n    ) -> IO.NodeOutput:\n        _ = seed\n        if model_name == \"kling-video-o1\":\n            if duration not in (5, 10):\n                raise ValueError(\"kling-video-o1 only supports durations of 5 or 10 seconds.\")\n            if generate_audio:\n                raise ValueError(\"kling-video-o1 does not support audio generation.\")\n            if resolution == \"4k\":\n                raise ValueError(\"kling-video-o1 does not support 4k resolution.\")\n        stories_enabled = storyboards is not None and storyboards[\"storyboards\"] != \"disabled\"\n        if stories_enabled and model_name == \"kling-video-o1\":\n            raise ValueError(\"kling-video-o1 does not support storyboards.\")\n        validate_string(prompt, strip_whitespace=True, min_length=0 if stories_enabled else 1, max_length=2500)\n\n        multi_shot = None\n        multi_prompt_list = None\n        if stories_enabled:\n            count = int(storyboards[\"storyboards\"].split()[0])\n            multi_shot = True\n            multi_prompt_list = []\n            for i in range(1, count + 1):\n                sb_prompt = storyboards[f\"storyboard_{i}_prompt\"]\n                sb_duration = storyboards[f\"storyboard_{i}_duration\"]\n                validate_string(sb_prompt, field_name=f\"storyboard_{i}_prompt\", min_length=1, max_length=512)\n                multi_prompt_list.append(\n                    MultiPromptEntry(\n                        index=i,\n                        prompt=sb_prompt,\n                        duration=str(sb_duration),\n                    )","sourceCodeStart":690,"sourceCodeEnd":726,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy_api_nodes/nodes_kling.py#L690-L726","documentation":"Client-side guard rejecting storyboard usage with kling-video-o1: storyboards are detected as enabled when the storyboards dict is non-None and its 'storyboards' key is not 'disabled', and that combination with o1 raises. The o1 model path does not implement multi-shot/storyboard prompting.","triggerScenarios":"Passing a storyboard group (storyboards != 'disabled') together with model_name='kling-video-o1'; enabling the storyboard feature then switching models; programmatic runs including a storyboards dict.","commonSituations":"Reusing storyboard-enabled workflows after changing the model; the storyboard UI group surviving a model swap it was built for another model.","solutions":["Set storyboards to 'disabled' when using kling-video-o1","Switch to a storyboard-capable Kling model (v2 family) to keep multi-shot prompting","Express multi-scene intent inside the single o1 prompt instead of storyboard slots"],"exampleFix":"// before\nmodel_name = \"kling-video-o1\"; storyboards = {\"storyboards\": \"3 shots\", ...}\n\n// after\nmodel_name = \"kling-video-o1\"; storyboards = None  # or {\"storyboards\": \"disabled\"}","handlingStrategy":"validation","validationCode":"def storyboards_enabled(storyboards: dict | None) -> bool:\n    return storyboards is not None and storyboards.get(\"storyboards\") != \"disabled\"\n\ndef o1_storyboards_ok(model_name: str, storyboards: dict | None) -> bool:\n    return model_name != \"kling-video-o1\" or not storyboards_enabled(storyboards)\n\nassert o1_storyboards_ok(model_name, storyboards)","typeGuard":"def storyboard_combo_valid(model_name: str, storyboards: dict | None) -> bool:\n    if model_name != \"kling-video-o1\":\n        return True\n    return storyboards is None or storyboards.get(\"storyboards\") == \"disabled\"","tryCatchPattern":"try:\n    out = await kling_t2v_node(model_name=model, storyboards=storyboards, ...)\nexcept ValueError as e:\n    if \"does not support storyboards\" in str(e):\n        out = await kling_t2v_node(model_name=model, storyboards=None, ...)\n    else:\n        raise","preventionTips":["Set the storyboards group to 'disabled' before switching to o1","Move multi-scene direction into a single descriptive prompt for o1 runs"],"tags":["kling","model-constraints","storyboards","validation","pre-flight"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}