BerriAI/litellm · error · NotImplementedError

video create character is not supported for Vertex AI

Error message

video create character is not supported for Vertex AI

What it means

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.

Source

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

        headers: dict,
    ) -> tuple[str, dict]:
        """
        Video delete is not supported by Veo API.
        """
        raise NotImplementedError(
            "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."""

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Remove the character-creation step for vertex_ai and express character consistency via prompt description in video_generation
  2. Switch to a provider whose transformation implements create-character if the feature is mandatory

Example fix

# before
litellm.video_create_character(name="hero", video=vid, custom_llm_provider="vertex_ai")

# after
litellm.video_generation(
    prompt="the same hero character from previous shots ...",
    model="vertex_ai/veo-3.0-generate-001",
)
Defensive patterns

Strategy: validation

Validate before calling

CHARACTER_CAPABLE_PROVIDERS: set[str] = set()  # vertex_ai not included

if provider not in CHARACTER_CAPABLE_PROVIDERS:
    raise FeatureUnavailable(f"{provider} does not support video characters")

Type guard

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

Try / catch

try:
    litellm.video_create_character(name=n, video=v, custom_llm_provider=provider)
except NotImplementedError:
    if provider == "vertex_ai":
        # express the character through the prompt instead
        pass
    else:
        raise

Prevention

When it happens

Trigger: Calling litellm.video_create_character(...) (or equivalent route) with a vertex_ai/veo model and a source video.

Common situations: Porting character-consistency workflows (e.g. built for providers that support persistent characters) to Veo; UIs that expose character libraries for every provider.

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/780290a29fe07cc2. Report an issue: GitHub.