healthcare.dev docs
API referenceCoverage

Medicare coverage support for a code and diagnosis

GET /v1/coverage/medicare

GET https://api.healthcare.dev/v1/coverage/medicare

Pro plan and up (403 plan-upgrade-required below Pro). Whether Medicare's local coverage documents (LCDs and their billing and coding articles in the CMS Medicare Coverage Database) list an ICD-10-CM diagnosis as supporting medical necessity for a procedure code (HCPCS Level II or a CPT number), per document and overall: supported, not_supported or unclear. state limits it to the documents that apply there. Every answer says how it was reached: derivation: source_stated with confidence: 1 when the document lists the diagnosis for the code (or says unlisted diagnoses don't support it); unclear answers (narrative criteria, extra conditions, lists not tied to the code) have confidence: 0. evidence links the CMS Medicare Coverage Database page and section to check. No document listing the code means no local policy found: unclear with an empty results. Each account (all its keys together) can look up a limited number of different code and diagnosis pairs a day; repeats and failed lookups don't count (429 enumeration-limit past it, until 00:00 UTC). Reference data, not a coverage determination.

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

Query parameters

NameTypeRequiredDescriptionExample
codestringyesHCPCS Level II code or CPT code number11720
dxstringyesICD-10-CM code, with or without the dotB35.1
statestringnoTwo-letter state or territory (USPS)TX
view"compact" | "standard" | "full"noHow much of each record to return (default full). compact: code, dx, state, disclaimer, coverage, basis (fewest tokens, for agents). standard: every field. full: every field.compact
fieldsstringnoComma-separated fields to return instead of a view. Valid fields: code, dx, state, disclaimer, coverage, basis, results.code,dx,state

Examples

curl

curl "https://api.healthcare.dev/v1/coverage/medicare?code=11720&dx=B35.1" \
  -H "Authorization: Bearer $HDEV_API_KEY"

TypeScript

const res = await fetch("https://api.healthcare.dev/v1/coverage/medicare?code=11720&dx=B35.1", {
  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/coverage/medicare?code=11720&dx=B35.1", headers={"Authorization": f"Bearer {os.environ['HDEV_API_KEY']}"})
body = res.json()

Try it

GEThttps://api.healthcare.dev/v1/coverage/medicare?code=11720&dx=B35.1&state=TX&view=compact&fields=code%2Cdx%2Cstate
Get a free key
Copy as curl
curl "https://api.healthcare.dev/v1/coverage/medicare?code=11720&dx=B35.1&state=TX&view=compact&fields=code%2Cdx%2Cstate" \
  -H "Authorization: Bearer $HDEV_API_KEY"

Response

Coverage support per document and overall

{
  "data": {
    "code": "string",
    "dx": "string",
    "state": "string",
    "disclaimer": "Reference data, not a coverage determination.",
    "coverage": {
      "answer": "supported",
      "confidence": 0,
      "derivation": "source_stated",
      "evidence": [
        {
          "url": null,
          "anchor": null
        }
      ],
      "as_of": "2026-10-24T12:00:00Z"
    },
    "basis": "dx_listed_as_supporting",
    "results": [
      {
        "document": null,
        "states": [
          null
        ],
        "state_regions": [
          null
        ],
        "coverage": null,
        "basis": "dx_listed_as_supporting",
        "context": true
      }
    ]
  },
  "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/coverage/medicare?code=11720&dx=B35.1",
    "next": null
  }
}

Fields

FieldTypeAlways presentDescription
codestringyes
dxstringyesThe diagnosis, as ICD-10-CM with the dot
statestring | nullyes
disclaimer"Reference data, not a coverage determination."yes
coverageobjectyesAcross the documents below (not counting context ones): their answer when they agree, otherwise unclear
basis"dx_listed_as_supporting" | "dx_listed_as_not_supporting" | "dx_not_listed" | "conditional" | "conflicting_lists" | "pairing_not_stated" | "no_dx_list" | "documents_agree" | "documents_disagree" | "no_document_lists_code"yesWhat the answer rests on. Per document: dx_listed_as_supporting / dx_listed_as_not_supporting (the diagnosis is on that list for this code), dx_not_listed (not on the document's lists; not_supported only when the document says unlisted diagnoses don't support the code), conditional (listed, but with extra conditions such as another diagnosis on the claim), conflicting_lists, pairing_not_stated (listed, but the document doesn't tie that list to this code), no_dx_list (the criteria are narrative only). Overall: documents_agree, documents_disagree, no_document_lists_code.
resultsCoverageResult[]yesOne per LCD or article that lists the code

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