{"record":{"id":"59cddf540212b089","repo":"Comfy-Org/ComfyUI","slug":"avatar-avatar-label-does-not-support-the-engi","errorCode":null,"errorMessage":"Avatar '{avatar_label}' does not support the {engine} engine (supported: {', '.join(supported)}). Set engine to 'auto' to pick a compatible engine automatically.","messagePattern":"Avatar '(.+?)' does not support the (.+?) engine \\(supported: (.+?)\\)\\. Set engine to 'auto' to pick a compatible engine automatically\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"comfy_api_nodes/nodes_heygen.py","lineNumber":116,"sourceCode":"        look = (\n            await sync_op_raw(\n                cls,\n                ApiEndpoint(path=f\"{_LOOKS_PATH}/{custom_avatar_id}\"),\n                final_label_on_success=None,\n            )\n        ).get(\"data\") or {}\n        avatar_id = custom_avatar_id\n        avatar_label = look.get(\"name\") or custom_avatar_id\n        supported = look.get(\"supported_api_engines\") or []\n    else:\n        avatar_id, avatar_type, supported = HEYGEN_AVATAR_MAP[avatar_label]\n\n    if engine_choice == \"auto\":\n        engine = next((e for e in (\"avatar_iv\", \"avatar_iii\", \"avatar_v\") if e in supported), None)\n    else:\n        engine = engine_choice\n        if supported and engine not in supported:\n            raise ValueError(\n                f\"Avatar '{avatar_label}' does not support the {engine} engine \"\n                f\"(supported: {', '.join(supported)}). Set engine to 'auto' to pick \"\n                \"a compatible engine automatically.\"\n            )\n    return avatar_id, engine\n\n\nclass HeyGenTalkingPhotoNode(IO.ComfyNode):\n    \"\"\"Animate a still image of a person into a lip-synced talking video.\"\"\"\n\n    @classmethod\n    def define_schema(cls) -> IO.Schema:\n        return IO.Schema(\n            node_id=\"HeyGenTalkingPhotoNode\",\n            display_name=\"HeyGen Talking Photo\",\n            category=\"partner/video/HeyGen\",\n            description=\"Animate any image of a person into a lip-synced talking video \"\n            \"(HeyGen Avatar IV). Drive it with a text script or your own audio.\",","sourceCodeStart":98,"sourceCodeEnd":134,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy_api_nodes/nodes_heygen.py#L98-L134","documentation":"Thrown during avatar resolution when the user explicitly selected an engine that the chosen avatar does not support. For catalog avatars the supported list comes from HEYGEN_AVATAR_MAP; for custom avatar ids it is fetched live via the avatar look endpoint (supported_api_engines). Only the explicit engine choice is validated; 'auto' silently picks the first supported of avatar_iv/avatar_iii/avatar_v.","triggerScenarios":"Setting the engine widget to e.g. 'avatar_v' while the selected avatar's supported_api_engines (or catalog entry) does not include it.","commonSituations":"Newer engines (avatar_iv/v) requested on legacy photo avatars; custom avatar imported from an older HeyGen account; mixing talking-photo avatars with avatar-video engines.","solutions":["Set engine to 'auto' — the node then picks the newest supported engine automatically","Choose an engine listed in the error's supported list","For custom avatars, verify the avatar's supported engines in the HeyGen dashboard before pinning an engine"],"exampleFix":"# before\nengine_choice = \"avatar_v\"   # avatar only supports avatar_iii\n# after\nengine_choice = \"auto\"         # resolves to avatar_iii automatically","handlingStrategy":"validation","validationCode":"def engine_ok(engine_choice: str, supported: list[str]) -> bool:\n    return engine_choice == 'auto' or not supported or engine_choice in supported","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Default the engine widget to 'auto' unless a specific engine is required","Check supported_api_engines via the look endpoint before pinning engines for custom avatars"],"tags":["heygen","avatar","engine-compatibility","input-validation"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}