List a site's rate contracts
const url = 'https://api2.recruso.co.uk/v1/clients/1/sites/1/rate-contracts';const options = {method: 'GET', headers: {Authorization: '<Authorization>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api2.recruso.co.uk/v1/clients/1/sites/1/rate-contracts \ --header 'Authorization: <Authorization>'Returns a paged list of the rate contracts on one of your own agency’s sites, each with its full rate pairs — this is the call that tells you what work at a site costs.
A contract holds one or more rate pairs. Each pair covers one rate type and carries both a pre-parity and a post-parity pay and charge rate — the rates before and after the worker qualifies for AWR parity. Both halves are always stored together; the API does not expose the duration field that distinguishes them.
Deleted contracts are excluded. There are no filters or sort options; the site’s contracts come back a page at a time.
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 siteId path parameter
Query Parameters
Section titled “Query Parameters”Responses
Section titled “Responses”OK
object
One rate contract at the site, with its rate pairs.
object
The rate contract’s unique identifier, assigned by Recruso.
The site this rate contract applies to.
The job category this contract prices, as an id from your agency’s Job categories lookup. Required, and fixed at creation.
The shift this contract prices, as an id from your agency’s Shifts lookup. Fixed at creation.
The job description for work under this contract. Up to 5000 characters.
The overtime rules that apply, as free text. Up to 500 characters.
The site contact responsible for this contract. Must be a contact of the same site.
Health and safety information for work under this contract. Up to 5000 characters.
The personal protective equipment required for this work. Up to 5000 characters.
Whether a worker must complete an assessment before being placed under this contract.
What the required assessment involves. Up to 5000 characters.
Whether a worker must complete training before being placed under this contract.
What the required training involves. Up to 5000 characters.
Whether a worker must complete an induction before being placed under this contract.
What the required induction involves. Up to 5000 characters.
The holiday entitlement for work under this contract.
What expenses are paid under this contract. Up to 5000 characters.
How often workers are paid under this contract. Up to 50 characters.
The notice required to end an assignment under this contract. Up to 50 characters.
When the contract was last updated, in UK local time (GMT/BST) — not UTC. Null until the contract is first updated.
Whether the contract is deleted. Always false here — this list returns active contracts only.
Whether the contract is priced at a daily rate rather than an hourly one. Fixed at creation, and requires dayRateRuleId when true.
The Recruso user who created the contract.
When the contract was created, in UK local time (GMT/BST) — not UTC.
The Recruso user who last updated the contract. Null until the contract is first updated.
The day rate rule that applies, as an id from your agency’s Day rate rules lookup. Required when isDailyRate is true.
The break time for work under this contract, as free text. Up to 25 characters.
The rest time required between consecutive shifts.
Whether holiday pay is rolled up into the rate rather than accrued.
When rolled-up holiday pay was turned on for this contract, in UK local time (GMT/BST).
The holiday policy that applies to this contract. Up to 4000 characters.
The rate pairs associated with this contract. Each entry groups pre-parity and post-parity rates for a specific rate type.
API response DTO for a site rate pair in list view. Groups pre-parity (Duration=0) and post-parity (Duration=12) rates for a specific rate type. Duration is not exposed in the API.
object
The identifier of the pre-parity rate row in this pair.
The rate type this pair prices, as an id from your agency’s Rate types lookup.
The hourly rate paid to the worker before they qualify for AWR parity.
The hourly rate charged to the client before the worker qualifies for AWR parity.
Whether the pre-parity rate contributes to the worker’s holiday pot.
The identifier of the post-parity rate row in this pair.
The hourly rate paid to the worker once they qualify for AWR parity.
The hourly rate charged to the client once the worker qualifies for AWR parity.
Whether the post-parity rate contributes to the worker’s holiday pot.
Example
{ "data": [ { "siteRateContractId": 3041, "siteId": 512, "jobCategoryId": 17, "shiftId": 5, "jobDescription": "Order picking and pallet wrapping in a chilled environment.", "otRulesAndDetails": "Time and a half after 40 hours in a week.", "contactPersonId": 88, "healthAndSafety": "Chilled store, 2-4C. Manual handling briefing required.", "ppe": "Safety boots, hi-vis vest, thermal jacket.", "assessmentRequired": true, "assessmentDetails": "Manual handling assessment at the gatehouse.", "trainingRequired": true, "trainingDetails": "Half-day pallet truck training, renewed annually.", "inductionRequired": true, "inductionDetails": "Site induction on first shift, 45 minutes.", "holidayEntitlement": 28, "expensesPaid": "Mileage at 45p per mile beyond 25 miles.", "intervalOfPayments": "Weekly", "lengthOfTermination": "1 week", "modifiedOn": "2026-06-11T14:02:09", "isDeleted": false, "isDailyRate": false, "createdBy": 12, "createdOn": "2026-03-12T15:33:20", "modifiedBy": 12, "dayRateRuleId": 2, "breakTime": "30 minutes unpaid", "restTimeBetweenShifts": 11, "isRolledUpHoliday": false, "rolledUpHolidayOn": "2026-04-06T00:00:00", "holidayPolicy": "Accrued at 12.07% of hours worked.", "rates": [ { "siteRateId": 9107, "rateTypeId": 3, "prePayRate": 12.6, "preChargeRate": 16.8, "preRequiredForHolidayPot": true, "postSiteRateId": 9108, "postPayRate": 13.4, "postChargeRate": 17.65, "postRequiredForHolidayPot": true } ] } ]}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"}
