healthcare.dev docs
API referenceCoverage

History of a coverage policy document

GET /v1/policies/{id}/history

GET https://api.healthcare.dev/v1/policies/{id}/history

Team plan (403 plan-upgrade-required on other plans). One Medicare coverage document (an LCD, billing and coding article or NCD, by the document.id coverage answers carry) over time: each state of its facts as our published releases carried it, oldest first, with the CMS version, revision effective and retirement dates, the first and last UTC day we served it (first_seen, last_seen, as as_of answers them), the material changes taken in while it was live (fields changed, affected codes, effective date and the CMS page to check, as the coverage change feed lists them) and a coverage lookup link as of that date. A revision that changed nothing we serve about the document (formatting, revision history) doesn't start a new state; a new MCD version, title or page does. Facts and links only, never policy text. A date is answered by the release we were serving at the end of that UTC day. History starts on the day we first published the coverage data (earliest_as_of on a 422 as-of-out-of-range) and is never extrapolated before it or past today. 404 when the document isn't in our history.

Requires an API key: Authorization: Bearer hdev_live_.... See Authentication.

Path parameters

NameTypeRequiredDescriptionExample
idstringyesLCD (L33252), billing article (A52369) or NCD (NCD-42) id, as document.idA56640

Query parameters

NameTypeRequiredDescriptionExample
view"compact" | "standard" | "full"noHow much of each record to return (default full). compact: id, type, history_starts, versions (fewest tokens, for agents). standard: every field. full: every field.compact
fieldsstringnoComma-separated fields to return instead of a view. Valid fields: id, type, title, url, history_starts, versions.id,type,history_starts

Examples

curl

curl "https://api.healthcare.dev/v1/policies/A56640/history" \
  -H "Authorization: Bearer $HDEV_API_KEY"

TypeScript

const res = await fetch("https://api.healthcare.dev/v1/policies/A56640/history", {
  headers: { Authorization: `Bearer ${process.env.HDEV_API_KEY}` },
});
const { data, meta } = await res.json();

Python

import os
import requests

res = requests.get("https://api.healthcare.dev/v1/policies/A56640/history", headers={"Authorization": f"Bearer {os.environ['HDEV_API_KEY']}"})
body = res.json()

Try it

GEThttps://api.healthcare.dev/v1/policies/A56640/history?view=compact&fields=id%2Ctype%2Chistory_starts
Get a free key
Copy as curl
curl "https://api.healthcare.dev/v1/policies/A56640/history?view=compact&fields=id%2Ctype%2Chistory_starts" \
  -H "Authorization: Bearer $HDEV_API_KEY"

Response

The document's states over time, oldest first

{
  "data": {
    "id": "string",
    "type": "lcd",
    "title": "string",
    "url": "string",
    "history_starts": "2026-10-01",
    "versions": [
      {
        "mcd_version": 1,
        "status": "active",
        "effective_date": "2026-10-01",
        "retire_date": "2026-10-01",
        "url": "string",
        "first_seen": "2026-10-01",
        "last_seen": "2026-10-01",
        "current": true,
        "changes": [
          null
        ],
        "links": {
          "coverage": null
        }
      }
    ]
  },
  "meta": {
    "source": "cms-icd10",
    "data_version": "2026.1",
    "retrieved_at": "2026-10-24T12:00:00Z",
    "license": "Public domain (CMS). Reference data, not medical advice."
  },
  "links": {
    "self": "/v1/policies/A56640/history",
    "next": null
  }
}

Fields

FieldTypeAlways presentDescription
idstringyesL33252, A52369 or NCD-42
type"lcd" | "article" | "ncd"yeslcd Local Coverage Determination, article billing and coding article, ncd National Coverage Determination
titlestringyesThe document's title in its latest state
urlstring (uri)yesThe document's page in its latest state
history_startsstring (date)yesThe first date our history answers for (the UTC day we first published the coverage data); nothing earlier is known here
versionsPolicyVersion[]yesOldest first

Errors

Errors are application/problem+json (RFC 9457). Branch on type, not on title. See Errors.

StatustypeWhen
400invalid-requestA parameter or the body failed validation; errors lists each field.
401unauthorizedMissing, malformed or revoked API key.
403plan-upgrade-requiredThe plan doesn't include this feature; required_plan names the plan that does.
404not-foundNo record with that id (retired records are still returned).
429rate-limited / quota-exceededToo many requests per second (retry after Retry-After), or the monthly quota is used up.
503dataset-unavailable / unavailableThe dataset has no published version yet, or the service is degraded.

On this page