{"record":{"id":"bd674b2633346c99","repo":"calesthio/OpenMontage","slug":"unsupported-atlas-video-model-id-model-r-use-ge","errorCode":null,"errorMessage":"Unsupported Atlas video model id {model!r}. Use get_info()['model_catalog'] for live routes.","messagePattern":"Unsupported Atlas video model id (.+?)\\. Use get_info\\(\\)\\['model_catalog'\\] for live routes\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"tools/video/atlas_video.py","lineNumber":189,"sourceCode":"    def estimate_cost(self, inputs: dict[str, Any]) -> float:\n        model = self._resolve_model(\n            str(inputs.get(\"model\", _DEFAULT_MODEL)),\n            str(inputs.get(\"operation\", \"text_to_video\")),\n            str(inputs[\"model_variant\"]) if inputs.get(\"model_variant\") else None,\n        )\n        rate = VIDEO_MODELS.get(model, {}).get(\"cost_per_second\", _DEFAULT_COST_PER_SECOND)\n        duration = int(inputs.get(\"duration\", 10))\n        return round(rate * max(duration, 0), 4)\n\n    def estimate_runtime(self, inputs: dict[str, Any]) -> float:\n        return 180.0\n\n    def is_operation_available(self, operation: str) -> bool:\n        return operation in _OPERATIONS\n\n    def _resolve_model(self, model: str, operation: str, variant: str | None = None) -> str:\n        if model not in VIDEO_MODELS:\n            raise ValueError(\n                f\"Unsupported Atlas video model id {model!r}. Use get_info()['model_catalog'] for live routes.\"\n            )\n        spec = VIDEO_MODELS[model]\n        variant = variant or str(spec.get(\"variant\", \"standard\"))\n        route_key = operation if variant == \"standard\" else f\"{operation}_{variant}\"\n        resolved = VIDEO_ROUTES.get(spec[\"family\"], {}).get(route_key)\n        if not resolved:\n            raise ValueError(\n                f\"{spec['family']} does not expose operation={operation!r}, variant={variant!r} on Atlas Cloud\"\n            )\n        return resolved\n\n    @staticmethod\n    def _validate_choice(name: str, value: Any, allowed: tuple[Any, ...] | None) -> Any:\n        if allowed and value not in allowed:\n            raise ValueError(f\"{name}={value!r} is not supported; choose one of {list(allowed)}\")\n        return value\n","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/calesthio/OpenMontage/blob/95e1c3d0ab93482159818560f6a8c8e866b9139f/tools/video/atlas_video.py#L171-L207","documentation":"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.","triggerScenarios":"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.","commonSituations":"Atlas Cloud adds a model and the pinned tool lags; teams standardize on shorthand aliases the tool doesn't define.","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"],"exampleFix":"# before\ninputs = {\"model\": \"seedance\", \"prompt\": \"...\"}\n# after\ninfo = tool.get_info()\ninputs = {\"model\": \"seedance-2-5-flash\", \"prompt\": \"...\"}  # exact id from model_catalog","handlingStrategy":"validation","validationCode":"catalog = tool.get_info()[\"model_catalog\"]\nmodel = inputs.get(\"model\")\nif model not in {m[\"id\"] for m in catalog}:\n    raise ValueError(f\"unknown model {model!r}; valid: {sorted(m['id'] for m in catalog)}\")","typeGuard":"def is_known_atlas_model(tool, model: Any) -> bool:\n    return isinstance(model, str) and model in {\n        m[\"id\"] for m in tool.get_info()[\"model_catalog\"]\n    }","tryCatchPattern":null,"preventionTips":["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"],"tags":["atlas","video-generation","model-id","config"],"backgroundTag":null,"analyzedSha":"95e1c3d0ab93482159818560f6a8c8e866b9139f","analyzedAt":"2026-08-15T06:31:20.014Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}