Skip to main content

GET /requisitions/recruitment-metrics

Agency-scoped keys

This endpoint is not available for agency-scoped API keys.

Stage tracking

Recruitment metrics are available only for companies with stage tracking enabled in company config.

Summary

List recruitment metrics

URL Parameters

  • None

Query Parameters

NameTypeRequiredDescription
companystringNoFilter by company id(s). Pass a single id or comma-separated ids. If omitted, data for all companies linked to the API key is returned.
pageintegerNoPage number (default 1)
limitintegerNoRecords per page (default 50, max 200)
projectstringNoFilter by project id
agencystringNoFilter by agency id(s). Pass a single id or comma-separated ids.
metricenum(rows, timeToFill, workersOverHours)NoMetric mode. Defaults to rows.
groupByenum(all, company, project, agency, month, week)NoAggregation dimension for metric=timeToFill or metric=workersOverHours. Defaults to all.
hoursThresholdnumberNoWeekly net-hours threshold for metric=workersOverHours. Defaults to 48.
fromstringNoPeriod filter start (YYYY-MM-DD). Applies to requisition created date for rows, supplier date accepted for timeToFill, and week ending for workersOverHours.
tostringNoPeriod filter end (YYYY-MM-DD). Applies to requisition created date for rows, supplier date accepted for timeToFill, and week ending for workersOverHours.
sortByenum(createdAt, reqRef)NoSort field
sortOrderenum(asc, desc)NoSort direction
fieldsstringNoComma-separated list of response fields or dot-path nested fields to return

Request Example

curl -X GET 'https://api.requidex.com/api/open/v1/requisitions/recruitment-metrics?from=2026-02-01&to=2026-02-28' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Accept: application/json'

Response Fields

When metric is omitted or set to rows, the endpoint returns paginated recruitment metric rows. When metric=timeToFill, it returns grouped approved-date to supplier accepted-date day metrics with the 1.5 IQR outlier rule applied per group. When metric=workersOverHours, it returns grouped worker-week net-hours threshold metrics.

FieldTypeDescription
assignedstringAssigned date (DD/MM/YYYY)
currentStageenum(submitted, cvReviewed, interviewed, offerMade, offerAccepted, offerRejected, assigned)Current recruitment stage
cvRejectedstringYes when the submitted worker was rejected, otherwise No
cvReviewedstringCV reviewed date (DD/MM/YYYY)
interviewedstringInterviewed date (DD/MM/YYYY)
managerReviewDaysintegerDays from submitted to CV reviewed
offerAcceptedstringOffer accepted date (DD/MM/YYYY)
offerMadestringOffer made date (DD/MM/YYYY)
offerRejectedstringOffer rejected date (DD/MM/YYYY)
offerToStartDaysintegerDays from offer accepted to requisition start
projectstringProject name
reqCreatedstringRequisition created date (DD/MM/YYYY)
reqRefstringRequisition reference
reqStartstringRequisition start date (DD/MM/YYYY)
submittedstringSubmitted date (DD/MM/YYYY)
supplierstringAgency name
timeToFillDaysintegerDays from requisition created to offer made
timeToInterviewDaysintegerDays from submitted to interviewed
timeToOfferAcceptedDaysintegerDays from requisition created to offer accepted
timeToOfferDaysintegerDays from submitted to offer made
tradestringTrade name
workerstringWorker name

Aggregate response fields

For metric=timeToFill, each row contains:

FieldTypeDescription
groupobjectGroup keys for the requested groupBy; empty when groupBy=all
rawCountintegerAccepted supplier responses before IQR outlier exclusion
excludedOutliersintegerResponses excluded by the 1.5 IQR rule
iqrBoundsobjectLower and upper day bounds used for outlier exclusion
valuesobjectcount, averageDays, medianDays, minDays, maxDays, p25Days, and p75Days after outlier exclusion

For metric=workersOverHours, each row contains:

FieldTypeDescription
groupobjectGroup keys for the requested groupBy; empty when groupBy=all
valuesobjectthresholdHours, hoursField, workerWeeks, workersOverThreshold, distinctWorkersOverThreshold, totalHours, averageWeeklyHours, and maxWeeklyHours

Response Example (200)

{
"success": true,
"data": [
{
"reqRef": "REQ-R1002",
"reqCreated": "20/02/2026",
"reqStart": "01/03/2026",
"project": "Northern Rail Electrification",
"trade": "Electrician",
"supplier": "Northline Labour Desk",
"worker": "Jordan Worker",
"submitted": "21/02/2026",
"cvReviewed": "21/02/2026",
"interviewed": "",
"offerMade": "",
"offerAccepted": "",
"offerRejected": "",
"assigned": "",
"managerReviewDays": 0,
"timeToInterviewDays": null,
"timeToOfferDays": null,
"timeToFillDays": null,
"timeToOfferAcceptedDays": null,
"offerToStartDays": null,
"currentStage": "cvReviewed",
"cvRejected": "No"
}
],
"meta": {
"page": 1,
"limit": 50,
"total": 1
}
}

Aggregate Response Example (200)

{
"success": true,
"data": [
{
"group": {
"agency": {
"id": "67bc36db80a1616ec3f48988",
"name": "Northline Labour Desk"
}
},
"rawCount": 12,
"excludedOutliers": 1,
"iqrBounds": {
"lower": 0,
"upper": 21
},
"values": {
"count": 11,
"averageDays": 7.45,
"medianDays": 6,
"minDays": 1,
"maxDays": 18,
"p25Days": 4,
"p75Days": 10
}
}
],
"meta": {
"total": 1,
"metric": "timeToFill",
"groupBy": "agency",
"dateField": "dateAccepted",
"outlierRule": "IQR_1_5"
}
}

Errors

HTTP StatusDescription
400Invalid query parameter
401Missing, invalid, revoked, or expired API key
403Forbidden due to scope or IP restrictions
405Method not allowed on Open API routes
429Rate limit exceeded
500Unexpected internal error