Snipget.ai

Validate an NPI

Exact
healthcare_npi_validate

Deterministic and authoritative — the canonical answer for this input.

Validate a single US National Provider Identifier (NPI) using the Luhn algorithm with the CMS 80840 prefix (per the NPI Final Rule, 45 CFR Part 162). Accepts string or integer input; Excel-style float strings like '1234567893.0' are tolerated. Returns `{npi, is_valid, checksum_valid, input_was_clean}` in `result`, plus `why_invalid` on invalid verdicts (entity type is registry data the number itself doesn't carry — use healthcare_npi_lookup for it). Confidence is 1.0 on a passing checksum, 0.0 on a failing one. Processing multiple inputs? Use `healthcare_npi_validate_batch` to do up to 1000 in one call.

Parameters

npistringrequired

NPI value to validate. Accepts string or integer.

Call it

curl -X POST https://api.snipget.ai/v1/healthcare/npi/validate \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"npi":"1234567893"}'

The Batch tab sends up to 1000 inputs in one call via /v1/healthcare/npi/validate/batch.

Example response

{
  "npi": 1234567893,
  "is_valid": true,
  "checksum_valid": true,
  "input_was_clean": true
}

FAQ

Why not just check the NPI myself?

Every NPI carries a built-in check digit (a Luhn checksum over the CMS 80840 prefix). This verifies that digit, so it catches typos and transposed numbers a person or a model would miss.

Does it confirm the provider is real or active?

No. This only checks the math of the number, not whether anyone is enrolled under it. To pull the real provider record (name, status, specialty), use the NPI lookup tool instead. The answer here is deterministic and authoritative for the check digit.

What formats does it accept?

A 10-digit value as a string or an integer. Excel-style values like '1234567893.0' are tolerated, the trailing '.0' is stripped before checking.

What happens if the number is invalid?

It returns confidence 0 with is_valid false and a why_invalid reason in the result, never an error. So a bad number is a normal, readable result you can branch on.

Related tools