home-assistant/core · error · UnknownRequest

Received unknown request {req_type}

Error message

Received unknown request {req_type}

What it means

Raised by the Alexa intent endpoint in intent.py: the incoming request message's request.type is looked up in the HANDLERS registry, and an unknown type raises UnknownRequest. Only registered types (SessionEndedRequest, IntentRequest, LaunchRequest) are accepted.

Source

Thrown at homeassistant/components/alexa/intent.py:133


async def async_handle_message(
    hass: HomeAssistant, message: dict[str, Any]
) -> dict[str, Any]:
    """Handle an Alexa intent.

    Raises:
     - UnknownRequest
     - intent.UnknownIntent
     - intent.InvalidSlotInfo
     - intent.IntentError

    """
    req = message["request"]
    req_type = req["type"]

    if not (handler := HANDLERS.get(req_type)):
        raise UnknownRequest(f"Received unknown request {req_type}")

    return await handler(hass, message)


@HANDLERS.register("SessionEndedRequest")
@HANDLERS.register("IntentRequest")
@HANDLERS.register("LaunchRequest")
async def async_handle_intent(
    hass: HomeAssistant, message: dict[str, Any]
) -> dict[str, Any]:
    """Handle an intent request.

    Raises:
     - intent.UnknownIntent
     - intent.InvalidSlotInfo
     - intent.IntentError

    """

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Update Home Assistant to the latest version so newly supported request types are handled
  2. Inspect the posted message payload and confirm request.type matches a registered handler
  3. If building against this API, only send IntentRequest, LaunchRequest, or SessionEndedRequest
Defensive patterns

Strategy: try-catch

Validate before calling

KNOWN_REQUEST_TYPES = {'IntentRequest', 'LaunchRequest', 'SessionEndedRequest'}
if message['request']['type'] not in KNOWN_REQUEST_TYPES:
    return _response('canFulfill', {'canFulfill': 'NO'})

Type guard

def is_known_request_type(message: dict) -> bool:
    return message.get('request', {}).get('type') in {'IntentRequest', 'LaunchRequest', 'SessionEndedRequest'}

Try / catch

Wrap async_handle_message in try/except UnknownRequest and return a graceful Alexa error response instead of a 500.

Prevention

When it happens

Trigger: Alexa (or any client) posts a message with a request type Home Assistant has no handler for, e.g. new Alexa request types like CanFulfillIntentRequest or AudioPlayer events.

Common situations: Amazon introduces new Skill request types; a custom skill posts malformed/unsupported payloads; version drift between the Alexa cloud protocol and the installed Home Assistant release.

Related errors


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