{"record":{"id":"0b1dbbad68897193","repo":"home-assistant/core","slug":"blink-authorization-failed","errorCode":null,"errorMessage":"Blink authorization failed","messagePattern":"Blink authorization failed","errorType":"exception","errorClass":"ConfigEntryAuthFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/blink/alarm_control_panel.py","lineNumber":97,"sourceCode":"        self.sync.attributes[\"associated_cameras\"] = list(self.sync.cameras)\n        self._attr_extra_state_attributes = self.sync.attributes\n        self._attr_alarm_state = (\n            AlarmControlPanelState.ARMED_AWAY\n            if self.sync.arm\n            else AlarmControlPanelState.DISARMED\n        )\n\n    @override\n    async def async_alarm_disarm(self, code: str | None = None) -> None:\n        \"\"\"Send disarm command.\"\"\"\n        try:\n            await self.sync.async_arm(False)\n\n        except TimeoutError as er:\n            raise HomeAssistantError(\"Blink failed to disarm camera\") from er\n        except UnauthorizedError as er:\n            self.coordinator.config_entry.async_start_reauth(self.hass)\n            raise ConfigEntryAuthFailed(\"Blink authorization failed\") from er\n\n        await self.coordinator.async_refresh()\n\n    @override\n    async def async_alarm_arm_away(self, code: str | None = None) -> None:\n        \"\"\"Send arm command.\"\"\"\n        try:\n            await self.sync.async_arm(True)\n\n        except TimeoutError as er:\n            raise HomeAssistantError(\"Blink failed to arm camera away\") from er\n        except UnauthorizedError as er:\n            self.coordinator.config_entry.async_start_reauth(self.hass)\n            raise ConfigEntryAuthFailed(\"Blink authorization failed\") from er\n\n        await self.coordinator.async_refresh()\n","sourceCodeStart":79,"sourceCodeEnd":114,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/blink/alarm_control_panel.py#L79-L114","documentation":"blink alarm_control_panel.async_alarm_disarm catches UnauthorizedError from sync.async_arm(False), calls config_entry.async_start_reauth to kick off reauthentication, and raises ConfigEntryAuthFailed('Blink authorization failed'). This tells Home Assistant the OAuth/login token is invalid so the entry enters the reauth flow instead of retrying pointlessly.","triggerScenarios":"Disarming when Blink rejects the stored credentials: token expired and could not be auto-refreshed, password changed, token revoked by logging in elsewhere, or Blink changed auth requirements.","commonSituations":"Long-running HA instance whose Blink session token aged out; user changed their Blink password; Blink enforcing re-login after security changes; too many devices using the same account.","solutions":["Open Home Assistant > Settings > Devices & Services and complete the Blink reauthentication prompt that appears.","If reauth loops, delete the Blink integration entry and set it up again.","Confirm the Blink credentials still work in the official Blink app first.","Update the blinkpy library / HA core in case auth handling changed."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"from homeassistant.exceptions import ConfigEntryAuthFailed\n\ntry:\n    await alarm.async_alarm_disarm(code)\nexcept ConfigEntryAuthFailed:\n    notify_user(\"Blink session expired — complete reauth in Settings > Devices & Services\")","preventionTips":["Keep the Blink integration and HA core updated so token auto-refresh works.","Avoid changing the Blink password without planning to reauth HA."],"tags":["home-assistant","blink","auth","reauth","token-expired"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}