home-assistant/core · error · HomeAssistantError
reaction_request_failed
Error message
reaction_request_failed
What it means
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).
Source
Thrown at homeassistant/components/bring/services.py:92
reaction: ReactionType = call.data[ATTR_REACTION]
if not activity:
raise ServiceValidationError(
translation_domain=DOMAIN,
translation_key="activity_not_found",
)
try:
await coordinator.bring.notify(
list_uuid,
BringNotificationType.LIST_ACTIVITY_STREAM_REACTION,
receiver=state.attributes[ATTR_RECEIVER],
activity=state.attributes[ATTR_ACTIVITY],
activity_type=ActivityType(activity.upper()),
reaction=reaction,
)
except (BringRequestException, BringAuthException) as e:
raise HomeAssistantError(
translation_domain=DOMAIN,
translation_key="reaction_request_failed",
) from e
hass.services.async_register(
DOMAIN,
SERVICE_ACTIVITY_STREAM_REACTION,
async_send_activity_stream_reaction,
SERVICE_ACTIVITY_STREAM_REACTION_SCHEMA,
)
service.async_register_platform_entity_service(
hass,
DOMAIN,
SERVICE_PUSH_NOTIFICATION,
entity_domain=TODO_DOMAIN,
schema={
vol.Required(ATTR_NOTIFICATION_TYPE): vol.All(View on GitHub (pinned to 58a3fdb3ea)
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.
Defensive patterns
Strategy: retry
Try / catch
from homeassistant.exceptions import HomeAssistantError
try:
await hass.services.async_call(
"bring", "activity_stream_reaction", service_data, blocking=True
)
except HomeAssistantError as err:
if err.translation_key == "reaction_request_failed":
# transient Bring cloud/auth failure: schedule retry
raise HomeAssistantErrorRetryLater from err
raise Prevention
- 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.
When it happens
Trigger: 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.
Common situations: 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).
Related errors
- setup_request_exception
- entity_not_found
- activity_not_found
- todo_save_item_failed
- todo_rename_item_failed
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/ec02a44d5bc5a99b.
Report an issue: GitHub.