List a site's contacts
const url = 'https://api2.recruso.co.uk/v1/clients/1/sites/1/contact-persons?pageNumber=1&pageSize=20';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/contact-persons?pageNumber=1&pageSize=20' \ --header 'Authorization: <Authorization>'Returns a paged list of the active contact persons on one of your own agency’s sites. Deleted contacts are excluded and cannot be read back except through RestoreSiteContactPerson.
There are no filters or sort options — the whole contact list for the site comes back a page at a time, with title resolved to its name.
The site must belong to the client named in the route; otherwise 404. Unlike ListSites, an unknown site is a 404 rather than an empty page, because the site is checked before the query runs.
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”Page number, 1-based. Defaults to 1.
Example
1Page number, 1-based. Defaults to 1.
Number of contacts per page. Defaults to 20.
Example
20Number of contacts per page. Defaults to 20.
Responses
Section titled “Responses”OK
A page of a site’s active contact persons.
object
The contacts on this page.
One active contact person at the site.
object
The contact’s unique identifier, assigned by Recruso.
The site this contact belongs to.
The contact’s department at the site. Up to 100 characters.
The contact’s job title at the site. Up to 100 characters.
The contact’s title, given by name rather than by id. Must be one of the names published by the titles vocabulary; an unrecognised name returns 400 listing the accepted values.
The contact’s forename. Required, up to 50 characters.
The contact’s surname. Up to 50 characters.
The contact’s main telephone number. Up to 50 characters.
A second telephone number for the contact. Up to 50 characters.
The contact’s mobile number. Up to 50 characters.
The contact’s email address. Up to 150 characters.
The contact’s fax number. Up to 50 characters.
Free-text notes about the contact. Up to 550 characters.
Whether this contact may sign in to the client portal.
When the contact was created, in UK local time (GMT/BST) — not UTC.
When the contact was last updated, in UK local time (GMT/BST) — not UTC. Null until the contact is first updated.
How many active contacts the site has in total, across all pages.
The page returned, 1-based.
How many contacts a page holds.
Example
{ "data": [ { "contactPersonId": 88, "siteId": 512, "department": "Warehouse operations", "position": "Shift Manager", "title": "Ms", "forename": "Priya", "surname": "Raman", "telephone1": "0161 872 4415", "telephone2": "0161 872 4416", "mobile": "07700 900318", "email": "p.raman@example-northgate.co.uk", "fax": "0161 872 4417", "notes": "Best reached on the early shift, 06:00-14:00.", "canUseClientApp": true, "createdOn": "2026-03-09T11:24:07", "modifiedOn": "2026-06-11T14:02:09" } ]}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"}
