Get Requisition
/requisitions/{id}Summary
Returns one requisition by its id or internal nanoid, including its project, trade, requested workers, dates, status, rates, and supplier responses.
URL Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Requisition identifier |
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| includeStageTracking | boolean | No | Include worker recruitment stage tracking. Only returned when this is true and the company has stage tracking enabled in company config. |
Request Example
- cURL
- JavaScript
- Python
- Go
curl -X GET 'https://api.requidex.com/api/open/v1/requisitions/{id}' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Accept: application/json'
const response = await fetch("https://api.requidex.com/api/open/v1/requisitions/{id}", {
method: "GET",
headers: {
Authorization: "Bearer <API_KEY>",
Accept: "application/json",
},
});
const json = await response.json();
import requests
response = requests.request(
'GET',
'https://api.requidex.com/api/open/v1/requisitions/{id}',
headers={
'Authorization': 'Bearer <API_KEY>',
'Accept': 'application/json',
},
timeout=30,
)
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.requidex.com/api/open/v1/requisitions/{id}", nil)
req.Header.Set("Authorization", "Bearer <API_KEY>")
req.Header.Set("Accept", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
payload, _ := io.ReadAll(resp.Body)
fmt.Println(string(payload))
}
Response Fields
| Field | Type | Description |
|---|---|---|
| activity | object | Optional. Omitted when no activity is set. Show child attributes
|
| agencies | array[object] | Show child attributes
|
| approvedDate | string | Final approval timestamp when approved |
| approvalStages | array[object] | Approval workflow stages in order. approvedAt is an ISO 8601 timestamp for approvals recorded after stage timestamps were introduced; completed historical stages may return null. Show child attributes
|
| approver | object | Show child attributes
|
| autoAssign | boolean | Whether auto-assignment is enabled for the requisition |
| cancellation | object | Optional. Cancellation details for a currently cancelled requisition. Omitted when unavailable. Show child attributes
|
| company | object | Show child attributes
|
| createdAt | string | Creation timestamp |
| endDate | string | Planned end date |
| id | string | Requisition id |
| project | object | Show child attributes
|
| quantity | number | Requested worker quantity |
| reference | string | Requisition reference |
| region | object | Show child attributes
|
| requestor | object | Show child attributes
|
| sector | object | Show child attributes
|
| site | object | Show child attributes
|
| stageTracking | array[object] | Optional. Returned only when includeStageTracking=true and the company has stage tracking enabled in company config. Agency-scoped keys only receive records for their scoped agency. Show child attributes
|
| startDate | string | Planned start date |
| status | enum(raised, approved, filled, cancelled, rejected) | Derived requisition status |
| trade | object | Show child attributes
|
| updatedAt | string | Last update timestamp |
Each agencies[].submissions[] item can also include submittedBy and assignedBy objects with the responsible user's id and name. These fields are omitted when attribution is unavailable for a historical record.
Response Example (200)
{
"success": true,
"data": {
"id": "67bc36db80a1616ec3f48123",
"reference": "REQ-R1002",
"status": "cancelled",
"cancellation": {
"reason": "Project no longer proceeding",
"date": "2026-02-24T09:15:00.000Z",
"comments": "Client withdrew the requirement"
},
"quantity": 4,
"autoAssign": true,
"requestor": {
"name": "Riley Requestor",
"email": "riley.requestor@example.com"
},
"approver": {
"name": "Avery Approver",
"email": "avery.approver@example.com"
},
"approvalStages": [
{
"stage": 1,
"name": "Commercial approval",
"approved": true,
"approvedAt": "2026-02-10T10:00:00.000Z",
"approver": {
"name": "Avery Approver",
"email": "avery.approver@example.com"
}
},
{
"stage": 2,
"name": "Project approval",
"approved": false,
"approvedAt": null,
"approver": null
}
],
"company": {
"id": "67bc36db80a1616ec3f47001",
"name": "Requidex Construction Ltd"
},
"project": {
"id": "67bc36db80a1616ec3f47011",
"name": "Northern Rail Electrification"
},
"region": {
"id": "67bc36db80a1616ec3f47002",
"name": "North West"
},
"sector": {
"id": "67bc36db80a1616ec3f47003",
"name": "Rail"
},
"site": {
"id": "67bc36db80a1616ec3f47055",
"name": "Manchester Central"
},
"agencies": [
{
"id": "67bc36db80a1616ec3f47101",
"name": "Northline Labour Desk",
"offered": 1,
"assigned": 1,
"dateReceived": "2026-02-21T09:00:00.000Z",
"dateAccepted": "2026-02-21T10:00:00.000Z",
"submissions": [
{
"worker": {
"id": "67bc36db80a1616ec3f47201",
"name": "Jordan Taylor"
},
"submittedAt": "2026-02-21T11:00:00.000Z",
"isRejected": true,
"rejectionReason": "Required qualification not held",
"submittedBy": {
"id": "67bc36db80a1616ec3f47301",
"name": "Sam Recruiter"
},
"assignedBy": {
"id": "67bc36db80a1616ec3f47302",
"name": "Alex Manager"
}
}
]
},
{
"id": "67bc36db80a1616ec3f47102",
"name": "Summit Trades",
"offered": 2,
"assigned": 1,
"dateReceived": "2026-02-22T09:00:00.000Z",
"dateAccepted": "2026-02-22T10:00:00.000Z",
"submissions": [
{
"worker": {
"id": "67bc36db80a1616ec3f47202",
"name": "Alex Morgan"
},
"submittedAt": "2026-02-22T11:00:00.000Z",
"isRejected": false,
"rejectionReason": null
}
]
}
],
"trade": {
"id": "67bc36db80a1616ec3f47077",
"name": "Electrician"
},
"activity": {
"id": "67bc36db80a1616ec3f47099",
"name": "Install containment"
},
"startDate": "2026-03-01T00:00:00.000Z",
"endDate": "2026-03-31T23:59:59.999Z",
"createdAt": "2026-02-20T11:10:00.000Z",
"updatedAt": "2026-02-24T09:15:00.000Z"
}
}
MCP Tool
The MCP server exposes this operation as open_api_get_requisition with the inputs id and includeStageTracking.
Errors
| HTTP Status | Description |
|---|---|
| 401 | Missing, invalid, revoked, or expired API key |
| 403 | Forbidden due to scope or IP restrictions |
| 404 | Requisition not found |
| 405 | Method not allowed on Open API routes |
| 429 | Rate limit exceeded |
| 500 | Unexpected internal error |
Submission answers
Each returned record includes submissionAnswers (an empty array when there are no applicable answers), unless omitted by list response fields selection. It contains only answers configured to display on this entity. Requisitions expose the saved submission answers, including amendments made while pending; assignments and timesheets expose the saved assignment snapshot.
Agency-scoped callers receive only answers belonging to agencies in their authenticated API key scope, even when another agency submitted the same worker. Query filters and fields selection cannot expand that scope. Company-scoped callers receive answers within their existing company and project access. Existing endpoint read scopes apply; this is read-only access.
Each answer includes:
| Field | Description |
|---|---|
fieldId, label, fieldType, value | Field identifier, captured question and type, and answer value (text, date string, selected option array, or null) |
answerScope | submission for a whole-submission answer or worker for a per-worker answer |
submissionId, workerIds | Submission batch identifier and the workers covered by the answer |
agency, worker | Identifier and name objects; worker is null for whole-submission answers |
displayLocations | Configured display locations captured with the answer |
submittedAt, submittedBy | Original submission timestamp and submitter identifier/name |
updatedAt, updatedBy | Latest amendment timestamp and editor identifier/name, or null |