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),revisedorremoved(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;versionrides 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.