{"record":{"id":"3cd6b127428e2773","repo":"ATH-MaaS/Pixelle-Video","slug":"first-clip-path-is-only-supported-for-dashscope-wa","errorCode":null,"errorMessage":"first_clip_path is only supported for DashScope wan2.7 models, not provider={provider}.","messagePattern":"first_clip_path is only supported for DashScope wan2\\.7 models, not provider=(.+?)\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"pixelle_video/services/api_media.py","lineNumber":538,"sourceCode":"        height: Optional[int],\n        **params,\n    ) -> MediaResult:\n        from pixelle_video.services.api_services.video_client import VideoClient\n\n        first_clip_path = params.get(\"first_clip_path\") or params.get(\"first_video_path\")\n        reference_image_path = params.get(\"reference_image_path\")\n        reference_image_paths = params.get(\"reference_image_paths\") or []\n        reference_video_paths = params.get(\"reference_video_paths\") or []\n        has_reference_inputs = bool(reference_image_path or reference_image_paths or reference_video_paths)\n        capabilities = self._video_capabilities(provider, model)\n        supports_text_to_video = \"text_to_video\" in set(capabilities.get(\"adapter_ability_types\") or [])\n        if not image_path and not first_clip_path and not has_reference_inputs and not supports_text_to_video:\n            raise ValueError(\n                \"API video models require image_path, first_clip_path, or reference media inputs. \"\n                \"Use an image template first or pass input image/video/reference media when calling media generation.\"\n            )\n        if first_clip_path and not image_path and provider != \"dashscope\":\n            raise ValueError(f\"first_clip_path is only supported for DashScope wan2.7 models, not provider={provider}.\")\n\n        client = self._create_video_client()\n        save_path = output_path or os.path.join(self._save_dir(None, \"api_videos\"), \"video.mp4\")\n        ratio = params.get(\"video_ratio\") or params.get(\"ratio\") or self._ratio(width, height)\n        requested_duration = int(duration or params.get(\"duration\") or 5)\n        safe_duration = self._video_duration(provider, model, requested_duration)\n        resolution = params.get(\"resolution\") or self._video_resolution(provider, width, height)\n        video_options = self._video_options(provider, model, params, resolution)\n\n        prompt_to_use = prompt\n        max_safety_retries = int(params.get(\"prompt_safety_retries\", 1))\n        for attempt in range(max_safety_retries + 1):\n            try:\n                logger.info(\n                    f\"Generating video via API provider={provider}, model={model}\"\n                    + (f\" (safety retry {attempt})\" if attempt else \"\")\n                )\n                await asyncio.to_thread(","sourceCodeStart":520,"sourceCodeEnd":556,"githubUrl":"https://github.com/ATH-MaaS/Pixelle-Video/blob/848b054e4fae40dabc62ec58e960b573e83793ac/pixelle_video/services/api_media.py#L520-L556","documentation":"The API video media service only supports passing a starting clip (first_clip_path) for DashScope wan2.7-family video models. When a first clip is supplied without an image path and the resolved provider is anything other than 'dashscope', _generate_video raises this ValueError before any client call is made.","triggerScenarios":"Calling _generate_video (via __call__) with first_clip_path set, image_path unset, and provider != 'dashscope' (e.g. an OpenAI/GPT or ARK/Seedream video provider).","commonSituations":"Reusing an image-to-video or video-extension workflow across providers; migrating a pipeline that worked with wan2.7 to another provider; user uploads a reference video but the selected model/provider cannot consume it.","solutions":["Set provider to 'dashscope' with a wan2.7 video model when first_clip_path is used","Remove first_clip_path and instead pass image_path or reference media the target provider supports","Convert the starting clip into an image frame and pass it as image_path","Branch your pipeline on provider so video-continuation requests only route to DashScope"],"exampleFix":"// before\nawait generator(first_clip_path=\"intro.mp4\", provider=\"openai\", model=\"sora-2\")\n// after\nawait generator(first_clip_path=\"intro.mp4\", provider=\"dashscope\", model=\"wan2.7-t2v\")","handlingStrategy":"validation","validationCode":"if first_clip_path and not image_path:\n    provider = resolve_provider(model)\n    if provider != \"dashscope\":\n        raise ValueError(f\"first_clip_path requires dashscope provider, got {provider}\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Route video-continuation requests only to DashScope wan2.7 models","Validate provider/model/inputs compatibility before calling the API","Document provider capability matrix in your pipeline config"],"tags":["validation","provider-support","video-generation"],"backgroundTag":"unsupported-parameter-combination","analyzedSha":"848b054e4fae40dabc62ec58e960b573e83793ac","analyzedAt":"2026-08-30T03:24:41.468Z","schemaVersion":2},"datasetVersion":"2026-08-30T08:17:16.595Z"}