Recruit API
End-to-end recruitment management — job postings, candidate tracking, applications pipeline, interviews, evaluations, and offer management.
All endpoints prefixed with /api/v1/recruit
Manage job openings with department and designation links.
/api/v1/recruit/job-postings Create a new job posting.
Auth: Bearer token · recruit.create
Request Body
{
"title": "Senior Developer",
"departmentId": 1,
"designationId": 2,
"employmentType": "full_time",
"location": "Remote",
"description": "...",
"requirements": "...",
"salaryMin": 80000,
"salaryMax": 120000,
"salaryCurrency": "USD"
} /api/v1/recruit/job-postings List job postings with pagination and filtering.
Auth: Bearer token · recruit.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| search | string | Search by title |
| status | string | Filter by status |
| departmentId | number | Filter by department |
/api/v1/recruit/job-postings/stats Get job posting statistics.
Auth: Bearer token · recruit.view
/api/v1/recruit/job-postings/:id Get job posting by ID.
Auth: Bearer token · recruit.view
/api/v1/recruit/job-postings/:id Update a job posting.
Auth: Bearer token · recruit.edit
/api/v1/recruit/job-postings/:id Delete a job posting.
Auth: Bearer token · recruit.delete
/api/v1/recruit/job-postings/:id/publish Publish a job posting.
Auth: Bearer token · recruit.edit
/api/v1/recruit/job-postings/:id/close Close a job posting.
Auth: Bearer token · recruit.edit
Manage candidate profiles and source tracking.
/api/v1/recruit/candidates Create a new candidate.
Auth: Bearer token · recruit.create
Request Body
{
"firstName": "Jane",
"lastName": "Doe",
"email": "jane@example.com",
"phone": "+1234567890",
"source": "linkedin",
"currentCompany": "Acme Inc",
"currentTitle": "Developer"
} /api/v1/recruit/candidates List candidates with pagination and filtering.
Auth: Bearer token · recruit.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| search | string | Search by name or email |
| source | string | Filter by source |
/api/v1/recruit/candidates/stats Get candidate statistics.
Auth: Bearer token · recruit.view
/api/v1/recruit/candidates/:id Get candidate by ID.
Auth: Bearer token · recruit.view
/api/v1/recruit/candidates/:id Update a candidate.
Auth: Bearer token · recruit.edit
/api/v1/recruit/candidates/:id Delete a candidate.
Auth: Bearer token · recruit.delete
Track candidate applications through pipeline stages.
/api/v1/recruit/applications Create a new application.
Auth: Bearer token · recruit.create
Request Body
{
"jobPostingId": 1,
"candidateId": 1,
"coverLetter": "..."
} /api/v1/recruit/applications List applications with pagination and filtering.
Auth: Bearer token · recruit.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| jobPostingId | number | Filter by job posting |
| candidateId | number | Filter by candidate |
| stage | string | Filter by pipeline stage |
/api/v1/recruit/applications/pipeline Get pipeline view grouped by stage.
Auth: Bearer token · recruit.view
/api/v1/recruit/applications/:id Get application by ID.
Auth: Bearer token · recruit.view
/api/v1/recruit/applications/:id Update an application.
Auth: Bearer token · recruit.edit
/api/v1/recruit/applications/:id Delete an application (cascades interviews, evaluations, offers).
Auth: Bearer token · recruit.delete
/api/v1/recruit/applications/:id/advance Advance application to next pipeline stage.
Auth: Bearer token · recruit.edit
/api/v1/recruit/applications/:id/reject Reject an application.
Auth: Bearer token · recruit.edit
Schedule and manage candidate interviews.
/api/v1/recruit/interviews Schedule a new interview.
Auth: Bearer token · recruit.create
Request Body
{
"applicationId": 1,
"interviewType": "technical",
"scheduledAt": "2026-06-15T10:00:00Z",
"duration": 60,
"location": "Conference Room A",
"interviewerIds": [1, 2]
} /api/v1/recruit/interviews List interviews with pagination and filtering.
Auth: Bearer token · recruit.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| applicationId | number | Filter by application |
| interviewType | string | Filter by interview type |
| status | string | Filter by status |
/api/v1/recruit/interviews/:id Get interview by ID.
Auth: Bearer token · recruit.view
/api/v1/recruit/interviews/:id Update an interview.
Auth: Bearer token · recruit.edit
/api/v1/recruit/interviews/:id Delete an interview.
Auth: Bearer token · recruit.delete
/api/v1/recruit/interviews/:id/complete Mark interview as completed.
Auth: Bearer token · recruit.edit
/api/v1/recruit/interviews/:id/cancel Cancel an interview.
Auth: Bearer token · recruit.edit
Structured evaluation scorecards for interview feedback.
/api/v1/recruit/evaluations Submit an evaluation.
Auth: Bearer token · recruit.create
Request Body
{
"applicationId": 1,
"interviewId": 1,
"overallRating": 4,
"technicalScore": 5,
"communicationScore": 4,
"cultureFitScore": 3,
"recommendation": "strong_hire",
"notes": "Excellent technical skills"
} /api/v1/recruit/evaluations List evaluations with pagination and filtering.
Auth: Bearer token · recruit.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| applicationId | number | Filter by application |
| interviewId | number | Filter by interview |
/api/v1/recruit/evaluations/:id Get evaluation by ID.
Auth: Bearer token · recruit.view
/api/v1/recruit/evaluations/:id Update an evaluation.
Auth: Bearer token · recruit.edit
/api/v1/recruit/evaluations/:id Delete an evaluation.
Auth: Bearer token · recruit.delete
Manage job offers with acceptance tracking.
/api/v1/recruit/offers Create a new offer.
Auth: Bearer token · recruit.create
Request Body
{
"applicationId": 1,
"salary": 95000,
"salaryCurrency": "USD",
"salaryPeriod": "yearly",
"startDate": "2026-07-01",
"expiryDate": "2026-06-20",
"benefits": "Health insurance, 401k"
} /api/v1/recruit/offers List offers with pagination and filtering.
Auth: Bearer token · recruit.view
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number |
| limit | number | Items per page |
| applicationId | number | Filter by application |
| status | string | Filter by status |
/api/v1/recruit/offers/:id Get offer by ID.
Auth: Bearer token · recruit.view
/api/v1/recruit/offers/:id Update an offer.
Auth: Bearer token · recruit.edit
/api/v1/recruit/offers/:id Delete an offer.
Auth: Bearer token · recruit.delete
/api/v1/recruit/offers/:id/send Send offer to candidate.
Auth: Bearer token · recruit.edit
/api/v1/recruit/offers/:id/accept Mark offer as accepted.
Auth: Bearer token · recruit.edit
/api/v1/recruit/offers/:id/reject Mark offer as rejected.
Auth: Bearer token · recruit.edit
/api/v1/recruit/offers/:id/hire Mark candidate as hired (triggers HR handoff).
Auth: Bearer token · recruit.manage