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.
Solutions
- Verify the Amber API key is valid (re-create it in the Amber app and update the config entry if needed)
- Check for 429 rate limiting and reduce update frequency
- Check Amber Electric status/announcements for outages
- 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
- Keep the Amber API token current; regenerate it in the Amber app when revoked
- Respect rate limits — don't add extra parallel consumers of the same token
- Check Amber status pages during regional incidents before debugging locally
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
- No general channel configured
- The Altruist is unavailable
- api_error
- Blink API authorization failed
- channel_not_found
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/323c8ed62d85bcfe.
Report an issue: GitHub.
Appendix: 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_windowView on GitHub (pinned to 58a3fdb3ea)