{"record":{"id":"2d992681b36302bf","repo":"BerriAI/litellm","slug":"video-remix-is-not-supported-by-vertex-ai-veo-ple","errorCode":null,"errorMessage":"Video remix is not supported by Vertex AI Veo. Please use video_generation() to create new videos.","messagePattern":"Video remix is not supported by Vertex AI Veo\\. Please use video_generation\\(\\) to create new videos\\.","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"litellm/llms/vertex_ai/videos/transformation.py","lineNumber":584,"sourceCode":"            video_bytes: Final = base64.b64decode(base64_encoded)\n            return video_bytes\n\n        except (KeyError, IndexError) as e:\n            raise ValueError(f\"Failed to extract video data: {e}\")\n\n    def transform_video_remix_request(\n        self,\n        video_id: str,\n        prompt: str,\n        api_base: str,\n        litellm_params: GenericLiteLLMParams,\n        headers: dict,\n        extra_body: dict[str, object] | None = None,\n    ) -> tuple[str, dict]:\n        \"\"\"\n        Video remix is not supported by Veo API.\n        \"\"\"\n        raise NotImplementedError(\n            \"Video remix is not supported by Vertex AI Veo. Please use video_generation() to create new videos.\"\n        )\n\n    def transform_video_remix_response(\n        self,\n        raw_response: httpx.Response,\n        logging_obj: LiteLLMLoggingObj,\n        custom_llm_provider: str | None = None,\n    ) -> VideoObject:\n        \"\"\"Video remix is not supported.\"\"\"\n        raise NotImplementedError(\"Video remix is not supported by Vertex AI Veo.\")\n\n    def transform_video_list_request(\n        self,\n        api_base: str,\n        litellm_params: GenericLiteLLMParams,\n        headers: dict,\n        after: str | None = None,","sourceCodeStart":566,"sourceCodeEnd":602,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/llms/vertex_ai/videos/transformation.py#L566-L602","documentation":"Raised by VertexVeoConfig.transform_video_remix_request to state that the Veo API has no remix capability. LiteLLM defines remix on the video provider interface, but Vertex AI Veo deliberately rejects it with NotImplementedError and points you at video_generation(). It is a hard capability gap, not a transient failure.","triggerScenarios":"Calling litellm.video_remix(...) (or the /v1/videos remix route) with a model string like 'vertex_ai/veo-3.0-generate-001'.","commonSituations":"Porting an OpenAI Sana-style or other-provider remix workflow to Vertex AI; agentic code that loops over providers calling the same video operations; UIs exposing a remix button for every configured provider.","solutions":["Replace the remix call with litellm.video_generation() using a prompt that re-describes the source scene","If you need true remixing, switch to a provider whose transformation implements transform_video_remix_request","Gate the remix feature off in your app when the provider is vertex_ai"],"exampleFix":"# before\nlitellm.video_remix(video_id=vid, prompt=\"make it night\", custom_llm_provider=\"vertex_ai\")\n\n# after\nlitellm.video_generation(prompt=\"same scene, now at night\", model=\"vertex_ai/veo-3.0-generate-001\")","handlingStrategy":"validation","validationCode":"SUPPORTED_VIDEO_OPS = {\n    \"vertex_ai\": {\"generation\", \"status_retrieve\", \"edit\"},\n}\n\ndef supports(provider: str, op: str) -> bool:\n    return op in SUPPORTED_VIDEO_OPS.get(provider, set())\n\nif not supports(\"vertex_ai\", \"remix\"):\n    raise FeatureUnavailable(\"vertex_ai does not support video remix; use video_generation\")","typeGuard":"def is_remix_capable(provider: str) -> bool:\n    \"\"\"vertex_ai/veo never supports remix\"\"\"\n    return provider != \"vertex_ai\"","tryCatchPattern":"try:\n    litellm.video_remix(video_id=vid, prompt=p, custom_llm_provider=provider)\nexcept NotImplementedError:\n    if provider == \"vertex_ai\":\n        litellm.video_generation(prompt=remix_prompt_for(p), model=f\"vertex_ai/veo-3.0-generate-001\")\n    else:\n        raise","preventionTips":["Maintain a per-provider video capability matrix and gate UI/actions on it","Never assume the full video CRUD/remix surface exists on every provider","Wrap provider-agnostic video loops with NotImplementedError handling"],"tags":["vertex-ai","veo","video-remix","notimplementederror","unsupported-operation"],"backgroundTag":"unsupported-operation","analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}