API Endpoint: NPI Registry
The npi-registry endpoint verifies a National Provider Identifier against the CMS NPPES registry.
POST /api/v1/validate/npi-registry
https://www.tincomply.com/api/v1/validate/npi-registry
Looks up a National Provider Identifier in the CMS NPPES registry and returns its status, the registered provider name, specialty, license and practice address. Send a name as well and the response tells you whether it matches the registry.
Request body
| Field | Type | Description |
|---|---|---|
npirequired |
string | The 10-digit NPI. |
name |
string | Optional. The provider name on your record, compared against the registry name. |
Response object: npiRegistryResult
| Field | Type | Description |
|---|---|---|
found, active, deactivated | bool | Registry status of the NPI. |
invalidCheckDigit | bool | True when the NPI fails its check-digit test and cannot be valid. |
status, enumerationType | string | Registry status code and NPI type (NPI-1 individual, NPI-2 organization). |
isOrganization, soleProprietor | bool | Provider type flags. |
name, credential | string | Registered provider name and credential. |
authorizedOfficialName, authorizedOfficialTitle | string | Authorized official, for organizations. |
specialty, licenseNumber, licenseState | string | Primary taxonomy and license. |
practiceAddress, mailingAddress | object | line1, city, state, postalCode, countryCode, telephone. |
enumerationDate, lastUpdated, retrievedOn | datetime | Registry dates and when we retrieved the record. |
submittedName, nameMatched, nameMatchScore | mixed | Comparison against the name you sent, when you sent one. |
industryPayments | array | CMS Open Payments summary by category: label, transactionCount, totalAmount. |
industryPaymentsTotal, industryPaymentsTransactions | number | Open Payments totals. |
message | string | Human-readable summary of the result. |
completed | bool | False when the upstream source was unavailable and the request is queued for retry. |
Pair this endpoint with medicare-enrollment and list-sanctions (which includes the OIG and state exclusion lists) for a complete provider check.
Sample request
Sample response
{
"id": "HqG4GysnqkOESU0DgJhQZAUw",
"request": {
"npi": "1245319599",
"requestDate": "2026-10-06T03:03:13Z",
"requestedServices": "npi-registry"
},
"npiRegistryResult": {
"npi": "1245319599",
"message": "Active",
"found": true,
"deactivated": false,
"invalidCheckDigit": false,
"active": true,
"completed": true,
"status": "A",
"enumerationType": "NPI-1",
"isOrganization": false,
"name": "TEST PROVIDER",
"credential": "M.D.",
"soleProprietor": false,
"specialty": "Hospitalist",
"licenseNumber": "TEST-9001",
"licenseState": "MD",
"practiceAddress": {
"line1": "1 TEST WAY",
"city": "BALTIMORE",
"state": "MD",
"postalCode": "212010000",
"countryCode": "US",
"telephone": "4105550120"
},
"enumerationDate": "2006-05-23T00:00:00",
"lastUpdated": "2019-07-08T00:00:00",
"retrievedOn": "2026-10-06T03:03:13Z",
"industryPayments": [
{ "label": "Consulting fees", "transactionCount": 24, "totalAmount": 71350.00 },
{ "label": "Food and beverage", "transactionCount": 910, "totalAmount": 36711.18 }
],
"industryPaymentsTotal": 150865.17,
"industryPaymentsTransactions": 1038
}
}
Errors
Requests that cannot be processed return HTTP 400 with an object keyed by field name, each listing what was wrong. Authentication, permission and other status codes are covered in the API overview.
This endpoint requires an API key with the Validate permission.
See how this check works in the portal and what it costs: NPI & Medicare Verification