BerriAI/litellm · error · NotImplementedError

video get character is not supported for Vertex AI

Error message

video get character is not supported for Vertex AI

What it means

Raised by VertexVeoConfig.transform_video_get_character_request. Vertex AI Veo has no character retrieval API, so the provider-agnostic get-character interface raises NotImplementedError on the request transformation for this provider.

Source

Thrown at litellm/llms/vertex_ai/videos/transformation.py:653

            "Video delete is not supported by Vertex AI Veo. Videos are automatically cleaned up by Google."
        )

    def transform_video_delete_response(
        self,
        raw_response: httpx.Response,
        logging_obj: LiteLLMLoggingObj,
    ) -> VideoObject:
        """Video delete is not supported."""
        raise NotImplementedError("Video delete is not supported by Vertex AI Veo.")

    def transform_video_create_character_request(self, name, video: object, api_base, litellm_params, headers):
        raise NotImplementedError("video create character is not supported for Vertex AI")

    def transform_video_create_character_response(self, raw_response, logging_obj):
        raise NotImplementedError("video create character is not supported for Vertex AI")

    def transform_video_get_character_request(self, character_id, api_base, litellm_params, headers):
        raise NotImplementedError("video get character is not supported for Vertex AI")

    def transform_video_get_character_response(self, raw_response, logging_obj):
        raise NotImplementedError("video get character is not supported for Vertex AI")

    def get_video_edit_prefetch_params(
        self,
        video_id: str,
        api_base: str,
        litellm_params: GenericLiteLLMParams,
        headers: dict,
    ) -> tuple[str, dict]:
        """Return the fetchPredictOperation URL and body needed to retrieve the source video."""
        return self.transform_video_status_retrieve_request(
            video_id=video_id,
            api_base=api_base,
            litellm_params=litellm_params,
            headers=headers,
        )

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Drop the character lookup step for vertex_ai and track characters in your own data store (prompts/descriptions)
  2. Use a provider that implements get-character if the feature is required

Example fix

# before
litellm.video_get_character(character_id=cid, custom_llm_provider="vertex_ai")

# after
character = my_character_store.get(cid)  # vertex_ai has no character API
Defensive patterns

Strategy: validation

Validate before calling

if provider == "vertex_ai":
    character = local_character_store.get(character_id)  # no provider API exists
else:
    character = litellm.video_get_character(character_id=character_id, custom_llm_provider=provider)

Type guard

def provider_supports_get_character(provider: str) -> bool:
    return provider != "vertex_ai"

Try / catch

try:
    litellm.video_get_character(character_id=cid, custom_llm_provider=provider)
except NotImplementedError:
    if provider == "vertex_ai":
        return local_character_store.get(cid)
    raise

Prevention

When it happens

Trigger: Calling litellm.video_get_character(character_id=..., custom_llm_provider="vertex_ai").

Common situations: Porting character-management dashboards to Vertex AI; code that resolves character IDs before generating; provider-agnostic pipelines assuming uniform character APIs.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18). Data as JSON: /api/errors/1cb27387279a46c0. Report an issue: GitHub.