{"record":{"id":"42f7c204364e5700","repo":"calesthio/OpenMontage","slug":"video-omni-requires-video-urls-local-video-paths","errorCode":null,"errorMessage":"Video Omni requires video URLs; local video paths cannot be silently uploaded.","messagePattern":"Video Omni requires video URLs; local video paths cannot be silently uploaded\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"tools/video/kling_official_video.py","lineNumber":557,"sourceCode":"            item_type=\"first_frame\",\n        )\n        add_image(\n            normalize_image_input(inputs.get(\"reference_tail_image_url\"), inputs.get(\"reference_tail_image_path\")),\n            kind=\"reference_tail_image\",\n            item_type=\"end_frame\",\n        )\n        for url in inputs.get(\"reference_image_urls\") or []:\n            add_image(normalize_image_input(url=url), kind=\"reference_image_urls\")\n        for path in inputs.get(\"reference_image_paths\") or []:\n            add_image(normalize_image_input(path=path), kind=\"reference_image_paths\")\n        return image_list, references_used\n\n    def _normalize_omni_video_list(\n        self,\n        inputs: dict[str, Any],\n    ) -> tuple[list[dict[str, Any]], list[dict[str, Any]]]:\n        if inputs.get(\"reference_video_path\") or inputs.get(\"video_paths\"):\n            raise ValueError(\"Video Omni requires video URLs; local video paths cannot be silently uploaded.\")\n\n        video_list: list[dict[str, Any]] = []\n        references_used: list[dict[str, Any]] = []\n\n        def add_video(item: dict[str, Any], source_type: str) -> None:\n            if item.get(\"video_path\"):\n                raise ValueError(\"Video Omni requires video URLs; local video paths cannot be silently uploaded.\")\n            video_url = item.get(\"video_url\") or item.get(\"url\")\n            if not video_url:\n                raise ValueError(\"video_list items must include video_url\")\n            record = {\"video_url\": video_url}\n            if item.get(\"refer_type\"):\n                record[\"refer_type\"] = item[\"refer_type\"]\n            if \"keep_original_sound\" in item:\n                value = item[\"keep_original_sound\"]\n                record[\"keep_original_sound\"] = \"yes\" if value is True else \"no\" if value is False else value\n            video_list.append(record)\n            references_used.append(","sourceCodeStart":539,"sourceCodeEnd":575,"githubUrl":"https://github.com/calesthio/OpenMontage/blob/95e1c3d0ab93482159818560f6a8c8e866b9139f/tools/video/kling_official_video.py#L539-L575","documentation":"Error \"Video Omni requires video URLs; local video paths cannot be silently uploaded.\" thrown in calesthio/OpenMontage.","triggerScenarios":"Kling Omni video is given local video file paths; the API requires hosted video URLs and local files are not auto-uploaded.","commonSituations":"See trigger scenarios.","solutions":["Pass video URLs (public HTTPS) in video_list; the Omni endpoint does not accept local video paths.","Upload local videos to a public/signed URL first, then reference that URL."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"95e1c3d0ab93482159818560f6a8c8e866b9139f","analyzedAt":"2026-08-15T06:31:20.014Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}