{"record":{"id":"ac74effe9a3e4b4e","repo":"home-assistant/core","slug":"invalid-blueprint-inputs-humanize-error-config-w","errorCode":null,"errorMessage":"Invalid blueprint inputs: {humanize_error(config_with_blueprint, err)}","messagePattern":"Invalid blueprint inputs: (.+?)","errorType":"exception","errorClass":"InvalidBlueprintInputs","httpStatus":null,"severity":"error","filePath":"homeassistant/components/blueprint/models.py","lineNumber":314,"sourceCode":"            try:\n                blueprint = await self.hass.async_add_executor_job(\n                    self._load_blueprint, blueprint_path\n                )\n            except FailedToLoad:\n                self._blueprints[blueprint_path] = None\n                raise\n\n            self._blueprints[blueprint_path] = blueprint\n            return blueprint\n\n    async def async_inputs_from_config(\n        self, config_with_blueprint: dict\n    ) -> BlueprintInputs:\n        \"\"\"Process a blueprint config.\"\"\"\n        try:\n            config_with_blueprint = BLUEPRINT_INSTANCE_FIELDS(config_with_blueprint)\n        except vol.Invalid as err:\n            raise InvalidBlueprintInputs(\n                self.domain, humanize_error(config_with_blueprint, err)\n            ) from err\n\n        bp_conf = config_with_blueprint[CONF_USE_BLUEPRINT]\n        blueprint = await self.async_get_blueprint(bp_conf[CONF_PATH])\n        inputs = BlueprintInputs(blueprint, config_with_blueprint)\n        inputs.validate()\n        return inputs\n\n    async def async_remove_blueprint(self, blueprint_path: str) -> None:\n        \"\"\"Remove a blueprint file.\"\"\"\n        if self._blueprint_in_use(self.hass, blueprint_path):\n            raise BlueprintInUse(self.domain, blueprint_path)\n        path = self.blueprint_folder / blueprint_path\n        await self.hass.async_add_executor_job(path.unlink)\n        self._blueprints[blueprint_path] = None\n\n    def _create_file(","sourceCodeStart":296,"sourceCodeEnd":332,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/blueprint/models.py#L296-L332","documentation":"InvalidBlueprintInputs is raised in async_inputs_from_config when the config passed to the blueprint fails BLUEPRINT_INSTANCE_FIELDS (voluptuous). The humanized error identifies the bad field. This validates the consumer's use_blueprint block shape, not the blueprint file itself.","triggerScenarios":"A config dict where use_blueprint is not a mapping containing path, or where unknown/extra keys sit next to 'input', or 'input' is not a mapping; reached via automation/script config validation or websocket API calls that build BlueprintInputs.","commonSituations":"Hand-written automation YAML with 'use_blueprint:' as a plain string; 'input:' given a list; typo like 'inputs:' instead of 'input:'.","solutions":["Follow the humanized message: ensure the block is 'use_blueprint: {path: <file>, input: {<name>: <value>}}'","Fix key typos (inputs -> input) and make input a mapping of input-name to value","Validate with Developer Tools > YAML before saving"],"exampleFix":"# before\n- use_blueprint: motion_light.yaml\n  inputs:\n    - light.hall\n\n# after\n- use_blueprint:\n    path: motion_light.yaml\n    input:\n      light: light.hall","handlingStrategy":"validation","validationCode":"import voluptuous as vol\nfrom homeassistant.components.blueprint.models import BLUEPRINT_INSTANCE_FIELDS\n\ndef use_blueprint_config_valid(config: dict) -> bool:\n    try:\n        BLUEPRINT_INSTANCE_FIELDS(config)\n        return True\n    except vol.Invalid:\n        return False","typeGuard":null,"tryCatchPattern":"from homeassistant.components.blueprint.errors import InvalidBlueprintInputs\ntry:\n    inputs = await manager.async_inputs_from_config(config)\nexcept InvalidBlueprintInputs as err:\n    # show humanized error next to the use_blueprint editor field","preventionTips":["Build use_blueprint blocks via the automation UI editor, which emits the correct shape","Remember the schema: mapping with exactly path (required) and input"],"tags":["blueprint","inputs","voluptuous","validation"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}