{"record":{"id":"ec02a44d5bc5a99b","repo":"home-assistant/core","slug":"reaction-request-failed","errorCode":null,"errorMessage":"reaction_request_failed","messagePattern":"reaction_request_failed","errorType":"exception","errorClass":"HomeAssistantError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/bring/services.py","lineNumber":92,"sourceCode":"\n        reaction: ReactionType = call.data[ATTR_REACTION]\n\n        if not activity:\n            raise ServiceValidationError(\n                translation_domain=DOMAIN,\n                translation_key=\"activity_not_found\",\n            )\n        try:\n            await coordinator.bring.notify(\n                list_uuid,\n                BringNotificationType.LIST_ACTIVITY_STREAM_REACTION,\n                receiver=state.attributes[ATTR_RECEIVER],\n                activity=state.attributes[ATTR_ACTIVITY],\n                activity_type=ActivityType(activity.upper()),\n                reaction=reaction,\n            )\n        except (BringRequestException, BringAuthException) as e:\n            raise HomeAssistantError(\n                translation_domain=DOMAIN,\n                translation_key=\"reaction_request_failed\",\n            ) from e\n\n    hass.services.async_register(\n        DOMAIN,\n        SERVICE_ACTIVITY_STREAM_REACTION,\n        async_send_activity_stream_reaction,\n        SERVICE_ACTIVITY_STREAM_REACTION_SCHEMA,\n    )\n\n    service.async_register_platform_entity_service(\n        hass,\n        DOMAIN,\n        SERVICE_PUSH_NOTIFICATION,\n        entity_domain=TODO_DOMAIN,\n        schema={\n            vol.Required(ATTR_NOTIFICATION_TYPE): vol.All(","sourceCodeStart":74,"sourceCodeEnd":110,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/bring/services.py#L74-L110","documentation":"Raised by the Bring! integration's send_activity_stream_reaction service when the underlying bring-websocket API call to notify() fails with BringRequestException (HTTP/transport failure) or BringAuthException (expired or invalid session). The HomeAssistantError wraps the library error and preserves it as __cause__. The list itself was already resolved (a missing list/activity raises activity_not_found earlier).","triggerScenarios":"Calling the bring.activity_stream_reaction service with valid list/activity/reaction targets while the Bring cloud API is unreachable, rate-limited, or the OAuth session has expired. Specifically it fires when coordinator.bring.notify(..., BringNotificationType.LIST_ACTIVITY_STREAM_REACTION, ...) raises BringRequestException or BringAuthException.","commonSituations":"Bring cloud outage or maintenance, expired token after long HA downtime, flaky home internet, reaction sent to a list the authenticated account can no longer access (membership revoked between coordinator refresh and service call).","solutions":["Check the Bring API status / your network connectivity, then retry the service call.","If it fails repeatedly, reload the integration or re-authenticate via the HA UI (AuthException path) to refresh the session.","Verify the target entity belongs to a list still shared with the reacting user and that receiver/activity attributes are populated (they come from entity state, not service input).","Inspect logs for the chained __cause__ (BringRequestException detail) to distinguish auth vs network failure."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"from homeassistant.exceptions import HomeAssistantError\n\ntry:\n    await hass.services.async_call(\n        \"bring\", \"activity_stream_reaction\", service_data, blocking=True\n    )\nexcept HomeAssistantError as err:\n    if err.translation_key == \"reaction_request_failed\":\n        # transient Bring cloud/auth failure: schedule retry\n        raise HomeAssistantErrorRetryLater from err\n    raise","preventionTips":["Refresh the Bring coordinator before reacting to long-idle entities so receiver/activity attributes are current.","Re-authenticate the Bring integration when it reports expired credentials instead of continuing to call services.","In automations, add a delay/retry wrapper around Bring service calls to absorb transient cloud errors."],"tags":["home-assistant","bring","network","service-call"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}