emver Verification (Employer Confirmation)
Workforce & AssetsDirect confirmation of tenure, designation and exit reason from the previous employer.
Where EPFO data ends, emver's verification desk contacts the employer's HR through verified channels and returns confirmed tenure, designation, last drawn salary band and eligibility for rehire, delivered through the API with a tokenised status link.
Endpoint
Request parameters
| Field | Type | Description |
|---|---|---|
candidate_name
required
|
string | Candidate name |
employer_name
required
|
string | Employer name |
employee_id
optional
|
string | Employee ID |
from_date
required
|
date | Tenure from |
to_date
optional
|
date | Tenure to |
designation
optional
|
string | Designation |
documents
optional
|
file | Supporting documents |
Example request
curl -X POST https://app.emver.io/api/sandbox/v1/employment-verification \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"candidate_name": "string",
"employer_name": "string",
"employee_id": "string",
"from_date": "YYYY-MM-DD",
"to_date": "YYYY-MM-DD",
"designation": "string",
"documents": "<base64>"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/employment-verification",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"candidate_name": "string",
"employer_name": "string",
"employee_id": "string",
"from_date": "YYYY-MM-DD",
"to_date": "YYYY-MM-DD",
"designation": "string",
"documents": "<base64>"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/employment-verification", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"candidate_name": "string",
"employer_name": "string",
"employee_id": "string",
"from_date": "YYYY-MM-DD",
"to_date": "YYYY-MM-DD",
"designation": "string",
"documents": "<base64>"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/employment-verification', {
"candidate_name": "string",
"employer_name": "string",
"employee_id": "string",
"from_date": "YYYY-MM-DD",
"to_date": "YYYY-MM-DD",
"designation": "string",
"documents": "<base64>"
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING,
"data": {
"request_id": STRING,
"status": STRING,
"tenure_confirmed": BOOLEAN,
"designation_confirmed": BOOLEAN,
"exit_reason": STRING,
"eligible_for_rehire": BOOLEAN,
"report_url": STRING
}
}
Example · 200
{
"status": 200,
"message": "string",
"data": {
"request_id": "string",
"status": "string",
"tenure_confirmed": true,
"designation_confirmed": true,
"exit_reason": "string",
"eligible_for_rehire": true,
"report_url": "string"
}
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.
About this API
This is an asynchronous check. Submit the candidate's consent, emver details and documents; the request is processed by emver's verification team and the API reports each status change until the employer's confirmation is recorded.
Typical uses
- Pre-employment screening. The standard emver component of a BGV package.
- Executive hiring. Confirm senior tenures where records are thin.
Questions
- How long does it take?
- Typically two to five working days depending on employer responsiveness; the status link shows progress in real time.