home-assistant/core · error · HomeAssistantError

todo_save_item_failed

Error message

todo_save_item_failed

What it means

Raised by the Bring To-do entity's async_create_todo_item when bring-api's save_item() raises BringRequestException, meaning the HTTP request to create the list item failed. The item is a newly generated UUID-backed entry with summary/description. HA surfaces it as a HomeAssistantError with translation key todo_save_item_failed and the item's summary as placeholder.

Source

Thrown at homeassistant/components/bring/todo.py:121

        ]

    @property
    def bring_list(self) -> BringData:
        """Return the bring list."""
        return self.coordinator.data[self._list_uuid]

    @override
    async def async_create_todo_item(self, item: TodoItem) -> None:
        """Add an item to the To-do list."""
        try:
            await self.coordinator.bring.save_item(
                self._list_uuid,
                item.summary or "",
                item.description or "",
                str(uuid.uuid4()),
            )
        except BringRequestException as e:
            raise HomeAssistantError(
                translation_domain=DOMAIN,
                translation_key="todo_save_item_failed",
                translation_placeholders={"name": item.summary or ""},
            ) from e

        await self.coordinator.async_refresh()

    @override
    async def async_update_todo_item(self, item: TodoItem) -> None:
        """Update an item in the To-do list.

        Bring has an internal 'recent' list which we want to use instead of a todo list
        status, therefore completed todo list items are matched to the recent list and
        pending items to the purchase list.

        This results in following behaviour:

        - Completed items will move to the "completed" section in home assistant todo

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Retry the add after reloading the integration so the coordinator refreshes lists and the session.
  2. Re-authenticate the Bring integration if failures persist (Config > Integrations > Bring > Re-authenticate).
  3. Confirm the list still exists in the Bring app and re-create the config entry if the list was deleted/recreated.
  4. Check logs for the underlying BringRequestException message to see the HTTP status.
Defensive patterns

Strategy: retry

Try / catch

try:
    await todo_entity.async_create_todo_item(item)
except HomeAssistantError as err:
    if err.translation_key == "todo_save_item_failed":
        await coordinator.async_refresh()
        await todo_entity.async_create_todo_item(item)  # one retry after refresh
    else:
        raise

Prevention

When it happens

Trigger: Adding a To-do item (via UI or todo.add_item service) while the Bring API returns a non-2xx response or the request layer raises: invalid session cookie, list UUID stale, payload rejected, network timeout.

Common situations: Expired Bring session after HA restart, list deleted or recreated on the phone app so the stored list_uuid no longer exists, intermittent cloud errors, item summary containing characters the API rejects.

Related errors


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