{"record":{"id":"1eee3d27bd19ddba","repo":"home-assistant/core","slug":"api-error-1eee3d","errorCode":"api_error","errorMessage":"An error occurred while communicating with the Aqvify API for {entry}","messagePattern":"An error occurred while communicating with the Aqvify API for (.+?)","errorType":"exception","errorClass":"ConfigEntryNotReady","httpStatus":null,"severity":"warning","filePath":"homeassistant/components/aqvify/coordinator.py","lineNumber":81,"sourceCode":"            update_interval=UPDATE_INTERVAL,\n            config_entry=entry,\n        )\n\n        self.api_client = api_client\n        self.previous_devices: set[str] = set()\n\n    @override\n    async def _async_setup(self) -> None:\n        \"\"\"Set up the coordinator.\"\"\"\n        try:\n            await self.api_client.async_get_account_id()\n        except AqvifyAuthException:\n            raise ConfigEntryAuthFailed(\n                translation_domain=DOMAIN,\n                translation_key=\"invalid_api_key\",\n            ) from None\n        except ClientResponseError as err:\n            raise ConfigEntryNotReady(\n                translation_domain=DOMAIN,\n                translation_key=\"api_error\",\n                translation_placeholders={\n                    \"entry\": self.config_entry.title,\n                },\n            ) from err\n        except TimeoutError as err:\n            raise ConfigEntryNotReady(\n                translation_domain=DOMAIN,\n                translation_key=\"api_timeout\",\n                translation_placeholders={\n                    \"entry\": self.config_entry.title,\n                },\n            ) from err\n\n    @override\n    async def _async_update_data(self) -> AqvifyCoordinatorData:\n        \"\"\"Fetch device state.\"\"\"","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/aqvify/coordinator.py#L63-L99","documentation":"ConfigEntryNotReady raised during Aqvify coordinator setup (translation_key 'api_error') when async_get_account_id() raises aiohttp ClientResponseError — the Aqvify API answered with a non-auth HTTP error (4xx/5xx). HA will treat the entry as not ready and automatically retry setup with backoff.","triggerScenarios":"The first authenticated setup call returns an HTTP status such as 500/502/503/404; placeholder 'entry' carries the config entry title for the translated message.","commonSituations":"Aqvify API outage or maintenance; rate limiting returning 429; server-side incidents; API version change altering the endpoint.","solutions":["Do nothing immediately — ConfigEntryNotReady makes HA retry setup automatically; check if the error clears within minutes.","Check the Aqvify service status / their support channel if every retry fails.","If a 404 persists, update Home Assistant to the latest core version in case the Aqvify API path changed."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"from aiohttp import ClientResponseError\n\ntry:\n    await api_client.async_get_account_id()\nexcept ClientResponseError as err:\n    if err.status in (401, 403):\n        raise ConfigEntryAuthFailed(...) from err\n    raise ConfigEntryNotReady(f\"API error {err.status}\") from err","preventionTips":["Leave the entry alone during transient cloud errors; ConfigEntryNotReady retries automatically.","Monitor Aqvify status pages for incidents before debugging locally.","Keep HA core updated so endpoint changes are picked up."],"tags":["home-assistant","aqvify","api-error","config-entry-not-ready","retry"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}