BerriAI/litellm · error · NotImplementedError

Video remix is not supported by Vertex AI Veo. Please use vi

Error message

Video remix is not supported by Vertex AI Veo. Please use video_generation() to create new videos.

What it means

Raised by VertexVeoConfig.transform_video_remix_request to state that the Veo API has no remix capability. LiteLLM defines remix on the video provider interface, but Vertex AI Veo deliberately rejects it with NotImplementedError and points you at video_generation(). It is a hard capability gap, not a transient failure.

Source

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

            video_bytes: Final = base64.b64decode(base64_encoded)
            return video_bytes

        except (KeyError, IndexError) as e:
            raise ValueError(f"Failed to extract video data: {e}")

    def transform_video_remix_request(
        self,
        video_id: str,
        prompt: str,
        api_base: str,
        litellm_params: GenericLiteLLMParams,
        headers: dict,
        extra_body: dict[str, object] | None = None,
    ) -> tuple[str, dict]:
        """
        Video remix is not supported by Veo API.
        """
        raise NotImplementedError(
            "Video remix is not supported by Vertex AI Veo. Please use video_generation() to create new videos."
        )

    def transform_video_remix_response(
        self,
        raw_response: httpx.Response,
        logging_obj: LiteLLMLoggingObj,
        custom_llm_provider: str | None = None,
    ) -> VideoObject:
        """Video remix is not supported."""
        raise NotImplementedError("Video remix is not supported by Vertex AI Veo.")

    def transform_video_list_request(
        self,
        api_base: str,
        litellm_params: GenericLiteLLMParams,
        headers: dict,
        after: str | None = None,

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Replace the remix call with litellm.video_generation() using a prompt that re-describes the source scene
  2. If you need true remixing, switch to a provider whose transformation implements transform_video_remix_request
  3. Gate the remix feature off in your app when the provider is vertex_ai

Example fix

# before
litellm.video_remix(video_id=vid, prompt="make it night", custom_llm_provider="vertex_ai")

# after
litellm.video_generation(prompt="same scene, now at night", model="vertex_ai/veo-3.0-generate-001")
Defensive patterns

Strategy: validation

Validate before calling

SUPPORTED_VIDEO_OPS = {
    "vertex_ai": {"generation", "status_retrieve", "edit"},
}

def supports(provider: str, op: str) -> bool:
    return op in SUPPORTED_VIDEO_OPS.get(provider, set())

if not supports("vertex_ai", "remix"):
    raise FeatureUnavailable("vertex_ai does not support video remix; use video_generation")

Type guard

def is_remix_capable(provider: str) -> bool:
    """vertex_ai/veo never supports remix"""
    return provider != "vertex_ai"

Try / catch

try:
    litellm.video_remix(video_id=vid, prompt=p, custom_llm_provider=provider)
except NotImplementedError:
    if provider == "vertex_ai":
        litellm.video_generation(prompt=remix_prompt_for(p), model=f"vertex_ai/veo-3.0-generate-001")
    else:
        raise

Prevention

When it happens

Trigger: Calling litellm.video_remix(...) (or the /v1/videos remix route) with a model string like 'vertex_ai/veo-3.0-generate-001'.

Common situations: Porting an OpenAI Sana-style or other-provider remix workflow to Vertex AI; agentic code that loops over providers calling the same video operations; UIs exposing a remix button for every configured 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/2d992681b36302bf. Report an issue: GitHub.