{"record":{"id":"780290a29fe07cc2","repo":"BerriAI/litellm","slug":"video-create-character-is-not-supported-for-vertex","errorCode":null,"errorMessage":"video create character is not supported for Vertex AI","messagePattern":"video create character is not supported for Vertex AI","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"litellm/llms/vertex_ai/videos/transformation.py","lineNumber":647,"sourceCode":"        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):\n        raise NotImplementedError(\"video get character is not supported for Vertex AI\")\n\n    def transform_video_get_character_response(self, raw_response, logging_obj):\n        raise NotImplementedError(\"video get character is not supported for Vertex AI\")\n\n    def get_video_edit_prefetch_params(\n        self,\n        video_id: str,\n        api_base: str,\n        litellm_params: GenericLiteLLMParams,\n        headers: dict,\n    ) -> tuple[str, dict]:\n        \"\"\"Return the fetchPredictOperation URL and body needed to retrieve the source video.\"\"\"","sourceCodeStart":629,"sourceCodeEnd":665,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/llms/vertex_ai/videos/transformation.py#L629-L665","documentation":"Raised by VertexVeoConfig.transform_video_create_character_request. Vertex AI Veo has no character creation API, so LiteLLM's provider-agnostic video character interface raises NotImplementedError for the request transformation on this provider.","triggerScenarios":"Calling litellm.video_create_character(...) (or equivalent route) with a vertex_ai/veo model and a source video.","commonSituations":"Porting character-consistency workflows (e.g. built for providers that support persistent characters) to Veo; UIs that expose character libraries for every provider.","solutions":["Remove the character-creation step for vertex_ai and express character consistency via prompt description in video_generation","Switch to a provider whose transformation implements create-character if the feature is mandatory"],"exampleFix":"# before\nlitellm.video_create_character(name=\"hero\", video=vid, custom_llm_provider=\"vertex_ai\")\n\n# after\nlitellm.video_generation(\n    prompt=\"the same hero character from previous shots ...\",\n    model=\"vertex_ai/veo-3.0-generate-001\",\n)","handlingStrategy":"validation","validationCode":"CHARACTER_CAPABLE_PROVIDERS: set[str] = set()  # vertex_ai not included\n\nif provider not in CHARACTER_CAPABLE_PROVIDERS:\n    raise FeatureUnavailable(f\"{provider} does not support video characters\")","typeGuard":"def provider_supports_characters(provider: str) -> bool:\n    return provider != \"vertex_ai\"","tryCatchPattern":"try:\n    litellm.video_create_character(name=n, video=v, custom_llm_provider=provider)\nexcept NotImplementedError:\n    if provider == \"vertex_ai\":\n        # express the character through the prompt instead\n        pass\n    else:\n        raise","preventionTips":["Check which providers implement transform_video_create_character_request before building character UIs","Store character descriptions in your own DB for providers without a character API"],"tags":["vertex-ai","veo","video-character","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"}