calesthio/OpenMontage · error · ValueError
Unsupported Atlas video model id {model!r}. Use get_info()['
Error message
Unsupported Atlas video model id {model!r}. Use get_info()['model_catalog'] for live routes. What it means
Raised by AtlasVideo._resolve_model when the requested model id is not a key in the module's VIDEO_MODELS registry. The tool only accepts the Atlas Cloud model ids it knows routes for; anything else — new ids, aliases, other providers' ids — is rejected before route resolution. The message points at get_info()['model_catalog'] as the source of truth.
Source
Thrown at tools/video/atlas_video.py:189
def estimate_cost(self, inputs: dict[str, Any]) -> float:
model = self._resolve_model(
str(inputs.get("model", _DEFAULT_MODEL)),
str(inputs.get("operation", "text_to_video")),
str(inputs["model_variant"]) if inputs.get("model_variant") else None,
)
rate = VIDEO_MODELS.get(model, {}).get("cost_per_second", _DEFAULT_COST_PER_SECOND)
duration = int(inputs.get("duration", 10))
return round(rate * max(duration, 0), 4)
def estimate_runtime(self, inputs: dict[str, Any]) -> float:
return 180.0
def is_operation_available(self, operation: str) -> bool:
return operation in _OPERATIONS
def _resolve_model(self, model: str, operation: str, variant: str | None = None) -> str:
if model not in VIDEO_MODELS:
raise ValueError(
f"Unsupported Atlas video model id {model!r}. Use get_info()['model_catalog'] for live routes."
)
spec = VIDEO_MODELS[model]
variant = variant or str(spec.get("variant", "standard"))
route_key = operation if variant == "standard" else f"{operation}_{variant}"
resolved = VIDEO_ROUTES.get(spec["family"], {}).get(route_key)
if not resolved:
raise ValueError(
f"{spec['family']} does not expose operation={operation!r}, variant={variant!r} on Atlas Cloud"
)
return resolved
@staticmethod
def _validate_choice(name: str, value: Any, allowed: tuple[Any, ...] | None) -> Any:
if allowed and value not in allowed:
raise ValueError(f"{name}={value!r} is not supported; choose one of {list(allowed)}")
return value
View on GitHub (pinned to 95e1c3d0ab)
Solutions
- Call get_info() and copy an exact id from model_catalog
- Upgrade OpenMontage so VIDEO_MODELS includes the newest Atlas models
- If the model is routed on Atlas but missing locally, add its spec to VIDEO_MODELS with its family routes
Example fix
# before
inputs = {"model": "seedance", "prompt": "..."}
# after
info = tool.get_info()
inputs = {"model": "seedance-2-5-flash", "prompt": "..."} # exact id from model_catalog Defensive patterns
Strategy: validation
Validate before calling
catalog = tool.get_info()["model_catalog"]
model = inputs.get("model")
if model not in {m["id"] for m in catalog}:
raise ValueError(f"unknown model {model!r}; valid: {sorted(m['id'] for m in catalog)}") Type guard
def is_known_atlas_model(tool, model: Any) -> bool:
return isinstance(model, str) and model in {
m["id"] for m in tool.get_info()["model_catalog"]
} Prevention
- Resolve model ids from get_info()['model_catalog'] at runtime
- Upgrade OpenMontage when adopting newly announced Atlas models
- Fail fast on unknown ids in config validation instead of at call time
When it happens
Trigger: Passing a model id copied from Atlas docs that the installed tool version predates; using a family name ('seedance') instead of the full id; typos and case mismatches; ids from fal.run or other gateways.
Common situations: Atlas Cloud adds a model and the pinned tool lags; teams standardize on shorthand aliases the tool doesn't define.
Related errors
- Unsupported MiniMax image model '{model}'.
- Cannot infer Atlas reference media type from {entry!r}; pass
- model must be a non-empty Ark Model/Endpoint ID
- Playbook not found: {path}
- Prediction {prediction_id} did not finish within {timeout:.0
AI-assisted analysis of calesthio/OpenMontage@95e1c3d0ab (2026-08-15).
Data as JSON: /api/errors/bd674b2633346c99.
Report an issue: GitHub.