NEWMedicare Advantage 2027 plans are live in the API.Read the changelog

Providers and NPIs

Every provider is identified by a 10-digit NPI (National Provider Identifier). Send it as a string, and keep the leading digit.

.mdView as MarkdownOpen in PlaygroundUpdated 2026-10-30

NPI format

An NPI has 10 digits and starts with 1 or 2. The last digit is a check digit (Luhn, with the prefix 80840). We validate it before any lookup, so a typo answers 400 invalid_npi instead of a wrong answer.

400 Bad Request · application/problem+json
{  "type": "invalid_npi",  "title": "Invalid NPI",  "status": 400,  "detail": "\"1234567890\" fails the NPI check digit (Luhn with prefix 80840).",  "instance": "/v1/check",  "request_id": "req_tyeV9VkOEHSgXbbW",  "docs": "https://inplan.io/docs/errors#invalid_npi"}

Provider profiles

GET /v1/providers/{npi} returns the name, credential, specialties, practice locations, group practices and facility affiliations from national provider registry records, plus plan_summary: how many marketplace and Medicare Advantage plans list the provider.

200 OK · shortened
{  "data": {    "npi": "1184617268",    "profile_found": true,    "name": {      "first": "Michael",      "middle": "Buttimer",      "last": "Williard",      "suffix": null,      "display": "Michael B. Williard, MD"    },    "credential": "MD",    "gender": "male",    "status": "active",    "specialties": [      {        "name": "Orthopedic Surgery",        "primary": true      }    ],    "education": {      "medical_school": "Ohio State University College of Medicine",      "graduation_year": 1987    },    "locations": [      {        "address_line_1": "605 Crescent Pl",        "address_line_2": null,        "city": "Gahanna",        "state": "OH",        "zip": "43230",        "phone": "6145457900",        "latitude": null,        "longitude": null,        "group": {          "name": "Orthopedic One, Inc.",          "pac_id": "3072598283"        },        "telehealth": null      }    ],    "groups": [      {        "name": "Orthopedic One, Inc.",        "pac_id": "3072598283",        "members": 282      }    ],    "affiliations": [      {        "facility_type": "Home health agency",        "ccn": "368154",        "name": null,        "city": null,        "state": null      },      {        "facility_type": "Hospital",        "ccn": "360035",        "name": "Mount Carmel East & West",        "city": "Columbus",        "state": "OH"      }    ],    "privacy": {      "contact_masked": false    },    "plan_summary": {      "aca": {        "plans": 77,        "issuers": 4,        "states": [          "OH"        ],        "plan_years": [          2025,          2026,          2027        ],        "as_of": "2026-10-28"      },      "ma": {        "plans": 36,        "organizations": 4,        "plan_years": [          2027        ],        "accepting_new_patients_any": true,        "as_of": "2026-10-29"      }    },    "links": {      "plans": "/v1/providers/1184617268/plans"    }  }}

Names and credentials

name.display joins the name and the credential as published, for example "Michael B. Williard, MD". We never add titles such as "Dr.": show the credential, not a title.

Listings without a profile

Some NPIs appear in plan directories but not in our registry records. Then profile_found is false, the identity fields are absent, and plan_summary still counts the plans. An NPI with neither answers 404 not_found.

Privacy

Providers can ask us to hide their street address and phone. Then privacy.contact_masked is true and those fields are null. City, state and ZIP stay. We hold no patient data.

Docs / Concepts / Providers and NPIsNext: Data freshness