v1.0 β€” All Systems Operational

API Documentation

Verify healthcare licenses across all 50 states with a single API call. RN, LPN, NP, PA, MD, and DO β€” powered by official government data.

⚑
<100ms
Response Time
πŸ—„οΈ
5.3M+
License Records
πŸ‡ΊπŸ‡Έ
All 50
States Covered

Getting Started

The API-Cert API lets you verify healthcare professional licenses in real-time. All requests are made to the following base URL:

Base URL
https://api.api-cert.com

Note: The production domain api.api-cert.com currently proxies to api-cert-api.onrender.com. Both work, but use the canonical domain for production integrations.

To get started:

  1. Register for a free API key (50 verifications/month)
  2. Include your key in the X-API-Key header
  3. Make your first verification request

Authentication

All authenticated endpoints require an API key passed via the X-API-Key header.

Header
X-API-Key: your_api_key_here

To get your key, register with the /v1/register endpoint or email us for a free key. The key is shown only once upon registration β€” store it securely.

Register

POST/v1/registerPublic β€” no auth required

Create a new account and receive a free API key. The key is displayed only once in the response.

Request Body

ParameterTypeRequiredDescription
emailstringrequiredYour email address
namestringoptionalYour full name
companystringoptionalYour organization
Example Request
curl -X POST https://api.api-cert.com/v1/register \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "name": "Jane Smith",
    "company": "HealthTech Inc"
  }'
Response β€” 201 Created
{
  "api_key": "ac_live_abc123...",
  "key_prefix": "ac_live_abc",
  "tier": "free",
  "monthly_quota": 50,
  "rate_limit_rpm": 10,
  "message": "Store this key securely β€” it will not be shown again."
}

Verify License

POST/v1/verifyRequires API key

Verify a single healthcare professional's license. Returns the license status, expiration, and results of exclusion checks against federal databases.

Request Body

ParameterTypeRequiredDescription
license_typestringrequiredOne of: RN, LPN, NP, PA, MD, DO
statestringrequired2-letter state code (e.g. CA, NY, TX)
last_namestringrequiredProvider's last name
first_namestringoptionalProvider's first name (improves accuracy)
license_numberstringoptionalLicense number if known (improves accuracy)
Example Request
curl -X POST https://api.api-cert.com/v1/verify \
  -H "X-API-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "license_type": "RN",
    "state": "MA",
    "last_name": "Chen",
    "first_name": "Sarah"
  }'
Response β€” 200 OK
{
  "verified": true,
  "license_type": "RN",
  "state": "MA",
  "full_name": "SARAH J. CHEN",
  "license_number": "RN298741",
  "status": "ACTIVE",
  "expiration_date": "2027-06-30",
  "issue_date": "2019-08-15",
  "oig_excluded": false,
  "sam_excluded": false,
  "cms_precluded": false,
  "disciplinary_flag": false,
  "npi_number": "1234567890",
  "latency_ms": 4
}

Bulk Verify

POST/v1/verify/bulkRequires API key

Submit up to 100 verification requests in a single call. Returns a job ID that you can poll for results. Requires Redis-backed async processing.

Request Body

ParameterTypeRequiredDescription
requestsarrayrequiredArray of verification objects (max 100). Each object follows the same schema as /v1/verify.
Example Request
curl -X POST https://api.api-cert.com/v1/verify/bulk \
  -H "X-API-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "requests": [
      { "license_type": "RN", "state": "CA", "last_name": "Smith" },
      { "license_type": "MD", "state": "NY", "last_name": "Johnson", "first_name": "Robert" }
    ]
  }'
Response β€” 202 Accepted
{
  "job_id": "bulk_abc123",
  "status": "processing",
  "total_requests": 2,
  "message": "Poll GET /v1/verify/bulk/bulk_abc123 for results."
}

State Coverage

GET/v1/statesRequires API key

Returns the coverage matrix showing which license types are supported in each state, along with the data source and last update timestamp.

Example Request
curl https://api.api-cert.com/v1/states \
  -H "X-API-Key: your_api_key_here"
Response β€” 200 OK
{
  "states": {
    "CA": {
      "supported_types": ["RN", "LPN", "NP", "PA", "MD", "DO"],
      "source": "California DCA",
      "last_updated": "2026-03-15T06:00:00Z"
    },
    "NY": {
      "supported_types": ["RN", "LPN", "NP", "PA", "MD", "DO"],
      "source": "NYSED Office of the Professions",
      "last_updated": "2026-03-15T06:00:00Z"
    }
  }
}

Upgrade Tier

POST/v1/upgradeRequires API key

Initiate a Stripe Checkout session to upgrade your subscription tier. Returns a URL to redirect the user to complete payment.

Request Body

ParameterTypeRequiredDescription
tierstringrequiredOne of: 'starter', 'growth', 'scale'
success_urlstringoptionalURL to redirect after successful payment
cancel_urlstringoptionalURL to redirect if user cancels
Response β€” 200 OK
{
  "checkout_url": "https://checkout.stripe.com/c/pay/cs_live_...",
  "tier": "starter",
  "price": "$99/mo"
}

Usage Stats

GET/v1/usageRequires API key

Returns your current billing period usage statistics including requests made, quota remaining, and rate limit status.

Example Request
curl https://api.api-cert.com/v1/usage \
  -H "X-API-Key: your_api_key_here"
Response β€” 200 OK
{
  "tier": "free",
  "period_start": "2026-03-01",
  "period_end": "2026-03-31",
  "requests_used": 12,
  "requests_remaining": 38,
  "monthly_quota": 50,
  "rate_limit_rpm": 10
}

Code Examples

Complete examples showing registration and license verification.

cURL

Register + Verify
# 1. Register for an API key
curl -X POST https://api.api-cert.com/v1/register \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

# Save the api_key from the response, then:

# 2. Verify a license
curl -X POST https://api.api-cert.com/v1/verify \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "license_type": "RN",
    "state": "CA",
    "last_name": "Smith",
    "first_name": "Jane"
  }'

Python

python β€” requests
import requests

BASE = "https://api.api-cert.com"

# 1. Register
reg = requests.post(f"{BASE}/v1/register", json={
    "email": "[email protected]"
})
api_key = reg.json()["api_key"]

# 2. Verify a license
headers = {"X-API-Key": api_key}
resp = requests.post(f"{BASE}/v1/verify", headers=headers, json={
    "license_type": "RN",
    "state": "CA",
    "last_name": "Smith",
    "first_name": "Jane"
})

result = resp.json()
print(f"Status: {result['status']}")        # ACTIVE
print(f"OIG Excluded: {result['oig_excluded']}")  # False
print(f"Latency: {result['latency_ms']}ms") # 4

Node.js

node β€” fetch
const BASE = "https://api.api-cert.com";

// 1. Register
const reg = await fetch(`${BASE}/v1/register`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ email: "[email protected]" })
});
const { api_key } = await reg.json();

// 2. Verify a license
const resp = await fetch(`${BASE}/v1/verify`, {
  method: "POST",
  headers: {
    "X-API-Key": api_key,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    license_type: "RN",
    state: "CA",
    last_name: "Smith",
    first_name: "Jane"
  })
});

const result = await resp.json();
console.log(`Status: ${result.status}`);
console.log(`OIG Excluded: ${result.oig_excluded}`);

Rate Limits & Pricing

All plans include access to every endpoint. Rate limits are enforced per-minute. When you exceed your quota or rate limit, the API returns 429 Too Many Requests.

TierPriceMonthly QuotaRate Limit
Free$050 requests10 RPM
Starter$99/mo500 requests60 RPM
Growth$299/mo2,000 requests120 RPM
Scale$799/mo10,000 requests300 RPM

Upgrade programmatically via POST /v1/upgrade or contact us for enterprise volume.

Status Values

The status field in verification responses indicates the current state of the license. Possible values:

ACTIVE

License is current and in good standing. The provider is authorized to practice.

CONDITIONAL

License is active but has conditions, restrictions, or a probationary status attached.

INACTIVE

License exists but is not currently active. The provider may have voluntarily deactivated or failed to renew.

EXPIRED

License has passed its expiration date and has not been renewed.

SUSPENDED

License has been temporarily suspended by the state board, often pending investigation or disciplinary action.

REVOKED

License has been permanently revoked by the state board. The provider is not authorized to practice.

UNKNOWN

The license was found but the status could not be definitively determined from the source data.

UNVERIFIED

No matching license record was found. The provider may not hold a license of this type in this state.

Error Handling

The API uses standard HTTP status codes. Errors return a consistent JSON structure:

Error Response Format
{
  "error": "Descriptive error message",
  "code": "ERROR_CODE",
  "status": 401
}
401Unauthorized

Missing or invalid API key. Check your X-API-Key header.

429Too Many Requests

Rate limit or monthly quota exceeded. Upgrade your tier or wait for the next billing period.

400Bad Request

Invalid or missing parameters. Check the request body against the endpoint schema.

Data Sources

API-Cert aggregates data from authoritative government sources to provide comprehensive verification:

  • β€’State Licensing Boards β€” Official license records from each state's board of nursing, medical board, or equivalent authority.
  • β€’NPPES (NPI Registry) β€” National Plan and Provider Enumeration System for NPI number cross-referencing.
  • β€’OIG LEIE β€” Office of Inspector General's List of Excluded Individuals/Entities.
  • β€’SAM.gov β€” System for Award Management exclusion records.
  • β€’CMS Preclusion List β€” Centers for Medicare & Medicaid Services preclusion database.

Data is refreshed daily. Use the GET /v1/states endpoint to see per-state data source details and last update timestamps.

Ready to get started?

Get your free API key and start verifying healthcare licenses in minutes. No credit card required. 50 free verifications per month.

Or register via the API:

curl -X POST https://api.api-cert.com/v1/register -H "Content-Type: application/json" -d '{"email":"[email protected]"}'