Skip to content

List a site's contacts

GET
/v1/clients/{clientId}/sites/{siteId}/contact-persons
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.

clientId
required
integer format: int32

The clientId path parameter

siteId
required
integer format: int32

The siteId path parameter

pageNumber

Page number, 1-based. Defaults to 1.

integer format: int32
Example
1

Page number, 1-based. Defaults to 1.

pageSize

Number of contacts per page. Defaults to 20.

integer format: int32
Example
20

Number of contacts per page. Defaults to 20.

OK

Media typeapplication/json

A page of a site’s active contact persons.

object
data
required

The contacts on this page.

Array<object>

One active contact person at the site.

object
contactPersonId

The contact’s unique identifier, assigned by Recruso.

integer format: int32
siteId

The site this contact belongs to.

integer format: int32
department

The contact’s department at the site. Up to 100 characters.

string
nullable
position

The contact’s job title at the site. Up to 100 characters.

string
nullable
title

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.

string
nullable
forename

The contact’s forename. Required, up to 50 characters.

string
surname

The contact’s surname. Up to 50 characters.

string
nullable
telephone1

The contact’s main telephone number. Up to 50 characters.

string
nullable
telephone2

A second telephone number for the contact. Up to 50 characters.

string
nullable
mobile

The contact’s mobile number. Up to 50 characters.

string
nullable
email

The contact’s email address. Up to 150 characters.

string
nullable
fax

The contact’s fax number. Up to 50 characters.

string
nullable
notes

Free-text notes about the contact. Up to 550 characters.

string
nullable
canUseClientApp

Whether this contact may sign in to the client portal.

boolean
nullable
sector
string
nullable
createdOn

When the contact was created, in UK local time (GMT/BST) — not UTC.

string format: date-time
nullable
modifiedOn

When the contact was last updated, in UK local time (GMT/BST) — not UTC. Null until the contact is first updated.

string format: date-time
nullable
totalCount
required

How many active contacts the site has in total, across all pages.

integer format: int32
pageNumber
required

The page returned, 1-based.

integer format: int32
pageSize
required

How many contacts a page holds.

integer format: int32
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

Media typeapplication/problem+json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Forbidden

Media typeapplication/problem+json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Not Found

Media typeapplication/problem+json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}