Log an activity against a site contact
const url = 'https://api2.recruso.co.uk/v1/clients/1/sites/1/contact-persons/1/activities';const options = { method: 'POST', headers: {Authorization: '<Authorization>', 'Content-Type': 'application/json'}, body: '{"activityDate":"2026-05-14T10:30:00","description":"Called to confirm cover for the bank holiday weekend.","actionTaken":"Agreed 6 pickers for Saturday, confirmed by email.","nextCallDate":"2026-05-21T09:00:00","lastVisited":"2026-05-02T13:15:00","activityTypeId":4,"eventId":"cal-2026-05-14-0930"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api2.recruso.co.uk/v1/clients/1/sites/1/contact-persons/1/activities \ --header 'Authorization: <Authorization>' \ --header 'Content-Type: application/json' \ --data '{ "activityDate": "2026-05-14T10:30:00", "description": "Called to confirm cover for the bank holiday weekend.", "actionTaken": "Agreed 6 pickers for Saturday, confirmed by email.", "nextCallDate": "2026-05-21T09:00:00", "lastVisited": "2026-05-02T13:15:00", "activityTypeId": 4, "eventId": "cal-2026-05-14-0930" }'Records an activity — a call, a visit, an email — against a contact at one of your own agency’s sites. Activities are the contact history behind a site: what was discussed, what was agreed, and when to follow up.
Only activityDate is required. activityTypeId, when given, must belong to your agency’s Activity types lookup; one that does not returns 400.
eventId is accepted here and cannot be changed afterwards — it is absent from UpdateSiteActivity. Set it on creation or not at all.
The client, site and contact in the route must line up — the site must belong to the client and the contact to the site — and any mismatch returns 404 rather than 403.
On success the response carries the new siteActivityId and a Location header pointing at GetSiteActivityById.
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
The contactPersonId path parameter
Request Bodyrequired
Section titled “Request Bodyrequired”The activity to log against a site contact.
object
When the activity took place, in UK local time (GMT/BST). Required.
Example
2026-05-14T10:30:00What the activity was — the call, visit or email being recorded.
Example
Called to confirm cover for the bank holiday weekend.What was done or agreed as a result.
Example
Agreed 6 pickers for Saturday, confirmed by email.When to follow up next, in UK local time (GMT/BST).
Example
2026-05-21T09:00:00When the site was last visited, in UK local time (GMT/BST).
Example
2026-05-02T13:15:00The kind of activity, as an id from your agency’s Activity types lookup. An id that does not belong to your agency returns 400.
Example
4Your own reference for the activity, such as a calendar event id. Set when the activity is created and cannot be changed afterwards.
Example
cal-2026-05-14-0930Responses
Section titled “Responses”Created
A newly logged site activity.
object
The activity’s unique identifier, assigned by Recruso.
The site contact this activity was logged against.
When the activity took place, in UK local time (GMT/BST). Required.
What the activity was — the call, visit or email being recorded.
What was done or agreed as a result.
The kind of activity, as an id from your agency’s Activity types lookup. An id that does not belong to your agency returns 400.
Your own reference for the activity, such as a calendar event id. Set when the activity is created and cannot be changed afterwards.
Example
{ "siteActivityId": 7420, "siteContactPersonId": 88, "activityDate": "2026-05-14T10:30:00", "description": "Called to confirm cover for the bank holiday weekend.", "actionTaken": "Agreed 6 pickers for Saturday, confirmed by email.", "activityTypeId": 4, "eventId": "cal-2026-05-14-0930"}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"}
