Introduction
Welcome to the Safe Hiring worldwide API. You can use our API to access all background check and identity verification functionalities, allowing you to integrate powerful screening capabilities directly into your ATS, HRIS, or custom platform.
https://api.safehirings.com/v1
The API is organized around REST, uses standard HTTP response codes, and returns JSON-encoded responses.
Authentication
Safe Hiring worldwide uses API keys to allow access to the API. You can view your API keys in your dashboard settings.
Your API key carries many privileges, so be sure to keep it secret! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, etc.
Authorization: Bearer sk_live_4eC39HqLyjWDarjtT1zdp7dc Content-Type: application/json
Candidates
Create a candidate object to initiate a background check. The candidate will receive an email notification to consent to the verification process.
{
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone": "+15551234567",
"dob": "1990-05-15",
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"zip": "10001",
"country": "US"
},
"tags": ["engineering","senior"]
}
Parameters
| Field | Type | Description |
|---|---|---|
| first_name Req | string | The candidate's legal first name. |
| email Req | string | A valid email address for the candidate. |
| dob Req | date | Date of birth (YYYY-MM-DD) required for identity checks. |
| tags | array[string] | Custom metadata to tag the candidate. |
{
"id": "cand_abc123xyz",
"object": "candidate",
"created_at": 1698765432,
"status": "pending_consent"
}
Screenings
Once a candidate is created, request a specific type of screening package (e.g., Criminal, Education, Employment).
{
"candidate_id": "cand_abc123xyz",
"package_id": "pkg_standard_us",
"fast_track": true
}
Parameters
| Field | Type | Description |
|---|---|---|
| candidate_id Req | string | The ID of the candidate to screen. |
| package_id Req | string | The identifier for the screening package (e.g., Criminal, MVR, Employment). |
| fast_track | boolean | Enable expedited processing for an additional fee. |
Check Status
Poll this endpoint to check the progress of a background check. We also recommend setting up webhooks for real-time updates.
{
"id": "scr_xyz789",
"status": "clear",// "clear", "consider", or "pending"
"completed_at": 1698770000,
"reports": [
{
"type": "criminal_search",
"status": "complete",
"result": "No Records Found"
}
]
}
Errors
Safe Hiring uses conventional HTTP response codes to indicate the success or failure of an API request.
| Code | Description |
|---|---|
| 200 OK | Request succeeded. |
| 400 Bad Request | Invalid request parameters. |
| 401 Unauthorized | Invalid or missing API key. |
| 429 Too Many Requests | Rate limit exceeded. |
| 500 Server Error | Something went wrong on Safe Hiring's end. |
Frequently Asked Questions
You can generate API keys directly from the Safe Hiring Dashboard. Navigate to Settings > Integrations > API Keys and click "Generate New Key". You can create test keys for development and live keys for production.
Yes. By default, you can make up to 1000 requests per minute per API key. If you exceed this limit, you will receive a 429 Too Many Requests error response.
To set up webhooks, use the POST /webhooks endpoint. Send a JSON object containing the event_type and callback_url. Safe Hiring will send updates to this URL whenever a screening status changes.
Test Keys (prefix `test_`) are meant for sandbox environments and do not process real data. Live Keys (prefix `live_`) are for production usage and will incur charges.
All dates must be formatted in ISO 8601 standard: YYYY-MM-DD. For example, January 5th, 1990 is represented as 1990-01-05.