Create or replace a site's information sheet
const url = 'https://api2.recruso.co.uk/v1/clients/1/sites/1/information';const options = { method: 'PUT', headers: {Authorization: '<Authorization>', 'Content-Type': 'application/json'}, body: '{"information":"Chilled distribution centre serving 42 stores across the north west.","staffRequirements":"Pickers and pallet truck drivers; own safety boots essential.","actionToTake":"Call the shift supervisor before 05:30 for same-day cover.","tempsUsed":60,"peakPeriods":"October to early January, and Easter week.","companySize":"250-500 employees","noOfEmployees":"310","minimumAge":18,"safetyBoots":true,"hiViz":true,"smokingArea":true,"canteen":true,"agenciesUsed":"Two other suppliers on a shared rota.","otherSites":"Shares a transport yard with the Salford depot.","tempsDepartment":"Chilled picking","assessmentRequired":true,"workersCanLogHoursViaApp":true,"importantSiteNotes":"No lone working after 22:00; gatehouse closes 23:00.","workerAppRadius":0.5}'};
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/clients/1/sites/1/information \ --header 'Authorization: <Authorization>' \ --header 'Content-Type: application/json' \ --data '{ "information": "Chilled distribution centre serving 42 stores across the north west.", "staffRequirements": "Pickers and pallet truck drivers; own safety boots essential.", "actionToTake": "Call the shift supervisor before 05:30 for same-day cover.", "tempsUsed": 60, "peakPeriods": "October to early January, and Easter week.", "companySize": "250-500 employees", "noOfEmployees": "310", "minimumAge": 18, "safetyBoots": true, "hiViz": true, "smokingArea": true, "canteen": true, "agenciesUsed": "Two other suppliers on a shared rota.", "otherSites": "Shares a transport yard with the Salford depot.", "tempsDepartment": "Chilled picking", "assessmentRequired": true, "workersCanLogHoursViaApp": true, "importantSiteNotes": "No lone working after 22:00; gatehouse closes 23:00.", "workerAppRadius": 0.5 }'Creates the information sheet for one of your own agency’s sites, or replaces it if one already exists. A site has at most one sheet, so there is no separate create and update.
This is a full replacement, not a partial merge: every field is written from the request, so a field you omit is set to null. Read the current sheet with GetSiteInformation and send it back with your changes applied, rather than sending only the fields you are changing.
Both outcomes return 200, never 201 — a create and a replace are not distinguished by status. The response’s isNewlyCreated tells you which happened.
The site must belong to the client named in the route, otherwise 404.
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 clientId path parameter
The id path parameter
Request Bodyrequired
Section titled “Request Bodyrequired”The site information sheet to create or replace. Every field is written, so an omitted field is set to null.
object
General information about the site and what it does.
Example
Chilled distribution centre serving 42 stores across the north west.What the site requires of the workers placed there.
Example
Pickers and pallet truck drivers; own safety boots essential.What to do when placing workers here, or when something goes wrong.
Example
Call the shift supervisor before 05:30 for same-day cover.How many temporary workers the site typically uses.
Example
60When the site is busiest.
Example
October to early January, and Easter week.The size of the company operating the site.
Example
250-500 employeesHow many people the site employs directly.
Example
310The minimum age for a worker placed at this site.
Example
18Whether safety boots are required on site.
Example
trueWhether a hi-vis vest is required on site.
Example
trueWhether the site has a designated smoking area.
Example
trueWhether the site has a canteen.
Example
trueWhich other agencies supply this site.
Example
Two other suppliers on a shared rota.Other sites the client operates that relate to this one.
Example
Shares a transport yard with the Salford depot.Which department the temporary workers are placed into.
Example
Chilled pickingWhether a worker must complete an assessment before being placed at this site.
Example
trueWhether workers at this site may log their hours through the worker app.
Example
trueNotes that anyone placing a worker here needs to read first.
Example
No lone working after 22:00; gatehouse closes 23:00.How far from the site, in the app’s own units, a worker may be when logging hours through the worker app.
Example
0.5Responses
Section titled “Responses”OK
A site information sheet as it stands after the upsert.
object
The site this information sheet describes. A site has at most one sheet.
Whether this request created the sheet rather than replacing an existing one. Both outcomes return 200, so this is how you tell them apart.
General information about the site and what it does.
What the site requires of the workers placed there.
What to do when placing workers here, or when something goes wrong.
How many temporary workers the site typically uses.
When the site is busiest.
The size of the company operating the site.
How many people the site employs directly.
The minimum age for a worker placed at this site.
Whether safety boots are required on site.
Whether a hi-vis vest is required on site.
Whether the site has a designated smoking area.
Whether the site has a canteen.
Which other agencies supply this site.
Other sites the client operates that relate to this one.
Which department the temporary workers are placed into.
Whether a worker must complete an assessment before being placed at this site.
Whether workers at this site may log their hours through the worker app.
Notes that anyone placing a worker here needs to read first.
How far from the site, in the app’s own units, a worker may be when logging hours through the worker app.
The Recruso user who first logged the information sheet. Set when the sheet is created and not changed by later replacements.
The Recruso user who created the information sheet.
When the information sheet was created, in UK local time (GMT/BST) - not UTC.
The Recruso user who last replaced the information sheet. Null until it is first replaced.
When the information sheet was last replaced, in UK local time (GMT/BST) - not UTC. Null until it is first replaced.
Example
{ "siteId": 512, "isNewlyCreated": false, "information": "Chilled distribution centre serving 42 stores across the north west.", "staffRequirements": "Pickers and pallet truck drivers; own safety boots essential.", "actionToTake": "Call the shift supervisor before 05:30 for same-day cover.", "tempsUsed": 60, "peakPeriods": "October to early January, and Easter week.", "companySize": "250-500 employees", "noOfEmployees": "310", "minimumAge": 18, "safetyBoots": true, "hiViz": true, "smokingArea": true, "canteen": true, "agenciesUsed": "Two other suppliers on a shared rota.", "otherSites": "Shares a transport yard with the Salford depot.", "tempsDepartment": "Chilled picking", "assessmentRequired": true, "workersCanLogHoursViaApp": true, "importantSiteNotes": "No lone working after 22:00; gatehouse closes 23:00.", "workerAppRadius": 0.5, "loggedBy": 12, "createdBy": 12, "createdOn": "2026-03-18T09:55:41", "modifiedBy": 12, "modifiedOn": "2026-06-11T14:02:09"}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"}
