The Propelus API enables one-time verification of healthcare licenses by submitting credential batches (1-100 items) with required headers x-api-key and x-client-id. Requests include credential details and optional metadata. Responses return status codes like 202 (processing), 400-4XX (errors), 429 (rate limit), and 5XX (server errors). Verification results can be retrieved using batch ID or webhooks, with results expiring after 7 days.
Perform one-time verification checks on healthcare licenses, certifications, and registrations.
Review the request and response bodies below to perform primary source verifications.
Looking to enroll a credential in ongoing monitoring? Add a Professional to Monitoring - First Steps
An important note: submitted profession codes must match those in the
Propelus system. To view those codes, utilize the Profession Status Endpoint endpoint.
Authorization
Server URL: https://api.propelus.com POST /v2/credentials
Two security schemes are used together: apiKey and clientId. Both credentials are passed in the request header.
| Header | Location / Value |
| x-api-key | In: header |
| x-client-id | In: header |
Request Body
Content-Type: application/json
Credentials — List of credentials to be processed in batch. Each item requires a credential; identity attributes such as name, dob and ssn improve match accuracy. Constraint: 1 <= items <= 100.
Metadata (optional, object) — Custom metadata to be stored with the batch request. Identifies the whole batch.
Example Request (JSON)
const body = JSON.stringify({
"credentials": [
{
"credential": {
"number": "K5382916",
"code": "RN",
"state": "CA"
},
"name": {
"first": "Elena",
"last": "Vasquez"
}
},
{
"credential": {
"number": "T0479261",
"code": "MD",
"state": "NY"
},
"customProperties": {
"id": "myId",
"requestedBy": "adminUser"
}
}
],
"metadata": {
"requestId": "batch-001",
"source": "internal-system"
}
})
fetch("https://api.propelus.com/v2/credentials", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": "bajeWgvgvK3eU0au63bzv820Vh0r0iqta7Nj3R1O",
"x-client-id": "bajeWgvgvK3eU0au63bzv820Vh0r0iqta7Nj3R1O"
},
body
})
Example Request (cURL)
curl -X POST "https://api.propelus.com/v2/credentials" \
-H "x-api-key: [customer API key]" \
-H "x-client-id: [customer client ID" \
-H "Content-Type: application/json" \
-d '{
"credentials": [
{
"credential": {
"number": "K5382916",
"code": "RN",
"state": "CA"
},
"name": {
"first": "Elena",
"last": "Vasquez"
}
},
{
"credential": {
"number": "T0479261",
"code": "MD",
"state": "NY"
},
"customProperties": {
"id": "myId",
"requestedBy": "adminUser"
}
}
],
"metadata": {
"requestId": "batch-001",
"source": "internal-system"
}
}'
Response Body
The endpoint returns the following HTTP status codes, each with an application/json body:
202, 400, 401, 403, 404, 429, 4XX, and 5XX.
202 — Accepted (processing)
{
"code": "processing",
"detail": "string",
"batchId": "5579c111-9c50-47e2-af92-f16d52e63189",
"resultsUrl": "string"
}
400 / 401 / 403 / 404 / 4XX — Error
{
"status": 400,
"code": "missing_fields",
"detail": "string",
"errors": [
{
"detail": "string",
"pointer": "string",
"parameter": "string",
"header": "string",
"code": "string"
}
]
}
429 — Too Many Requests
{
"status": 429,
"detail": "string",
"code": "f5d62b05-370e-48be-a755-8675ca146431"
}
5XX — Server Error
{
"status": 500,
"detail": "string",
"code": "unexpected_error"
}
For additional detailed information such as TypeScript definitions and request body structure, see the Propelus APIv2 developer's documentation page on this topic.
Related Endpoint
Get Credentials Batch by ID : Retrieve credential verification results for a batch. Utilize the batch ID provided during the initial request to receive results for the batch. Propelus also provides webhook events for those looking to receive the responses as they are ready rather than polling. Note: results expire after 7 days.