< back_to_feed

api

public json feed of confirmed Windows / M365 / Intune update regressions. ranked by severity + community signal. same data as the homepage, machine readable. no key, no signup. pipe it into Zabbix, Grafana, Slack, cron — your call.

endpoint

GET /api/regressions.json

  • // public — no auth, no api key
  • // cors: open (Access-Control-Allow-Origin: *)
  • // cached 5 min at the edge (s-maxage=300)
  • // rows sorted by rank_score desc

query_params

namevaluesdefaultdescription
since1d | 7d | 30d | 90d30dHow far back to look at last_seen_at.
severityminor | workaround | breaks-prodFilter by classifier severity. Omit for all.
kbKB1234567Return only regressions touching that KB.
limit1 – 500100Max rows returned. Sorted by rank_score desc.

example

$ curl 'https://win-update-tracker.com/api/regressions.json?severity=breaks-prod&since=7d'

response

{
  "generated_at": "2026-05-18T20:00:00Z",
  "count": 1,
  "regressions": [
    {
      "id": "1a2b3c...",
      "kb_numbers": ["KB5089549"],
      "component": "windows-update",
      "severity": "breaks-prod",
      "summary": "May 2026 security update fails to install with error 0x800f0922 on devices with limited EFI System Partition space.",
      "first_seen_at": "2026-05-15T14:28:00Z",
      "last_seen_at": "2026-05-17T09:12:00Z",
      "total_score": 184,
      "post_count": 11,
      "rank_score": 273.4,
      "permalink": "https://win-update-tracker.com/kb/KB5089549",
      "sources": [
        {
          "url": "https://www.reddit.com/r/sysadmin/comments/...",
          "source": "reddit:sysadmin",
          "title": "KB5089549 won't install — 0x800f0922 on T14s fleet"
        }
      ]
    }
  ]
}

integration_tips

zabbix — add an HTTP agent item polling the endpoint every 10 min. preprocess with JSONPath: $.regressions[?(@.severity=='breaks-prod')]. trigger on last() <> prev() or on a regex matching your rollout KBs.

grafana — Infinity datasource, json type, URL the endpoint, drill into $.regressions[*]. plot rank_score vs last_seen_at or table-view by component.

slack — a 5-line bash script in cron: curl …json | jq -r '.regressions[] | select(.severity=="breaks-prod") | "\\(.kb_numbers[0]) \\(.summary)"' | xargs -I{} curl -X POST $SLACK_HOOK …

stability = response shape is additive only. new fields may appear; existing fields will not be removed.

rate_limit = none today. cache the response on your side — fresh once per 5 min anyway.

questions  = ping dante.rivadi@anoto.com.py