home-assistant/core · warning · UpdateFailed

Missing price data, skipping update

Error message

Missing price data, skipping update

What it means

UpdateFailed('Missing price data, skipping update') raised in the Amber Electric coordinator when amberelectric-api's get_current_prices() raises ApiException — the HTTP call to the Amber API failed (auth, rate limit, 5xx) or returned no usable interval list. The update is skipped and retried on the next poll.

Source

Thrown at homeassistant/components/amberelectric/coordinator.py:90

    def update_price_data(self) -> dict[str, dict[str, Any]]:
        """Update callback."""

        result: dict[str, dict[str, Any]] = {
            "current": {},
            "descriptors": {},
            "forecasts": {},
            "grid": {},
        }
        try:
            data = self._api.get_current_prices(
                self.site_id,
                next=288,
                _request_timeout=REQUEST_TIMEOUT,
            )
            intervals = [interval.actual_instance for interval in data]
        except ApiException as api_exception:
            raise UpdateFailed("Missing price data, skipping update") from api_exception

        current = [interval for interval in intervals if is_current(interval)]
        forecasts = [interval for interval in intervals if is_forecast(interval)]
        general = [interval for interval in current if is_general(interval)]

        if len(general) == 0:
            raise UpdateFailed("No general channel configured")

        result["current"]["general"] = general[0]
        result["descriptors"]["general"] = normalize_descriptor(general[0].descriptor)
        result["forecasts"]["general"] = [
            interval for interval in forecasts if is_general(interval)
        ]
        result["grid"]["renewables"] = round(general[0].renewables)
        result["grid"]["price_spike"] = general[0].spike_status.value
        tariff_information = general[0].tariff_information
        if tariff_information:
            result["grid"]["demand_window"] = tariff_information.demand_window

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Verify the Amber API key is valid (re-create it in the Amber app and update the config entry if needed)
  2. Check for 429 rate limiting and reduce update frequency
  3. Check Amber Electric status/announcements for outages
  4. Confirm the site_id in the entry matches the NMI/site in the Amber account
Defensive patterns

Strategy: retry

Try / catch

from amberelectric_api.exceptions import ApiException
try:
    data = api.get_current_prices(site_id, next=288, _request_timeout=REQUEST_TIMEOUT)
except ApiException as e:
    if e.status in (429, 500, 502, 503):
        raise UpdateFailed("Missing price data, skipping update") from e  # retried next poll
    raise  # 401 etc. need user action, not retry

Prevention

When it happens

Trigger: Coordinator polls calling self._api.get_current_prices(site_id, next=288, _request_timeout=REQUEST_TIMEOUT) which raises ApiException: expired/invalid API token (401), rate limiting (429), or server errors (5xx) from the Amber API.

Common situations: Amber API token revoked or regenerated in the Amber app, free-tier rate limits hit by aggressive polling, Amber service incidents, or site_id mismatch after account changes.

Related errors


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