Correct one of a worker's availability entries
const url = 'https://api2.recruso.co.uk/v1/workers/1/availability/1';const options = { method: 'PUT', headers: {Authorization: '<Authorization>', 'Content-Type': 'application/json'}, body: '{"date":"2026-11-03","startTime":"07:00:00","finishTime":"19:00:00","availabilityStatusId":3}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url https://api2.recruso.co.uk/v1/workers/1/availability/1 \ --header 'Authorization: <Authorization>' \ --header 'Content-Type: application/json' \ --data '{ "date": "2026-11-03", "startTime": "07:00:00", "finishTime": "19:00:00", "availabilityStatusId": 3 }'Corrects an availability entry of a worker in your own agency.
This is a full replacement of the entry’s date, times and status, not a partial merge: a time you omit is cleared, and times are kept to the nearest minute. doNotAccrue and createdOn are kept as they were; modifiedOn is set to the current UK local time.
Both the entry as stored and the entry as sent must fall within the window — no more than 20 days before today and no more than a year after it — and neither may hold a status that affects a worker’s AWR parity: an entry that already does cannot be changed through this API, nor can one whose stored status is not one of your agency’s. Moving an entry to a date that is already full returns 400; correcting it on its own date does not count against the limit. Each of these returns 400.
An entry that belongs to a different worker returns 404, as does a worker in another agency, under a branch the Recruso user behind your API app cannot reach, or deleted under data-protection law — never 403, so existence is never disclosed.
Access. Requires a client-credentials access token. Tokens issued through the interactive user login are rejected.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The workerId path parameter
The availabilityId path parameter
Request Bodyrequired
Section titled “Request Bodyrequired”The entry’s new date, times and status: a full replacement, so a time you omit is cleared. The worker and the entry come from the route.
object
The day the entry is for, in the UK. Required. No more than 20 days before today and no more than a year after it.
Example
2026-11-03When the worker becomes available or unavailable that day, as a time of day, kept to the nearest minute. Optional, and independent of finishTime.
Example
07:00:00When it ends, as a time of day, kept to the nearest minute. Optional. A finish earlier than the start means the entry passes midnight.
Example
19:00:00One of your agency’s availability statuses. Required. A status that affects a worker’s AWR parity cannot be used here.
Example
3Responses
Section titled “Responses”OK
The entry as corrected.
object
The entry’s identifier.
The worker the entry belongs to.
The day the entry is for, in the UK.
When the worker becomes available or unavailable that day, as a time of day; null when not set.
When it ends, as a time of day; null when not set. Earlier than startTime means the entry passes midnight.
The status, as an id from your agency’s availability statuses.
Read only. Whether the day stops holiday accrual for the worker: your agency’s setting for the worker’s type when the entry was created, kept as it was then. Null means the entry carries no accrual instruction, which is always so for workers other than limited-company and PSC types.
When the entry was created, in UK local time; null for entries that predate the column.
When the entry was last changed, in UK local time; null when it never has been.
Example
{ "availabilityId": 51207, "workerId": 4821, "date": "2026-11-03", "startTime": "07:00:00", "finishTime": "19:00:00", "availabilityStatusId": 3, "doNotAccrue": false, "createdOn": "2026-10-20T09:14:52", "modifiedOn": "2026-10-21T16:02:10"}Bad Request
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Unauthorized
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Forbidden
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}Not Found
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}
