{"record":{"id":"af9882f13701ba78","repo":"Comfy-Org/ComfyUI","slug":"runway-task-succeeded-but-no-video-data-found-in-r","errorCode":null,"errorMessage":"Runway task succeeded but no video data found in response.","messagePattern":"Runway task succeeded but no video data found in response\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"comfy_api_nodes/nodes_runway.py","lineNumber":136,"sourceCode":"        progress_extractor=lambda r: r.progress * 100 if r.progress is not None else None,\n    )\n\n\nasync def generate_video(\n    cls: type[IO.ComfyNode],\n    request: RunwayImageToVideoRequest,\n    estimated_duration: int | None = None,\n) -> InputImpl.VideoFromFile:\n    initial_response = await sync_op(\n        cls,\n        endpoint=ApiEndpoint(path=PATH_IMAGE_TO_VIDEO, method=\"POST\"),\n        response_model=RunwayImageToVideoResponse,\n        data=request,\n    )\n\n    final_response = await get_response(cls, initial_response.id, estimated_duration)\n    if not final_response.output:\n        raise ValueError(\"Runway task succeeded but no video data found in response.\")\n\n    video_url = get_video_url_from_task_status(final_response)\n    return await download_url_to_video_output(video_url)\n\n\nclass RunwayImageToVideoNodeGen3a(IO.ComfyNode):\n\n    @classmethod\n    def define_schema(cls):\n        return IO.Schema(\n            node_id=\"RunwayImageToVideoNodeGen3a\",\n            display_name=\"Runway Image to Video (Gen3a Turbo)\",\n            category=\"partner/video/Runway\",\n            description=\"Generate a video from a single starting frame using Gen3a Turbo model. \"\n            \"Before diving in, review these best practices to ensure that \"\n            \"your input selections will set your generation up for success: \"\n            \"https://help.runwayml.com/hc/en-us/articles/33927968552339-Creating-with-Act-One-on-Gen-3-Alpha-and-Turbo.\",\n            inputs=[","sourceCodeStart":118,"sourceCodeEnd":154,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy_api_nodes/nodes_runway.py#L118-L154","documentation":"Raised after a Runway image-to-video task reaches a terminal state but the polled response contains an empty `output` field. The submission and polling both succeeded (get_response returned), so this indicates a malformed or unexpected server response rather than a request failure. The node refuses to proceed because there is no video URL to download.","triggerScenarios":"Calling RunwayImageToVideo via generate_video(); initial POST succeeds, polling completes, but final_response.output is falsy (empty list, None, or missing key in the JSON body).","commonSituations":"Runway API behavior changes or partial responses; task marked succeeded server-side while output artifacts were not attached; rare transient server-side serialization issues.","solutions":["Retry the generation — transient server-side output omission usually resolves on rerun","Check the Runway service status / API changelog for response-schema changes","Inspect the raw task JSON via the Runway dashboard for the same task id to confirm whether output was produced"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"for attempt in range(2):\n    try:\n        return await generate_video(cls, request)\n    except ValueError as e:\n        if \"no video data found\" in str(e) and attempt == 0:\n            continue\n        raise","preventionTips":["Treat empty-output successes as transient; retry once before investigating","Log the task id from the initial response for dashboard cross-checking","Pin API node versions when Runway ships schema changes"],"tags":["runway","api-response","polling","video-generation"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}