One network answer. Three ways to get it.
Look up a provider, check a provider against a plan, or take the full set as data files. Each answer arrives with its source type, plan year and the date we read it.
Send an NPI. Get every plan that lists the provider.
One request returns the provider's profile and each marketplace and Medicare Advantage plan whose directory lists them. Each plan comes with its own evidence.
Ask about one pair, or a hundred at once.
Plan Check answers one question: does this plan's directory list this provider? Send a single pair while a user waits, or up to 100 pairs in one batch call.
curl https://api.inplan.io/v1/check \
-H "Authorization: Bearer $INPLAN_KEY" \
-G -d npi=1184617268 -d plan_id=H2526-001-000{
"in_network": true,
"answer": "listed",
"plan": { "plan_name": "DEVOTED CHOICE 001 OH (PPO)", "plan_year": 2027 },
"evidence": [{
"plan_year": 2027,
"accepting_new_patients": true,
"source": { "type": "plan_directory", "as_of": "2026-10-29" }
}],
"request_id": "req_7f3a2c"
}curl https://api.inplan.io/v1/check/batch \ -H "Authorization: Bearer $INPLAN_KEY" \ -H "Content-Type: application/json" \ -d '{ "items": [ { "npi": "1184617268", "plan_id": "H2526-001-000" }, { "npi": "1184617268", "plan_id": "<plan_id>" } ] }'
{
"results": [
{ "answer": "listed", "in_network": true, "evidence": [ … ] },
{ "answer": "not_found", "in_network": null, "evidence": [] }
],
"request_id": "req_…"
}The same answers, delivered as files.
Load provider-plan links into your own warehouse when you need to join them with your data. Files carry the same fields and evidence as API answers, so a row in your table and a call to the API always agree on what they mean.
| State file | One state, every plan we hold there | $299 |
|---|---|---|
| National file | Every state and plan we hold | $1,499 |
| Refresh | A new copy of your files each time we refresh the data, billed monthly | $199 /mo |
Three marks. One meaning each.
Every answer uses the same small vocabulary, in the API, in data files and in the playground. Your product can map each mark to one clear message.
"answer": "listed"
"answer": "not_found"
| FIELD | WHAT IT TELLS YOU | EXAMPLE |
|---|---|---|
| plan_year | The plan year the listing applies to | 2027 |
| network_tier | The tier the directory gives the provider | PARTICIPATING |
| accepting_new_patients | Whether the directory marks the provider as open to new patients | true |
| source.type | Insurer directory, plan directory, provider registry or plan catalog | plan_directory |
| source.as_of | The date we read that source | 2026-10-29 |
Read, match, date, answer.
Each answer passes through four steps. The date of the source travels with the row from the first step to your screen.
- 01 · READWe read network directories published by insurers, national provider registries and public plan catalogs.
- 02 · MATCHWe match each listing to one provider record by NPI and to one plan by its plan ID and plan year.
- 03 · DATEEvery row keeps the date we read its source. That date is the as_of value in your answer.
- 04 · ANSWERThe API returns listed with its evidence, or not found. Silence in a directory never becomes a "no".
Try a real answer in a minute.
The playground opens with sample NPIs and plan IDs already filled in. Make a call, read the evidence, then get your own key.