{"record":{"id":"4a9537a8af7a4a16","repo":"BerriAI/litellm","slug":"video-extension-is-not-supported-for-vertex-ai","errorCode":null,"errorMessage":"video extension is not supported for Vertex AI","messagePattern":"video extension is not supported for Vertex AI","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"litellm/llms/vertex_ai/videos/transformation.py","lineNumber":780,"sourceCode":"            id=video_id,\n            object=\"video\",\n            status=\"processing\",\n            model=model,\n        )\n        video_obj.usage = _build_vertex_video_usage_from_request_data(request_data)\n        return video_obj\n\n    def transform_video_extension_request(\n        self,\n        prompt,\n        video_id,\n        seconds,\n        api_base,\n        litellm_params,\n        headers,\n        extra_body=None,\n    ):\n        raise NotImplementedError(\"video extension is not supported for Vertex AI\")\n\n    def transform_video_extension_response(self, raw_response, logging_obj, custom_llm_provider=None):\n        raise NotImplementedError(\"video extension is not supported for Vertex AI\")\n\n    def get_error_class(self, error_message: str, status_code: int, headers: dict | httpx.Headers) -> BaseLLMException:\n        from litellm.llms.vertex_ai.common_utils import VertexAIError\n\n        return VertexAIError(\n            status_code=status_code,\n            message=error_message,\n            headers=headers,\n        )\n","sourceCodeStart":762,"sourceCodeEnd":793,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/llms/vertex_ai/videos/transformation.py#L762-L793","documentation":"Raised by VertexVeoConfig.transform_video_extension_request. Vertex AI Veo has no video-extension API in LiteLLM's provider config, so requesting an extension of an existing video raises NotImplementedError for this provider.","triggerScenarios":"Calling litellm.video_extension(video_id=..., seconds=..., custom_llm_provider=\"vertex_ai\") or the equivalent pass-through route.","commonSituations":"Porting extend-clip workflows from providers that support extension; generic video pipelines that call every operation for every provider.","solutions":["Generate the longer clip directly with video_generation using duration_seconds instead of extending","Use a provider that implements transform_video_extension_request if extension is a hard requirement"],"exampleFix":"# before\nlitellm.video_extension(video_id=vid, seconds=8, custom_llm_provider=\"vertex_ai\")\n\n# after\nlitellm.video_generation(prompt=same_prompt, model=\"vertex_ai/veo-3.0-generate-001\", duration_seconds=8)","handlingStrategy":"validation","validationCode":"EXTENSION_CAPABLE_PROVIDERS: set[str] = set()  # vertex_ai not included\n\nif provider not in EXTENSION_CAPABLE_PROVIDERS:\n    raise FeatureUnavailable(f\"{provider} does not support video extension\")","typeGuard":"def provider_supports_extension(provider: str) -> bool:\n    return provider != \"vertex_ai\"","tryCatchPattern":"try:\n    litellm.video_extension(video_id=vid, seconds=8, custom_llm_provider=provider)\nexcept NotImplementedError:\n    if provider == \"vertex_ai\":\n        litellm.video_generation(prompt=orig_prompt, model=\"vertex_ai/veo-3.0-generate-001\", duration_seconds=8)\n    else:\n        raise","preventionTips":["Gate extension actions behind a per-provider capability check","For Veo, request the full duration at generation time instead of extending later"],"tags":["vertex-ai","veo","video-extension","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"}