{"record":{"id":"5119061aa2c8f986","repo":"Comfy-Org/ComfyUI","slug":"looping-is-only-available-with-5s-duration-on-ray","errorCode":null,"errorMessage":"Looping is only available with 5s duration on Ray 3.2.","messagePattern":"Looping is only available with 5s duration on Ray 3\\.2\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"comfy_api_nodes/nodes_luma.py","lineNumber":1053,"sourceCode":"                _ray32_seed_input(),\n            ],\n            outputs=[IO.Video.Output(), IO.String.Output(display_name=\"generation_id\")],\n            hidden=[\n                IO.Hidden.auth_token_comfy_org,\n                IO.Hidden.api_key_comfy_org,\n                IO.Hidden.unique_id,\n            ],\n            is_api_node=True,\n            price_badge=_BADGE_RAY32_VIDEO,\n        )\n\n    @classmethod\n    async def execute(\n        cls, prompt: str, aspect_ratio: str, resolution: str, duration: str, loop: bool, seed: int\n    ) -> IO.NodeOutput:\n        validate_string(prompt, strip_whitespace=True, min_length=1, max_length=6000)\n        if loop and duration == \"10s\":\n            raise ValueError(\"Looping is only available with 5s duration on Ray 3.2.\")\n        request = Luma2GenerationRequest(\n            prompt=prompt,\n            model=\"ray-3.2\",\n            type=\"video\",\n            aspect_ratio=aspect_ratio,\n            video=Luma2VideoOptions(resolution=resolution, duration=duration, loop=loop or None),\n        )\n        return await _ray32_generate(cls, request)\n\n\nclass LumaRay32ImageToVideoNode(IO.ComfyNode):\n    @classmethod\n    def define_schema(cls) -> IO.Schema:\n        return IO.Schema(\n            node_id=\"LumaRay32ImageToVideoNode\",\n            display_name=\"Luma Ray 3.2 Image to Video\",\n            category=\"partner/video/Luma\",\n            description=\"Generate a video from a start and/or end frame using Luma's Ray 3.2 model. \"","sourceCodeStart":1035,"sourceCodeEnd":1071,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy_api_nodes/nodes_luma.py#L1035-L1071","documentation":"Raised by the Luma Ray 3.2 text-to-video node (comfy_api_nodes/nodes_luma.py:1053) when loop=True is combined with duration='10s'. Ray 3.2 only produces seamless loops for the 5-second variant; the node enforces this before submitting the generation.","triggerScenarios":"Executing LumaRay32TextToVideoNode (or sibling video node) with the loop toggle enabled and the duration combo set to '10s'.","commonSituations":"User enables loop then raises duration to 10s for longer output; saved workflow restored with both settings; widget defaults changed after an update.","solutions":["Set duration to '5s' and keep loop enabled.","Or disable loop if you need the 10s duration.","If your workflow has these as exposed widget inputs, fix the saved values so the queue doesn't keep failing."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if loop and duration == \"10s\":\n    duration = \"5s\"  # or: loop = False","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat loop and duration as linked settings on Ray 3.2: loop ⇒ '5s'.","After changing duration, re-check the loop toggle before queueing."],"tags":["luma","ray-3-2","loop","duration","input-validation","comfy-api-nodes"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}