calesthio/OpenMontage · error · ValueError
Gemini Omni video_edit accepts at most 10 reference images
Error message
Gemini Omni video_edit accepts at most 10 reference images
What it means
Raised in _build_payload for gemini_video_edit when the number of reference images exceeds the cap read from spec['media_limits'].get('images', 10). The hardcoded message says 10, matching the default; if a spec declares a lower cap the check uses that number but the message text still says 10.
Source
Thrown at tools/video/atlas_video.py:292
if not refers or not any(item.get("type") in {"image", "video"} for item in refers):
raise ValueError("MiniMax H3 reference_to_video requires at least one image or video in refers")
payload["refers"] = refers
elif style == "gemini_video_clips":
clips = list(inputs.get("video_clips") or [])
if not clips and video:
clips = [{"url": video, "start": 0, "ends": min(int(inputs.get("duration", 10)), 10)}]
if len(clips) != 1:
raise ValueError("Gemini Omni developer reference_to_video requires exactly one video_clip")
payload["video_clips"] = clips
if images:
payload["images"] = images
elif style == "gemini_video_edit":
if not video:
raise ValueError("video_edit requires video_url, video_path, or reference_video_path")
payload["video"] = video
if images:
if len(images) > spec["media_limits"].get("images", 10):
raise ValueError("Gemini Omni video_edit accepts at most 10 reference images")
payload["images"] = images
extra = inputs.get("extra_params")
if isinstance(extra, dict):
payload.update(extra)
return payload
@staticmethod
def _upload_value(value: str | None, api_key: str) -> str | None:
if not value or _is_remote(value):
return value
return atlas_client.upload_media(value, api_key)
def _resolve_media(self, inputs: dict[str, Any], api_key: str) -> dict[str, Any]:
resolved = dict(inputs)
resolved["reference_images"] = [
*(resolved.get("reference_images") or []),
*(resolved.get("reference_image_urls") or []),View on GitHub (pinned to 95e1c3d0ab)
Solutions
- Trim reference_images to at most 10 (or the spec's media_limits['images'] if lower — verify via get_info())
- Prefer fewer, high-impact reference images for edit guidance
- If you need more references, use a reference_to_video model with higher media_limits
Example fix
# before
inputs = {'model':'google/gemini-omni-flash','operation':'video_edit','video_url':v,'reference_images':frames} # len(frames)=25
# after
inputs = {'model':'google/gemini-omni-flash','operation':'video_edit','video_url':v,'reference_images':frames[:10]} Defensive patterns
Strategy: validation
Validate before calling
cap = atlas_video.get_info()['model_catalog'][model]['media_limits'].get('images', 10)
imgs = inputs.get('reference_images') or []
if len(imgs) > cap:
inputs['reference_images'] = imgs[:cap] # keep the strongest refs first Type guard
def within_edit_image_cap(inputs: dict, cap: int = 10) -> bool:
return len(inputs.get('reference_images') or []) <= cap Try / catch
try:
result = atlas_video.run(inputs=inputs)
except ValueError as e:
if 'video_edit accepts at most' in str(e):
inputs['reference_images'] = inputs['reference_images'][:10]
result = atlas_video.run(inputs=inputs)
else:
raise Prevention
- Order reference images by importance before truncating
- Read the cap from media_limits, not from the message text (message hardcodes 10)
- Reserve heavy multi-reference work for reference_to_video models
When it happens
Trigger: Passing 11+ reference_images alongside the edit video on the Gemini Omni route; a spec defining media_limits['images'] below 10 while the caller sends 10 images (check fails, message misleadingly claims the cap is 10).
Common situations: Batch pipelines attaching every storyboard frame as an edit reference; porting a seedance multi-reference call (which allows far more) to the Gemini edit route.
Related errors
- video_edit requires video_url, video_path, or reference_vide
- This Gemini route requires at least one reference image
- {model} accepts at most {limits['images']} images, {limits['
- Gemini Omni developer reference_to_video requires exactly on
- Input video not found: {path}
AI-assisted analysis of calesthio/OpenMontage@95e1c3d0ab (2026-08-15).
Data as JSON: /api/errors/49e8de1f99927a10.
Report an issue: GitHub.