healthcare.dev docs
API referenceProviders

Medicare enrollment for an NPI

GET /v1/providers/{npi}/enrollment

GET https://api.healthcare.dev/v1/providers/{npi}/enrollment

Medicare fee-for-service enrollments (PECOS) that list this NPI in CMS's public provider enrollment file, as the main NPI or one of an organization's additional NPIs: enrollment id, PECOS associate id, provider type, enrollment state and name. One NPI can hold several enrollments (one per state and provider type). enrolled is true when the current file lists one; enrollments a later file dropped stay with status: retired. Not listed means CMS's file has no enrollment with this NPI as of data_version, not a determination of eligibility. A well-formed NPI always answers 200.

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

Path parameters

NameTypeRequiredDescriptionExample
npistringyes10-digit National Provider Identifier1881018208

Query parameters

NameTypeRequiredDescriptionExample
view"compact" | "standard" | "full"noHow much of each record to return (default full). compact: enrollment_id, npi, provider_type, state, status (fewest tokens, for agents). standard: every field except replaced_by. full: every field.compact
fieldsstringnoComma-separated fields to return instead of a view. Valid fields: enrollment_id, npi, additional_npis, pecos_associate_id, entity_type, provider_type_code, provider_type, state, name, status, effective_start, effective_end, replaced_by.enrollment_id,npi,provider_type

Examples

curl

curl "https://api.healthcare.dev/v1/providers/1881018208/enrollment" \
  -H "Authorization: Bearer $HDEV_API_KEY"

TypeScript

const res = await fetch("https://api.healthcare.dev/v1/providers/1881018208/enrollment", {
  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/providers/1881018208/enrollment", headers={"Authorization": f"Bearer {os.environ['HDEV_API_KEY']}"})
body = res.json()

Try it

GEThttps://api.healthcare.dev/v1/providers/1881018208/enrollment?view=compact&fields=enrollment_id%2Cnpi%2Cprovider_type
Get a free key
Copy as curl
curl "https://api.healthcare.dev/v1/providers/1881018208/enrollment?view=compact&fields=enrollment_id%2Cnpi%2Cprovider_type" \
  -H "Authorization: Bearer $HDEV_API_KEY"

Response

The NPI's enrollments

{
  "data": {
    "npi": "string",
    "enrolled": true,
    "note": "string",
    "enrollments": [
      {
        "enrollment_id": "string",
        "npi": "string",
        "additional_npis": [
          null
        ],
        "pecos_associate_id": "string",
        "entity_type": "individual",
        "provider_type_code": "string",
        "provider_type": "string",
        "state": "string",
        "name": {
          "display": null,
          "first": null,
          "middle": null,
          "last": null,
          "organization": null
        },
        "status": "active",
        "effective_start": "2026-10-01",
        "effective_end": "2026-10-01",
        "replaced_by": [
          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/providers/1881018208/enrollment",
    "next": null
  }
}

Fields

FieldTypeAlways presentDescription
npistringyes
enrolledbooleanyesWhether CMS's current public enrollment file lists an enrollment with this NPI
notestringyesHow the answer was matched, in plain words: show it with the data
enrollmentsMedicareEnrollment[]yes

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.
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