home-assistant/core · error · ServiceValidationError

invalid_info_skill_value

invalid_info_skill_value

Error message

Invalid info skill {info_skill} specified

What it means

ServiceValidationError with translation key alexa_devices/invalid_info_skill_value, raised in _async_execute_action when the ATTR_INFO_SKILL value of the service call does not map through INFO_SKILLS_MAPPING to a value in ALEXA_INFO_SKILLS — the set of supported Alexa information skills (weather, traffic, etc.).

Source

Thrown at homeassistant/components/alexa_devices/services.py:104

        if value not in SOUNDS_LIST:
            raise ServiceValidationError(
                translation_domain=DOMAIN,
                translation_key="invalid_sound_value",
                translation_placeholders={"sound": value},
            )
        async with alexa_api_call():
            await coordinator.api.call_alexa_sound(
                coordinator.data[device.serial_number], value
            )
    elif attribute == ATTR_TEXT_COMMAND:
        async with alexa_api_call():
            await coordinator.api.call_alexa_text_command(
                coordinator.data[device.serial_number], value
            )
    elif attribute == ATTR_INFO_SKILL:
        info_skill = INFO_SKILLS_MAPPING.get(value)
        if info_skill not in ALEXA_INFO_SKILLS:
            raise ServiceValidationError(
                translation_domain=DOMAIN,
                translation_key="invalid_info_skill_value",
                translation_placeholders={"info_skill": value},
            )
        async with alexa_api_call():
            await coordinator.api.call_alexa_info_skill(
                coordinator.data[device.serial_number], info_skill
            )


async def async_send_sound_notification(call: ServiceCall) -> None:
    """Send a sound notification to a AmazonDevice."""
    await _async_execute_action(call, ATTR_SOUND)


async def async_send_text_command(call: ServiceCall) -> None:
    """Send a custom command to a AmazonDevice."""
    await _async_execute_action(call, ATTR_TEXT_COMMAND)

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Check INFO_SKILLS_MAPPING in the integration source for accepted keys and use one exactly
  2. Use the UI service selector dropdown, which enumerates valid info skills
  3. Fix typos and casing in the automation/script YAML
  4. After a Home Assistant upgrade, re-check the mapping for renamed skills

Example fix

// before
action:
  domain: alexa_devices
  data:
    device_id: "..."
    info_skill: "weather_report_typo"
// after
action:
  domain: alexa_devices
  data:
    device_id: "..."
    info_skill: "weather"  # a key present in INFO_SKILLS_MAPPING
Defensive patterns

Strategy: validation

Validate before calling

from homeassistant.components.alexa_devices.const import INFO_SKILLS_MAPPING, ALEXA_INFO_SKILLS
if INFO_SKILLS_MAPPING.get(info_skill) not in ALEXA_INFO_SKILLS:
    _LOGGER.warning("Unsupported info skill %r; valid: %s", info_skill, sorted(INFO_SKILLS_MAPPING))
    return

Type guard

def is_valid_info_skill(value: str) -> bool:
    """True when value maps to a supported Alexa info skill."""
    return INFO_SKILLS_MAPPING.get(value) in ALEXA_INFO_SKILLS

Try / catch

try:
    await hass.services.async_call(DOMAIN, SERVICE, service_data, blocking=True)
except ServiceValidationError as err:
    if err.translation_key == "invalid_info_skill_value":
        _LOGGER.warning("Invalid info skill; use a key from INFO_SKILLS_MAPPING")

Prevention

When it happens

Trigger: Calling the info-skill service with a skill name that INFO_SKILLS_MAPPING.get(value) returns None (or a value not in ALEXA_INFO_SKILLS), e.g. 'my_custom_skill' or a misspelled entry like 'wheather'.

Common situations: Users passing arbitrary Alexa skill names instead of the fixed info-skill vocabulary, YAML written against an older mapping, or typos/casing mismatches.

Related errors


AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14). Data as JSON: /api/errors/89732ba894229f2f. Report an issue: GitHub.