healthcare.dev docs

Coverage change feed

Material changes to Medicare coverage documents as we detect them: what changed, the codes affected, the effective date and the page to check.

GET /v1/coverage/changes lists changes to the coverage documents behind Medicare coverage support: LCDs, billing and coding articles and NCDs. It is part of the Pro and Team plans (403 plan-upgrade-required on Free and Builder), and like the dataset change feed it never counts as a billable call.

curl "https://api.healthcare.dev/v1/coverage/changes?code=11720&since=2026-10-01T00:00:00Z" \
  -H "Authorization: Bearer $HDEV_API_KEY"
{
  "data": [
    {
      "id": "4182",
      "type": "coverage.changed",
      "source_type": "coverage",
      "payer": "medicare",
      "document": {
        "id": "A56640",
        "type": "article",
        "title": "Billing and Coding: Debridement of Mycotic Nails",
        "version_before": 15,
        "version_after": 16
      },
      "change": "revised",
      "kind": "material",
      "fields_changed": ["dx_supporting", "version"],
      "affected_codes": ["11720", "11721"],
      "affected_dx_count": 1,
      "effective_date": "2019-09-12",
      "detected_at": "2026-10-20T05:30:00.000Z",
      "evidence": {
        "url": "https://www.cms.gov/medicare-coverage-database/view/article.aspx?articleid=56640&ver=16",
        "anchor": "h3Icd10SupportHeader"
      }
    }
  ]
}

Material changes only

We keep a dated copy of every version of the source documents and compare each new version with the one before. A change is material when it can change an answer: a code list or a diagnosis list changed, coverage status changed, an effective or retirement date moved, the criteria changed, or a document was added or retired. Everything else is cosmetic: a new revision that only fixes formatting, whitespace, row order, the title or the revision history. Cosmetic changes are recorded but never listed here, so a formatting-only revision of a document produces no event. An event appears once the answers it affects are live in /v1/coverage/medicare, usually within minutes of detection.

  • change: added (new, or newly in effect), revised or removed (retired or withdrawn).
  • fields_changed: what changed, e.g. codes, dx_supporting, dx_not_supporting, dx_groups, states, coverage_level, effective_date, retire_date, criteria, coding_rules, billing_codes; version rides along when the revision number moved.
  • affected_codes: the procedure codes whose answers may differ (code numbers only).
  • effective_date: when the revision takes effect (for a removed document, its retirement date).
  • evidence: the document's page in the Medicare Coverage Database, at the section that changed when it's a list.

Filter with code= (changes affecting that procedure code), since= (detected after a time) and payer= (medicare; more payers later). Page with cursor, oldest first by default or order=desc for the newest first. Each event's id is stable, so store the last one you processed and continue from it.

Events say what changed in the source, not what to conclude: call /v1/coverage/medicare for the current answer, which explains how it was reached in its derivation field (source_stated when a document's lists state it).

This feed is separate from the dataset change feed (/v1/changes, Builder and up), which lists the records each dataset release added, changed or retired. Webhooks for coverage changes will deliver the same event body.

On this page