{"record":{"id":"dfb6c6a1f9657c9f","repo":"home-assistant/core","slug":"blink-api-authorization-failed","errorCode":null,"errorMessage":"Blink API authorization failed","messagePattern":"Blink API authorization failed","errorType":"exception","errorClass":"ConfigEntryAuthFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/blink/coordinator.py","lineNumber":67,"sourceCode":"        try:\n            await self.api.start()\n        except (ClientError, TimeoutError) as ex:\n            raise ConfigEntryNotReady(\"Can not connect to host\") from ex\n        except (BlinkTwoFARequiredError, UnauthorizedError) as ex:\n            raise ConfigEntryAuthFailed(\"Required Blink re-authentication\") from ex\n        except Exception as ex:\n            raise ConfigEntryError(\"Unknown error connecting to Blink\") from ex\n\n        if not self.api.available:\n            raise ConfigEntryNotReady\n\n    @override\n    async def _async_update_data(self) -> dict[str, Any]:\n        \"\"\"Async update wrapper.\"\"\"\n        try:\n            return await self.api.refresh(force=True)\n        except UnauthorizedError as ex:\n            raise ConfigEntryAuthFailed(\"Blink API authorization failed\") from ex\n","sourceCodeStart":49,"sourceCodeEnd":68,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/blink/coordinator.py#L49-L68","documentation":"ConfigEntryAuthFailed('Blink API authorization failed') raised in BlinkCoordinator._async_update_data when the forced refresh (api.refresh(force=True)) raises UnauthorizedError. This aborts the DataUpdateCoordinator update and moves the entry to reauth; a traceback in the logs is expected companion output.","triggerScenarios":"Periodic coordinator update calls refresh(force=True); Blink answers 401 because the session/token expired since setup. Distinct from setup-time auth failure: this happens during steady-state polling.","commonSituations":"Blink invalidating long-lived tokens after days/weeks; account password change; concurrent logins causing token revocation; clock skew after HA host reboot.","solutions":["Complete the reauth flow that appears for the Blink entry","Avoid logging into the Blink app with account-linking prompts that reset tokens","If it recurs every few hours, report it — refresh tokens should be renewed automatically by blinkpy"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    return await self.api.refresh(force=True)\nexcept UnauthorizedError as ex:\n    raise ConfigEntryAuthFailed(\"Blink API authorization failed\") from ex","preventionTips":["Monitor for repeated 401 tracebacks; they indicate token churn needing reauth","Avoid multiple simultaneous Blink clients (app + custom scripts) that invalidate tokens"],"tags":["blink","auth","coordinator","reauth","polling"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}