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
- Rebuild the data URL completely: metadata + ',' + base64 payload
- Check for truncation upstream (column sizes, max body length) and re-fetch the original file
- 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
- Check len(data_url) and comma presence before sending large media payloads
- Avoid storing data URLs in size-limited columns/queues where truncation can occur
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
- Invalid data URL format: {data_url[:50]}...
- output_s3_uri is required for async invoke requests
- Unable to determine bedrock embedding provider for model: {m
- Input type '{input_type}' requires async_invoke route. Use m
- Unsupported image format: {image_format}. Supported formats:
AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15).
Data as JSON: /api/errors/9e49c21fcaf7322a.
Report an issue: GitHub.