POST /verify
Verify the license status of a healthcare provider across multiple government data sources in a single API call.Endpoint
Request headers
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer YOUR_API_KEY |
Content-Type | Yes | application/json |
Request body
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
first_name | string | Yes | Provider’s first name. Fuzzy matching handles minor typos and variations. |
last_name | string | Yes | Provider’s last name. |
state | string | Yes | Two-letter US state code (e.g. CA, TX, NY). The state where the license was issued. |
npi | string | No | 10-digit National Provider Identifier. Strongly recommended — significantly improves match accuracy. |
dob | string | No | Date of birth in ISO 8601 format (YYYY-MM-DD). Used to disambiguate providers with similar names. |
npi is optional, we strongly recommend including it whenever available. Without an NPI, identity resolution relies solely on name and state matching, which can produce false positives for common names.
Response
Success response — 200 OK
Response fields
| Field | Type | Description |
|---|---|---|
verified | boolean | Top-level pass/fail. true if provider was found, license is active, and no OIG exclusion exists. |
status | string | Current license status. See Status Values below. |
name | string | Provider’s full name as it appears in source records. |
license_number | string | State license number. |
state | string | Full state name. |
expiry_date | string | License expiry date in ISO 8601 format (YYYY-MM-DD). |
disciplinary_flags | boolean | true if any disciplinary actions, sanctions, or malpractice findings are on record. |
oig_excluded | boolean | true if provider appears on the HHS OIG exclusion list. |
sources_checked | array | List of data sources checked in this request. |
source_live | boolean | true if data was fetched live from source. false if served from cache. |
cached | boolean | Whether this response was served from cache. |
cache_expires_at | string | ISO 8601 timestamp when this cached result will be refreshed. |
checked_at | string | ISO 8601 timestamp of when this verification was performed. |
verification_id | string | Unique identifier for this verification. Use for audit trail and certificate retrieval. |
certificate_hash | string | SHA256 hash of the signed verification certificate. |
Status values
| Status | Description | verified value |
|---|---|---|
active | License is current and in good standing | true |
inactive | License exists but is not currently active | false |
suspended | License has been temporarily suspended | false |
expired | License has passed its expiry date | false |
revoked | License has been permanently revoked | false |
not_found | No matching provider found in sources checked | false |
Identity resolution
VeriflowAPI uses fuzzy matching to resolve provider identity before verifying license status. This handles:- Name variations (e.g. “Bob” vs “Robert”)
- Middle initials included or omitted
- Hyphenated last names
- Minor typos in submitted names
npi and dob as tiebreakers. If ambiguity cannot be resolved, we return a not_found status with a descriptive error message.
Caching policy
To maximize uptime and minimize response time, VeriflowAPI caches responses according to the following TTL policy:| Data type | Cache TTL |
|---|---|
| License status (active/inactive/suspended/expired/revoked) | 24 hours |
| Static info (name, license number, school) | 30 days |
| OIG exclusion status | 12 hours |
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.