Provider Onboarding Automation — NPI, PECOS & LEIE at Day One
Every new provider joining a network, health plan, or platform requires the same set of data: active NPI, primary taxonomy, practice address, Medicare enrollment status, and OIG exclusion status. Collecting these manually means opening NPPES, the PECOS web portal, and the OIG LEIE website for each new provider — typically 10–15 minutes per provider. The NPI Registry API retrieves all five data points in a single REST call, making it possible to complete the data-collection step of provider onboarding in under one second per provider.
Provider onboarding checklist — what the API covers
| Onboarding step | API automated? | Endpoint |
|---|---|---|
| Confirm NPI is active in the registry | Yes | findbyNPIId — 200 response = active NPI |
| Collect primary taxonomy and specialty | Yes | taxonomy_code, taxonomy_desc in response |
| Collect practice and mailing address | Yes | location array in response |
| Verify Medicare PECOS enrollment | Yes | in_pecos, enrlmt_id, pac_id |
| Screen OIG LEIE exclusion list | Yes | in_leie flag in every response |
| Collect authorized official (organizations) | Yes | organization.auth_official_first_name etc. |
| State licensure verification | No | State medical board — separate primary source |
| DEA registration | No | DEA database — separate verification |
Onboarding API call and response
curl -X GET 'https://restapi.npidataservices.com/api/v1/findbyNPIId?NPIId=1053500652' -H 'ApiKey: YOUR_API_KEY'
# All fields collected at onboarding — one call:
{
"npi": 1053500652,
"status": "success",
"organization": [{ "org_name": "LEVEL HOME HEALTH INC.",
"auth_official_first_name": "KELLY",
"auth_official_last_name": "DECKELMAN",
"auth_official_title": "ADMINISTRATOR" }],
"taxonomy": [{ "taxonomy_code": "251E00000X",
"taxonomy_desc": "Agencies: Home Health",
"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", "in_leie": "N",
"enum_date": "2007-10-18" }],
"medicare_enrlmt": [{ "enrlmt_id": "O20080407000727",
"pac_id": "4284711805",
"provider_type_dec": "PART A PROVIDER - HOME HEALTH AGENCY",
"state_cd": "CA" }]
}
Automated onboarding pipeline (Python)
This pipeline processes a batch of new providers, validates each against the API, and writes a structured onboarding record ready to load into your provider master data system:
import time, requests, csv
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://restapi.npidataservices.com/api/v1/findbyNPIId"
def onboard_provider(npi):
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", "block_reason": "NPI not in registry"}
r.raise_for_status()
d = r.json()
entity = (d.get("entity_type") or [{}])[0]
tax = (d.get("taxonomy") or [{}])[0]
loc = (d.get("location") or [{}])[0]
enrlmt = (d.get("medicare_enrlmt") or [{}])[0]
org = (d.get("organization") or [{}])[0]
ind = (d.get("individual") or [{}])[0]
# Block onboarding if excluded from federal programs
if entity.get("in_leie") == "Y":
return {"npi": npi, "status": "BLOCKED", "block_reason": "OIG LEIE exclusion"}
name = org.get("org_name") or (
f"{ind.get('first_name','')} {ind.get('last_name','')}".strip()
)
return {
"npi": npi,
"status": "APPROVED",
"name": name,
"taxonomy_code": tax.get("taxonomy_code", ""),
"taxonomy_desc": tax.get("taxonomy_desc", ""),
"city": loc.get("addr_city", ""),
"state": loc.get("addr_state", ""),
"zip": loc.get("addr_post_cd", ""),
"phone": loc.get("telephone", ""),
"in_pecos": entity.get("in_pecos", ""),
"enrlmt_id": enrlmt.get("enrlmt_id", ""),
"pac_id": enrlmt.get("pac_id", ""),
"provider_type": enrlmt.get("provider_type_dec", ""),
"enum_date": entity.get("enum_date", ""),
}
# New provider applications received today
new_providers = ["1053500652", "1184713042", "1023374782"]
results = []
for npi in new_providers:
result = onboard_provider(npi)
results.append(result)
print(f"NPI {npi}: {result['status']}")
time.sleep(0.1)
# Write onboarding records for approved providers
approved = [r for r in results if r["status"] == "APPROVED"]
blocked = [r for r in results if r["status"] != "APPROVED"]
with open("onboarding_records.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=results[0].keys())
writer.writeheader()
writer.writerows(approved)
print(f"\n{len(approved)} approved, {len(blocked)} blocked for review.")
Onboarding flow
Entire flow completes in < 1 second per provider. State licensure and DEA verification run as separate parallel steps.
Ongoing verification after onboarding
Onboarding verification is a point-in-time check. Provider data changes after the initial onboarding — enrollments lapse, exclusions are added, addresses change. A complete provider lifecycle management workflow includes:
- Monthly LEIE re-screening. OIG recommends monthly for all employees
and contractors. Run your full provider roster through
findbyNPIIdmonthly and alert on any newin_leie: "Y"flags. - Quarterly NPI and taxonomy re-verification. Confirm that NPI is still active and taxonomy has not changed — relevant for directory accuracy and network configuration.
- Re-credentialing at 2–3 year intervals. NCQA and URAC require full re-credentialing on a defined schedule — automate the data-collection step with a batch API run.
See Provider Credentialing Automation for the full re-credentialing pipeline.
Related guides
- Provider Credentialing Automation — full credentialing pipeline for ongoing re-verification
- Provider Verification API — real-time point-of-care and batch verification
- OIG Exclusion Screening API — monthly LEIE screening automation
- PECOS API — Medicare enrollment lookup at onboarding
- LEIE API — OIG exclusion flag details and scope
- NPI Bulk Lookup API — batch onboarding for large provider cohorts
- Healthcare Provider Data API — full enrichment field reference for data collected at onboarding
- Provider Directory API — onboarding records feed into the directory sync pipeline
- Medicare Enrollment Verification — pre-claim PECOS enrollment check after provider onboarding
The NPI Registry API returns NPI status, taxonomy, address, PECOS enrollment, and OIG LEIE exclusion in a single call — the complete data-collection step of onboarding in under one second. Start a free trial to test the response format.
Explore the API & start a free trial →Frequently asked questions
What is provider onboarding automation?
Replacing manual portal lookups at the start of a provider relationship. A single
findbyNPIId call returns NPI status, taxonomy, address, PECOS enrollment,
and LEIE exclusion — the data-collection step of onboarding in under one second.
What data should I collect at provider onboarding?
NPI status, primary taxonomy, practice address, Medicare PECOS enrollment status,
and OIG LEIE exclusion status. State licensure, DEA, and malpractice history require
separate primary source verification.
How long does API-based provider onboarding take?
Under one second per provider for the NPI, PECOS, and LEIE steps. Manual lookups
across three portals take 10–15 minutes per provider for the same data.
Can I automate provider onboarding for a large network?
Yes. Starter (12,500 req/month) covers most networks. Pro (125,000 req/month) fits
large health systems and staffing platforms. Enterprise provides custom quotas and
a dedicated SLA.