Skip to main content

POST /verify

Verify the license status of a healthcare provider across multiple government data sources in a single API call.

Endpoint

Request headers

Request body

Request parameters

Note on npi and dob: Both are optional but strongly recommended whenever available. Without them, identity resolution relies on name and state alone, which can produce false positives for common names — including false matches against the OIG exclusion list. Supplying npi and/or dob disambiguates the provider and clears same-name collisions.

Response

Success response — 200 OK

Response fields

Status values

Identity resolution

Before verifying license status, VeriflowAPI resolves provider identity by matching the last name exactly, then the first name. First-name matching accepts:
  • Nicknames where one form is a prefix of the other (e.g. “Bob” vs “Robert”)
  • Middle initials included or omitted
  • Hyphenated last names
  • Minor typos in submitted names
It deliberately does not match genuinely different given names that merely look alike (e.g. “John” vs “Joan”, “Satish” vs “Satinder”). Those return not_found rather than a false match — a wrong-person confirmation is worse than a miss. Every successful match reports a match_confidence: Because name-only matching is inherently ambiguous for common names, supply an npi whenever available for high-confidence, exact-identity verification. When ambiguity cannot be resolved, we return not_found.

OIG exclusion matching

The OIG LEIE (List of Excluded Individuals/Entities) is matched by name and then narrowed by the identifiers you supply. Because roughly 90% of LEIE records carry no NPI, name is the primary key — so a common name can collide with an excluded stranger. VeriflowAPI uses npi and dob to resolve those collisions:
  • A matching npi confirms the exclusion — the strongest signal, an exact identity match.
  • A different npi or dob on a same-name record rules it out as a different person, so oig_excluded returns false.
  • A name-only match — no identifier supplied, or none on the LEIE record — is reported conservatively as oig_excluded: true. We would rather surface a possible match for your review than silently clear a real exclusion.
To avoid false positives on common names, supply dob (and npi where you have it) on every check. Most LEIE records carry a date of birth, so a dob clears a same-name stranger even when the record has no NPI.

Sandbox & testing

Test keys (vf_test_) run against the same data and coverage as production — an ordinary provider returns exactly what a live key would, including unsupported_state for states we don’t yet cover. This makes your sandbox integration faithful to production. To exercise every branch of your integration deterministically, use reserved test last names (case-insensitive) on a vf_test_ key. They work in any state and force a specific outcome, similar to test card numbers: To simulate unsupported_state, query any state we don’t cover (e.g. OH) with an ordinary name. These triggers apply only to test keys — on a live key they are treated as ordinary names.

Caching policy

To maximize uptime and minimize response time, VeriflowAPI caches responses according to the following TTL policy: When a response is served from cache, cached will be true and source_live will be false. The cache_expires_at field tells you exactly when fresh data will be fetched. This caching policy means VeriflowAPI maintains 99.9% uptime even when government source sites experience downtime.

Error responses

400 Bad Request

Returned when required parameters are missing or invalid.

401 Unauthorized

Returned when the API key is missing or invalid.

429 Too Many Requests

Returned when you exceed your plan’s rate limit.

503 Service Unavailable

Returned in the rare case that all data sources are unavailable and no cached data exists.

Code examples

Python

Node.js

Ruby