Provider Credentialing Automation — NPI, PECOS & LEIE via API
Provider credentialing requires collecting and verifying data from multiple sources: NPI status from NPPES, Medicare enrollment from PECOS, exclusion status from the OIG LEIE, state licensure, and more. Gathering this data manually for each provider is slow and error-prone. The NPI Registry API automates the NPI, PECOS, and LEIE components of credentialing — returning all three in a single REST call per provider, with defined monthly quotas for running against a full roster.
Manual credentialing vs. API automation
Before — manual (per provider)
After — API (per provider)
findbyNPIId with NPIROI at scale
| Roster size | Manual time | API time | Time saved |
|---|---|---|---|
| 50 providers | ~50 minutes | ~5 seconds | ~50 minutes |
| 500 providers | ~8 hours | ~1 minute | ~8 hours |
| 5,000 providers | ~4 days | ~10 minutes | ~4 days |
| 25,000 providers | Weeks | ~1 hour | Weeks |
Assumes ~1 min per provider for manual lookup across 3 portals (NPPES + PECOS + OIG LEIE). API at 1 req/sec on Starter plan with 100ms sleep between requests.
What a complete credentialing verification covers
Credentialing standards (NCQA, URAC, Joint Commission) require primary source verification of specific data elements. Here is which elements the NPI Registry API can automate, and which require other sources:
| Credentialing element | NPI Registry API | Other source required |
|---|---|---|
| NPI status (active/inactive) | Yes — findbyNPIId confirms active status |
— |
| Primary taxonomy / specialty | Yes — taxonomy code and description returned | — |
| Practice address | Yes — primary and mailing addresses | — |
| Medicare enrollment (PECOS) | Yes — enrollment ID, PAC ID, provider type, in_pecos flag |
— |
| OIG LEIE exclusion | Yes — in_leie flag in every response |
SAM.gov, state Medicaid exclusion lists (separate) |
| State licensure | No | State medical board verification required |
| DEA registration | No | DEA database verification required |
| Malpractice claims history | No | NPDB query required |
What a single API call returns per provider
One findbyNPIId call returns everything you need for the NPI, PECOS,
and LEIE steps of credentialing:
curl -X GET 'https://restapi.npidataservices.com/api/v1/findbyNPIId?NPIId=1053500652' -H 'ApiKey: YOUR_API_KEY'
// Response — credentialing fields highlighted:
{
"npi": 1053500652,
"status": "success",
"entity_type_cd": "2",
"organization": [{ "org_name": "LEVEL HOME HEALTH INC." }],
"taxonomy": [{
"taxonomy_code": "251E00000X",
"taxonomy_desc": "Agencies: Home Health", // ✓ specialty confirmed
"prim_taxonomy_switch": "Y"
}],
"location": [{
"addr_fl": "260 S LOS ROBLES AVE STE 101",
"addr_city": "PASADENA",
"addr_state": "CA",
"addr_post_cd": "911012869",
"telephone": "9492060691"
}],
"entity_type": [{
"in_pecos": "Y", // ✓ enrolled in Medicare
"in_leie": "N", // ✓ not on OIG exclusion list
"enum_date": "2007-10-18"
}],
"medicare_enrlmt": [{
"enrlmt_id": "O20080407000727", // ✓ enrollment ID
"pac_id": "4284711805", // ✓ PAC ID
"provider_type_dec": "PART A PROVIDER - HOME HEALTH AGENCY",
"state_cd": "CA"
}]
}
Automated credentialing pipeline in Python
This example processes a provider roster and outputs a credentialing report with pass/fail status and flags for manual review:
import time, requests, csv
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://restapi.npidataservices.com/api/v1/findbyNPIId"
def credential_provider(npi):
"""Verify one provider's NPI, PECOS, and LEIE status."""
r = requests.get(BASE_URL,
params={"NPIId": npi},
headers={"ApiKey": API_KEY},
timeout=5)
if r.status_code == 404:
return {"npi": npi, "status": "INVALID_NPI", "flags": ["NPI not found"]}
r.raise_for_status()
d = r.json()
entity = (d.get("entity_type") or [{}])[0]
enrlmt = (d.get("medicare_enrlmt") or [{}])[0]
tax = (d.get("taxonomy") or [{}])[0]
flags = []
if entity.get("in_leie") == "Y":
flags.append("OIG LEIE EXCLUSION")
if entity.get("in_pecos") != "Y":
flags.append("Not PECOS enrolled")
return {
"npi": npi,
"status": "FLAGGED" if flags else "PASS",
"flags": flags,
"taxonomy": tax.get("taxonomy_desc", ""),
"in_pecos": entity.get("in_pecos"),
"in_leie": entity.get("in_leie"),
"enrlmt_id": enrlmt.get("enrlmt_id", ""),
"pac_id": enrlmt.get("pac_id", ""),
"provider_type": enrlmt.get("provider_type_dec", ""),
}
# Process a roster
roster = ["1053500652", "1184713042", "1023374782"]
results = []
for npi in roster:
result = credential_provider(npi)
results.append(result)
time.sleep(0.1) # pace requests within your monthly quota
# Write credentialing report
with open("credentialing_report.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=results[0].keys())
writer.writeheader()
writer.writerows(results)
# Print flagged providers for review
flagged = [r for r in results if r["status"] == "FLAGGED"]
print(f"\n{len(flagged)} provider(s) flagged for review:")
for r in flagged:
print(f" NPI {r['npi']}: {', '.join(r['flags'])}")
What the output looks like
| NPI | Status | Flags | PECOS | LEIE | Taxonomy |
|---|---|---|---|---|---|
1053500652 | PASS | — | Y | N | Home Health Agency |
1184713042 | PASS | — | Y | N | Internal Medicine |
1023374782 | FLAGGED | Not PECOS enrolled | N | N | Home Health |
Providers flagged with "OIG LEIE EXCLUSION" require immediate action before any billing or engagement. Providers flagged with "Not PECOS enrolled" cannot bill Medicare and should be investigated if they are expected to be Medicare-enrolled.
Ongoing credentialing vs. initial credentialing
The NPI Registry API supports both:
- Initial credentialing at onboarding. When a new provider applies,
run
findbyNPIIdto instantly verify NPI status, taxonomy, PECOS enrollment, and LEIE status before manual review steps begin. This replaces manual NPPES web lookups, PECOS portal checks, and OIG web screenings — all with a single API call. - Ongoing re-credentialing (monthly LEIE monitoring). OIG recommends
monthly LEIE screening for all employees and contractors. Schedule a monthly batch
job that runs your full provider roster through
findbyNPIIdand alerts on any newin_leie: "Y"flags. The Pro plan's 125,000 requests/month covers monthly screening of rosters up to 25,000 providers. - Scheduled re-verification. NCQA credentialing standards require re-credentialing every 2–3 years. Automate the data-collection step by re-running your roster through the API quarterly, and alert on any changes to taxonomy, PECOS status, or LEIE status since the last run.
Why not use the free NPPES API for credentialing?
The free NPPES API at npiregistry.cms.hhs.gov returns only raw NPPES
fields — NPI, name, taxonomy, and address. It does not return:
- Medicare PECOS enrollment status, enrollment ID, or PAC ID
- OIG LEIE exclusion flag
To get all three from free government sources, you would need to separately query NPPES, download and query the PECOS enrollment dataset, and download and query the OIG LEIE file — maintaining and joining three separate data sources. The NPI Registry API returns all three in a single REST call, eliminating the integration complexity. See the full NPPES API vs NPI Registry API comparison.
Request quota planning for credentialing workloads
| Plan | Monthly requests | Typical credentialing fit |
|---|---|---|
| Free | 1,000 / month | Pilot or small team testing the credentialing workflow |
| Starter ($490/yr) | 12,500 / month | Monthly LEIE screening for rosters up to 12,500 providers; initial credentialing for medium-sized groups |
| Pro ($1,490/yr) | 125,000 / month | Large health systems, staffing platforms, or MCOs with monthly screening and frequent re-credentialing |
| Enterprise | Custom | Any volume; dedicated SLA for compliance-critical workflows |
Related guides
- PECOS API — Medicare enrollment lookup: enrollment ID, PAC ID, provider type, and
in_pecosflag - LEIE API — OIG exclusion screening:
in_leieflag in every NPI lookup - NPI Bulk Lookup API — processing a full provider roster in one batch job
- NPPES API Down? — reliability patterns for compliance-critical credentialing pipelines
- NPPES API vs NPI Registry API — full comparison of data and reliability for credentialing use cases
- Provider Verification API — point-of-care and event-triggered verification using the same one-call API pattern
- Provider Onboarding Automation — API-driven onboarding pipeline that feeds initial credentialing records
- OIG Exclusion Screening API — monthly LEIE re-screening automation after initial credentialing
- Healthcare Provider Data API — full enrichment field reference for data collected at credentialing
The NPI Registry API returns NPI status, PECOS enrollment, and OIG LEIE exclusion in a single call per provider — no joining across government portals. Start a free trial to test the response format on your provider roster.
Explore the API & start a free trial →Provider Signals Risk gives credentialing and CVOs a dashboard for ongoing OIG exclusion screening and NPPES deactivation alerts across an existing provider roster — no API integration, no code, no data pipeline to maintain.
Explore Provider Signals for credentialing →Frequently asked questions
What data does a credentialing API need to return per provider?
NPI status, primary taxonomy, practice address, Medicare PECOS enrollment status,
and OIG LEIE exclusion status. The NPI Registry API returns all five in a single
findbyNPIId call.
How often should credentialing data be re-verified?
NCQA/URAC standards require re-credentialing every 2–3 years. OIG recommends monthly
LEIE screening. For directory accuracy, re-verify NPI data quarterly. All three
cadences are supported on Starter and Pro plans.
Can I automate provider credentialing with an API?
Yes — NPI validation, PECOS enrollment, and LEIE screening can all be automated via
the NPI Registry API. State licensure, DEA registration, and NPDB queries require
separate primary source verification from those respective sources.
What is the difference between credentialing and privileging?
Credentialing verifies qualifications and enrollment — including NPI, PECOS, and LEIE
data (automatable). Privileging grants specific clinical privileges at a facility based
on those credentials (a human decision). The API automates the data-collection step
of credentialing.