{"record":{"id":"d48bc45ad1ae105a","repo":"unslothai/unsloth","slug":"repo-id-is-not-a-supported-text-to-video-model","errorCode":null,"errorMessage":"'{repo_id}' is not a supported text-to-video model. Supported families: {', '.join(supported_video_family_names())}. If this is a variant of one of them, pass family_override with that family name.","messagePattern":"'(.+?)' is not a supported text-to-video model\\. Supported families: (.+?)\\. If this is a variant of one of them, pass family_override with that family name\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"studio/backend/core/inference/video.py","lineNumber":1076,"sourceCode":"        gguf_filename: Optional[str] = None,\n        base_repo: Optional[str] = None,\n        family_override: Optional[str] = None,\n        model_kind: Optional[str] = None,\n        transformer_quant: Optional[str] = None,\n        text_encoder_quant: Optional[str] = None,\n        h3_task: Optional[str] = None,\n    ) -> VideoFamily:\n        \"\"\"Cheap, network-free validation shared by the route and the load path.\"\"\"\n        kind = resolve_video_model_kind(gguf_filename, model_kind)\n        # A -GGUF repo picked without a quant filename resolves to pipeline kind and would only fail in from_pretrained after eviction.\n        if kind == \"pipeline\" and repo_id.strip().lower().rstrip(\"/\").endswith(\"-gguf\"):\n            raise ValueError(\n                f\"'{repo_id}' is a GGUF repo: pick one of its .gguf files \"\n                \"(gguf_filename) instead of loading it as a diffusers pipeline.\"\n            )\n        fam = _detect_load_family(repo_id, gguf_filename, family_override)\n        if fam is None:\n            raise ValueError(\n                f\"'{repo_id}' is not a supported text-to-video model. Supported families: \"\n                f\"{', '.join(supported_video_family_names())}. If this is a variant of one \"\n                f\"of them, pass family_override with that family name.\"\n            )\n        # ── modular-workflow refusals, before anything heavier.\n        # Deliberately the FIRST thing after the family resolves: everything below reaches into\n        # diffusers (assert_pipeline_class_available, the transformer_class probe), so a refusal\n        # placed after them would be unreachable on any install whose diffusers cannot even be\n        # imported -- and these two are exactly the picks that cost the most to discover late.\n        if fam.modular_workflow and kind == \"single_file\":\n            # A modular workflow has no single-file assembly: its components each load through\n            # their own from_pretrained from the modular index, and nothing consumes a lone\n            # .safetensors DiT. Today that only surfaces inside the loader, i.e. after ~98.7 GB\n            # has downloaded AND after the resident pipeline was torn down to make room for it.\n            gguf_hint = (\n                f\", or a .gguf checkpoint from '{fam.gguf_repo}' for a quantized single-file load\"\n                if fam.gguf_repo\n                else \"\"","sourceCodeStart":1058,"sourceCodeEnd":1094,"githubUrl":"https://github.com/unslothai/unsloth/blob/203007d19051dcd2ae33876786d117c99f6b0368/studio/backend/core/inference/video.py#L1058-L1094","documentation":"Family detection (_detect_load_family over repo id, GGUF arch, and family_override) returned None: the requested repo is not recognized as any supported text-to-video family. The message lists supported family names and points variants at family_override. This is the network-free first gate, raised before any diffusers import or download.","triggerScenarios":"Passing a repo_id (with optional gguf_filename/family_override) that matches none of the supported video families — an image model id, a renamed mirror, a brand-new model the backend predates, or a typo in the repo id.","commonSituations":"Trying an image-diffusion repo on the video route; using a quantizer's renamed GGUF repo whose arch tag the detector does not know; version skew after a new family ships upstream but the installed backend is older; typos like 'hunyuanvideo-communiy'.","solutions":["Use one of the supported family repos named in the error message.","If the repo is a genuine variant of a supported family, pass family_override with that family name.","For GGUF repos with unusual filenames, pass model_kind='gguf' plus gguf_filename so the arch detection has the right input.","Update the backend — newly supported families are added over time."],"exampleFix":"# before\nload_video_model(repo_id='some-org/new-video-model')\n\n# after\nload_video_model(repo_id='some-org/new-video-model', family_override='hunyuan-video')  # if truly a variant\n# or use a supported repo:\nload_video_model(repo_id='hunyuanvideo-community/hunyuanvideo-1.5-diffusers-720p_t2v')","handlingStrategy":"validation","validationCode":"from core.inference.video import _detect_load_family, resolve_video_model_kind\n\ndef repo_supported(repo_id, gguf_filename=None, family_override=None) -> bool:\n    return _detect_load_family(repo_id, gguf_filename, family_override) is not None","typeGuard":null,"tryCatchPattern":"try:\n    load_video_model(repo_id=r)\nexcept ValueError as e:\n    if 'not a supported text-to-video model' in str(e):\n        load_video_model(repo_id=r, family_override=guess_variant_family(r))\n    else:\n        raise","preventionTips":["Offer only supported family repos in the model picker.","For genuine variants, pass family_override with the base family name rather than editing repo ids.","Re-check support after backend updates; family lists grow over time."],"tags":["video","model-support","family-detection","validation"],"backgroundTag":null,"analyzedSha":"203007d19051dcd2ae33876786d117c99f6b0368","analyzedAt":"2026-08-15T02:48:39.846Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}