Provider profile
Who the provider is, from national provider registry records: name and credential, specialties, practice locations, groups and facility affiliations. plan_summary counts the plans that list the provider.
WHEN TO USE IT
Use it to show a provider before you check plans, or to see in one call how many marketplace and Medicare Advantage plans list them. To list those plans, call GET /v1/providers/{npi}/plans.
PATH PARAMETERS
| NAME | DESCRIPTION |
|---|---|
npistring · Required | The provider's 10-digit National Provider Identifier. We validate the check digit. Example: 1184617268 |
RESPONSE FIELDS
Every response has the envelope request_id, data_as_of, data, sources and notes (details). Fields of data:
| FIELD | DESCRIPTION |
|---|---|
npistring | The NPI you asked for. |
profile_foundboolean | true when we hold identity details for this NPI. When false, only npi, plan_summary and links are present. |
nameobject | The name as published, with a display form. |
name.firststring | First name. |
name.middlestring | Middle name. |
name.laststring | Last name. |
name.suffixstring | null | Suffix, for example Jr. |
name.displaystring | Name and credential ready to show, for example "Michael B. Williard, MD". We never add titles. |
credentialstring | The credential as published, for example MD, DO, NP or PA. |
genderstring | male, female, or null when not published. |
statusstring | active or deactivated in the national provider registry. |
specialtiesobject[] | Specialties, primary first. |
specialties[].namestring | The specialty name. |
specialties[].primaryboolean | true for the primary specialty. |
educationobject | Training details, or null when not published. |
education.medical_schoolstring | The school named in the registry. |
education.graduation_yearinteger | The graduation year. |
locationsobject[] | Practice locations. |
locations[].address_line_1string | Street address. null when the provider asked us to hide contact details. |
locations[].address_line_2string | null | Suite or second address line. |
locations[].citystring | City. |
locations[].statestring | 2-letter state code. |
locations[].zipstring | 5-digit ZIP code. |
locations[].phonestring | null | Phone number, digits only. null when not published or hidden at the provider's request. |
locations[].latitudenumber | null | Latitude of the location, when known. |
locations[].longitudenumber | null | Longitude of the location, when known. |
locations[].groupobject | The group practice at this location, or null. |
locations[].group.namestring | The group name. |
locations[].group.pac_idstring | The group identifier in the national registry. |
locations[].telehealthboolean | null | true when the registry marks telehealth at this location, else null. |
groupsobject[] | Group practices the provider belongs to. |
groups[].namestring | The group name. |
groups[].pac_idstring | The group identifier in the national registry. |
groups[].membersinteger | Number of providers in the group. |
affiliationsobject[] | Facilities the provider is affiliated with. |
affiliations[].facility_typestring | For example Hospital or Home health agency. |
affiliations[].ccnstring | The facility's 6-character certification number. |
affiliations[].namestring | null | Facility name, when we hold it. |
affiliations[].citystring | null | Facility city. |
affiliations[].statestring | null | Facility state. |
privacyobject | Privacy settings for this record. |
privacy.contact_maskedboolean | true when the provider asked us to hide street address and phone. Those fields are then null. |
plan_summaryobject | Counts of the plans that list this provider. Get the plans from links.plans. |
plan_summary.acaobject | Marketplace plans. |
plan_summary.aca.plansinteger | Plan and plan-year pairs that list the provider. |
plan_summary.aca.issuersinteger | Insurers among those plans. |
plan_summary.aca.statesstring[] | States of those plans. |
plan_summary.aca.plan_yearsinteger[] | Plan years with a listing. |
plan_summary.aca.as_ofdate | The newest date we read a directory that lists the provider. |
plan_summary.maobject | Medicare Advantage plans. |
plan_summary.ma.plansinteger | Plan and plan-year pairs that list the provider. |
plan_summary.ma.organizationsinteger | Organizations among those plans. |
plan_summary.ma.plan_yearsinteger[] | Plan years with a listing. |
plan_summary.ma.accepting_new_patients_anyboolean | true when at least one directory says the provider accepts new patients, else null. |
plan_summary.ma.as_ofdate | The newest date we read a directory that lists the provider. |
linksobject | Related endpoints. |
links.plansstring | The path of the full plan list for this provider. |
RESPONSES
The profile, shortened here to one location.
{ "request_id": "req_fjj3DnMpm3d4ZZNK", "data_as_of": "2026-10-29", "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" } }, "sources": [ { "type": "provider_registry", "description": "National provider registry and practice records", "as_of": "2026-10-29" }, { "type": "insurer_directory", "description": "Provider network directories published by health insurers", "as_of": "2026-10-29" }, { "type": "plan_catalog", "description": "Published health plan catalogs", "as_of": "2026-10-28" }, { "type": "plan_directory", "description": "Provider network directories published by Medicare Advantage plans", "as_of": "2026-10-29" } ], "notes": [ "Network directories change. Confirm with the plan or the provider before care." ]}
The NPI is not 10 digits or fails its check digit.
{ "type": "invalid_npi", "title": "Invalid NPI", "status": 400, "detail": "\"1234567890\" fails the NPI check digit (Luhn with prefix 80840).", "instance": "/v1/providers/1234567890", "request_id": "req_RYHURQjbqOzSrK9m", "docs": "https://inplan.io/docs/errors#invalid_npi"}
The Authorization header is missing or malformed, or the key is unknown or revoked.
{ "type": "unauthorized", "title": "Missing API key", "status": 401, "detail": "Send `Authorization: Bearer ip_live_...`.", "instance": "/v1/providers/1184617268", "request_id": "req_eQx8WCqv-SXJ-RZw", "docs": "https://inplan.io/docs/errors#unauthorized"}
We hold no provider record and no plan listing for this NPI.
{ "type": "not_found", "title": "Provider not found", "status": 404, "detail": "No provider found for NPI 1999999984.", "instance": "/v1/providers/1999999984", "request_id": "req_eHYrIWCixJ4RIl52", "docs": "https://inplan.io/docs/errors#not_found"}
ERROR FORMAT
Errors use application/problem+json (RFC 7807) with type, title, status, detail, instance, request_id and docs. Other statuses this endpoint can return: 403 (plan, account or demo-key limit), 429 (rate limit or quota) and 503 (busy or timed out; retry after Retry-After). See Errors.
RATE-LIMIT HEADERS
Every response that passes the key and plan checks carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy, X-Quota-Limit, X-Quota-Remaining, X-Quota-Reset and X-Request-Id. Limits apply to each key. See Rate limits and quotas.
| PLAN | REQUESTS A SECOND | CALLS A MONTH |
|---|---|---|
| Free | 2 | 500 |
| Builder | 10 | 25,000 |
| Growth | 25 | 150,000 |
| Scale | Set with you | Set with you |