GET /timesheets/{id}
Summary
Get timesheet
URL Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Timesheet id or nanoid |
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| includeVersionHistory | boolean | No | Include version history snapshots for this timesheet |
| includeTimelogs | boolean | No | Include timelog rows for this timesheet |
Request Example
- cURL
- JavaScript
- Python
- Go
curl -X GET 'https://api.requidex.com/api/open/v1/timesheets/{id}?includeVersionHistory=true&includeTimelogs=true' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Accept: application/json'
const response = await fetch(
"https://api.requidex.com/api/open/v1/timesheets/{id}?includeVersionHistory=true&includeTimelogs=true",
{
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/timesheets/{id}?includeVersionHistory=true&includeTimelogs=true',
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/timesheets/{id}?includeVersionHistory=true&includeTimelogs=true", 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 |
|---|---|---|
| agency | object | Show child attributes
|
| approvedDate | string | Approval timestamp in ISO 8601 date-time format |
| assignment | object | Show child attributes
|
| company | object | Show child attributes
|
| createdAt | string | Creation timestamp |
| end | string | Timesheet period end in ISO 8601 date-time format |
| id | string | Timesheet id |
| netHours | number | Total net hours after breaks |
| payType | string | Pay type |
| pieceRateEntries | array | Piece work captured on the timesheet. Show child attributes
|
| project | object | Show child attributes
|
| rates | object | Timesheet rate sets. Show child attributes
|
| rateType | string | Rate type |
| reference | string | Timesheet reference |
| site | object | Show child attributes
|
| start | string | Timesheet period start in ISO 8601 date-time format |
| status | string | Timesheet status |
| timelogs | array | Returned only when includeTimelogs=true. Show child attributes
|
| updatedAt | string | Last update timestamp |
| values | object | Pay/charge/expense values. Show child attributes
|
| version | integer | Current timesheet version number |
| versionHistory | array | Returned only when includeVersionHistory=true and snapshots exist. Show child attributes
|
| weekEnding | string | Week ending date in ISO 8601 date-time format |
| worker | object | Show child attributes
|
Response Example (200)
{
"success": true,
"data": {
"id": "67bc36db80a1616ec3f4a001",
"reference": "TS-1044",
"status": "approved",
"worker": {
"id": "67bc36db80a1616ec3f48999",
"name": "Jordan Smith"
},
"assignment": {
"id": "67bc36db80a1616ec3f49001",
"reference": "A1044"
},
"company": {
"id": "67bc36db80a1616ec3f47001",
"name": "Requidex Construction Ltd"
},
"project": {
"id": "67bc36db80a1616ec3f47011",
"name": "Northern Rail Electrification"
},
"site": {
"id": "67bc36db80a1616ec3f47055",
"name": "Manchester Central"
},
"agency": {
"id": "67bc36db80a1616ec3f47101",
"name": "Northline Labour Desk"
},
"payType": "hourly",
"rateType": "cis",
"start": "2026-03-02T00:00:00.000Z",
"end": "2026-03-08T23:59:59.999Z",
"weekEnding": "2026-03-08T00:00:00.000Z",
"version": 2,
"approvedDate": "2026-03-09T09:15:00.000Z",
"netHours": 37.5,
"rates": {
"wd": {
"pay": 21.5,
"emp": 2.93,
"margin": 4.32,
"charge": 28.75,
"uplift": null
},
"wdNw": { "pay": 0, "emp": 0, "margin": 0, "charge": 0, "uplift": 25 },
"weNw": { "pay": 0, "emp": 0, "margin": 0, "charge": 0, "uplift": 40 },
"bh": { "pay": 0, "emp": 0, "margin": 0, "charge": 0, "uplift": 100 },
"bhNight": {
"pay": 0,
"emp": 0,
"margin": 0,
"charge": 0,
"uplift": 125
},
"sat": {
"pay": 32.25,
"emp": 4.39,
"margin": 6.48,
"charge": 43.13,
"uplift": 50
},
"sun": {
"pay": 43,
"emp": 5.86,
"margin": 8.64,
"charge": 57.5,
"uplift": 100
},
"ot": {
"pay": 32.25,
"emp": 4.39,
"margin": 6.48,
"charge": 43.13,
"uplift": 50
}
},
"values": {
"pay": {
"wdBasic": 860,
"wdOvertime": 215,
"wdNightwork": 0,
"weNightwork": 0,
"bankHoliday": 0,
"bankHolidayNight": 0,
"saturday": 294,
"sunday": 295,
"saturdayNightwork": 0,
"sundayNightwork": 0,
"total": 1664
},
"charge": {
"wdBasic": 1150,
"wdOvertime": 287.5,
"wdNightwork": 0,
"weNightwork": 0,
"bankHoliday": 0,
"bankHolidayNight": 0,
"saturday": 396,
"sunday": 396.5,
"saturdayNightwork": 0,
"sundayNightwork": 0,
"total": 2230
},
"expense": 125
},
"pieceRateEntries": [
{
"id": "67bc36db80a1616ec3f4a201",
"pieceRateId": "pr_9X2KLM",
"code": "PR-A1B2C3",
"name": "Meters installed",
"unitLabel": "metre",
"unitLabelPlural": "metres",
"frequency": "daily",
"rateType": "cis",
"values": { "pay": 12.5, "emp": 0, "margin": 2.5, "charge": 15 },
"totals": {
"units": 10,
"payValue": 125,
"empValue": 0,
"marginValue": 25,
"chargeValue": 150
},
"lines": [
{
"id": "67bc36db80a1616ec3f4a202",
"date": "2026-03-03T00:00:00.000Z",
"units": 10,
"payValue": 125,
"empValue": 0,
"marginValue": 25,
"chargeValue": 150,
"comment": "Installed on block A",
"costCode": {
"name": "CC-001",
"description": "Trackside installation"
}
}
]
}
],
"timelogs": [
{
"id": "67bc36db80a1616ec3f4a101",
"status": "approved",
"date": "2026-03-03T00:00:00.000Z",
"start": "2026-03-03T08:00:00.000Z",
"end": "2026-03-03T17:00:00.000Z",
"shiftType": "day",
"breaks": 30,
"rateDescription": "wdBasic",
"hours": {
"standard": 8,
"overtime": 0,
"total": 8
},
"rates": {
"pay": 21.5,
"emp": 2.93,
"margin": 4.32,
"charge": 28.75
},
"values": {
"pay": {
"standard": 172,
"overtime": 0,
"total": 172
},
"emp": {
"standard": 23.44,
"overtime": 0,
"total": 23.44
},
"margin": {
"standard": 34.56,
"overtime": 0,
"total": 34.56
},
"charge": {
"standard": 230,
"overtime": 0,
"total": 230
}
},
"costCodeAllocations": [
{
"costCode": {
"name": "CC-001",
"description": "Trackside installation"
},
"hours": 8
}
]
}
],
"versionHistory": [
{
"version": 1,
"snapshotReason": "created",
"snapshotAt": "2026-03-08T18:00:00.000Z",
"netHours": 37.5,
"expenseValue": 0,
"values": {
"pay": {
"wdBasic": 860,
"wdOvertime": 215,
"wdNightwork": 0,
"weNightwork": 0,
"bankHoliday": 0,
"bankHolidayNight": 0,
"saturday": 294,
"sunday": 295,
"saturdayNightwork": 0,
"sundayNightwork": 0,
"total": 1664
},
"charge": {
"wdBasic": 1150,
"wdOvertime": 287.5,
"wdNightwork": 0,
"weNightwork": 0,
"bankHoliday": 0,
"bankHolidayNight": 0,
"saturday": 396,
"sunday": 396.5,
"saturdayNightwork": 0,
"sundayNightwork": 0,
"total": 2230
},
"expense": 0
},
"rates": {
"wd": {
"pay": 21.5,
"emp": 2.93,
"margin": 4.32,
"charge": 28.75,
"uplift": null
},
"wdNw": {
"pay": 0,
"emp": 0,
"margin": 0,
"charge": 0,
"uplift": 25
},
"weNw": {
"pay": 0,
"emp": 0,
"margin": 0,
"charge": 0,
"uplift": 40
},
"bh": { "pay": 0, "emp": 0, "margin": 0, "charge": 0, "uplift": 100 },
"bhNight": {
"pay": 0,
"emp": 0,
"margin": 0,
"charge": 0,
"uplift": 125
},
"sat": {
"pay": 32.25,
"emp": 4.39,
"margin": 6.48,
"charge": 43.13,
"uplift": 50
},
"sun": {
"pay": 43,
"emp": 5.86,
"margin": 8.64,
"charge": 57.5,
"uplift": 100
},
"ot": {
"pay": 32.25,
"emp": 4.39,
"margin": 6.48,
"charge": 43.13,
"uplift": 50
}
}
}
],
"createdAt": "2026-03-08T18:00:00.000Z",
"updatedAt": "2026-03-09T09:15:00.000Z"
}
}
Errors
| HTTP Status | Description |
|---|---|
| 400 | Invalid or missing timesheet id |
| 401 | Missing, invalid, revoked, or expired API key |
| 403 | Forbidden due to scope or IP restrictions |
| 404 | Timesheet not found |
| 405 | Method not allowed on Open API routes |
| 429 | Rate limit exceeded |
| 500 | Unexpected internal error |