BerriAI/litellm · error · ValueError

Invalid data URL format (missing comma): {data_url[:50]}...

Error message

Invalid data URL format (missing comma): {data_url[:50]}...

What it means

Data-URL parsing fails because no comma is present to separate metadata from the payload — valid form is data:image/jpeg;base64,<data>. The string starts with 'data:' but the ',' delimiter is missing, so split(“,”,1) would fail.

Source

Thrown at litellm/llms/bedrock/embed/amazon_nova_transformation.py:71

    def _parse_data_url(self, data_url: str) -> tuple:
        """
        Parse a data URL to extract the media type and base64 data.

        Args:
            data_url: Data URL in format: data:image/jpeg;base64,/9j/4AAQ...

        Returns:
            tuple: (media_type, base64_data)
                media_type: e.g., "image/jpeg", "video/mp4", "audio/mpeg"
                base64_data: The base64-encoded data without the prefix
        """
        if not data_url.startswith("data:"):
            raise ValueError(f"Invalid data URL format: {data_url[:50]}...")

        # Split by comma to separate metadata from data
        # Format: data:image/jpeg;base64,<base64_data>
        if "," not in data_url:
            raise ValueError(f"Invalid data URL format (missing comma): {data_url[:50]}...")

        metadata, base64_data = data_url.split(",", 1)

        # Extract media type from metadata
        # Remove 'data:' prefix and ';base64' suffix
        metadata = metadata[5:]  # Remove 'data:'

        if ";" in metadata:
            media_type = metadata.split(";")[0]
        else:
            media_type = metadata

        return media_type, base64_data

    def _transform_request(
        self,
        input: str,
        inference_params: dict,

View on GitHub (pinned to 6c2dcb801b)

Solutions

  1. Rebuild the data URL completely: metadata + ',' + base64 payload
  2. Check for truncation upstream (column sizes, max body length) and re-fetch the original file
  3. Log len(data_url) before the call to catch empty/truncated payloads early

Example fix

# before
f"data:{mime};base64"  # payload omitted

# after
f"data:{mime};base64,{b64_payload}"
Defensive patterns

Strategy: validation

Validate before calling

def parse_data_url(u: str) -> tuple[str, str]:
    if not u.startswith("data:") or "," not in u:
        raise ValueError(f"Invalid data URL format: {u[:50]}...")
    meta, payload = u.split(",", 1)
    return meta[5:].split(";")[0], payload

Type guard

def is_complete_data_url(v) -> bool:
    return isinstance(v, str) and v.startswith("data:") and "," in v and v.split(",", 1)[1] != ""

Prevention

When it happens

Trigger: Passing 'data:image/jpeg;base64' (metadata only), truncated strings cut at the comma, or a data URL where the payload was never appended.

Common situations: String truncation from size limits (logs, DB columns, message queues), templating bugs that drop the encoded payload, or manual construction that forgets the data section.

Related errors


AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15). Data as JSON: /api/errors/9e49c21fcaf7322a. Report an issue: GitHub.