{"record":{"id":"1b37416eaff37553","repo":"BerriAI/litellm","slug":"video-delete-is-not-supported-by-vertex-ai-veo-vi","errorCode":null,"errorMessage":"Video delete is not supported by Vertex AI Veo. Videos are automatically cleaned up by Google.","messagePattern":"Video delete is not supported by Vertex AI Veo\\. Videos are automatically cleaned up by Google\\.","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"litellm/llms/vertex_ai/videos/transformation.py","lineNumber":634,"sourceCode":"        self,\n        raw_response: httpx.Response,\n        logging_obj: LiteLLMLoggingObj,\n        custom_llm_provider: str | None = None,\n    ) -> dict[str, str]:\n        \"\"\"Video list is not supported.\"\"\"\n        raise NotImplementedError(\"Video list is not supported by Vertex AI Veo.\")\n\n    def transform_video_delete_request(\n        self,\n        video_id: str,\n        api_base: str,\n        litellm_params: GenericLiteLLMParams,\n        headers: dict,\n    ) -> tuple[str, dict]:\n        \"\"\"\n        Video delete is not supported by Veo API.\n        \"\"\"\n        raise NotImplementedError(\n            \"Video delete is not supported by Vertex AI Veo. Videos are automatically cleaned up by Google.\"\n        )\n\n    def transform_video_delete_response(\n        self,\n        raw_response: httpx.Response,\n        logging_obj: LiteLLMLoggingObj,\n    ) -> VideoObject:\n        \"\"\"Video delete is not supported.\"\"\"\n        raise NotImplementedError(\"Video delete is not supported by Vertex AI Veo.\")\n\n    def transform_video_create_character_request(self, name, video: object, api_base, litellm_params, headers):\n        raise NotImplementedError(\"video create character is not supported for Vertex AI\")\n\n    def transform_video_create_character_response(self, raw_response, logging_obj):\n        raise NotImplementedError(\"video create character is not supported for Vertex AI\")\n\n    def transform_video_get_character_request(self, character_id, api_base, litellm_params, headers):","sourceCodeStart":616,"sourceCodeEnd":652,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/llms/vertex_ai/videos/transformation.py#L616-L652","documentation":"Raised by VertexVeoConfig.transform_video_delete_request. Vertex AI Veo has no delete API — Google cleans up generated videos automatically (videos not stored in your GCS bucket expire) — so LiteLLM rejects video_delete with NotImplementedError for this provider.","triggerScenarios":"Calling litellm.video_delete(video_id=..., custom_llm_provider=\"vertex_ai\") or DELETE /v1/videos/{id} on a Veo operation id.","commonSituations":"Generic cleanup scripts that delete every video after processing; porting OpenAI-style video retention workflows; retention/compliance pipelines assuming delete exists on all providers.","solutions":["Skip deletion for vertex_ai videos — Google reclaims them automatically","If videos were written to your own GCS bucket, delete the GCS objects with the Storage API instead","Use GCS bucket lifecycle rules for retention control over stored Veo outputs"],"exampleFix":"# before\nlitellm.video_delete(video_id=vid, custom_llm_provider=\"vertex_ai\")\n\n# after\nif provider == \"vertex_ai\":\n    pass  # Veo videos are auto-cleaned; delete GCS objects if you stored them\nelse:\n    litellm.video_delete(video_id=vid, custom_llm_provider=provider)","handlingStrategy":"validation","validationCode":"DELETE_CAPABLE_PROVIDERS = {\"openai\", \"runwayml\"}\n\ndef cleanup_video(provider: str, video_id: str) -> None:\n    if provider not in DELETE_CAPABLE_PROVIDERS:\n        return  # vertex_ai/veo: Google auto-cleans; nothing to do","typeGuard":"def provider_supports_video_delete(provider: str) -> bool:\n    return provider != \"vertex_ai\"","tryCatchPattern":"try:\n    litellm.video_delete(video_id=vid, custom_llm_provider=provider)\nexcept NotImplementedError:\n    if provider == \"vertex_ai\":\n        log.info(\"veo videos are auto-cleaned by Google; skipping delete\")\n    else:\n        raise","preventionTips":["Build cleanup scripts per provider, not one-size-fits-all delete loops","For Veo outputs stored in your own GCS bucket, manage retention with GCS lifecycle rules"],"tags":["vertex-ai","veo","video-delete","notimplementederror","unsupported-operation"],"backgroundTag":"unsupported-operation","analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}