Skip to content

Log an activity against a worker

POST
/v1/workers/{workerId}/activities
curl --request POST \
--url https://api2.recruso.co.uk/v1/workers/1/activities \
--header 'Authorization: <Authorization>' \
--header 'Content-Type: application/json' \
--data '{ "workerId": 4821, "eventId": "AAMkAGI2TG93AAA=", "activityDate": "2026-09-04T14:32:00", "activityTypeId": 4, "description": "Called about Thursday nights at Trafford Park; worker is interested.", "actionTaken": "Pencilled in for the Thursday shift; to confirm Monday.", "nextCallDate": "2026-09-08T09:00:00" }'

Adds an entry to a worker’s activity feed in your own agency: when you spoke to them, what was said, and what was done about it.

The feed only ever accumulates — an entry is a record of something that happened, so nothing here replaces or deduplicates what is already there.

ActivityDate is required and is UK local time, not UTC. ActivityTypeId must be an activity type in your agency’s lookup; one that does not exist returns 400. NextCallDate is when to call back, and is what a call-back list is built from.

The activity records the consultant it involved as well as who logged it. Both are your own credentials, and the consultant is fixed here — correcting the entry later does not move it. EventId is the Outlook calendar event id when the activity was raised as a calendar entry, and is likewise set only here.

A worker id belonging to another agency returns 404 rather than 403, so their existence is never disclosed.

Access. Requires a client-credentials access token. Tokens issued through the interactive user login are rejected.

workerId
required
integer format: int32

The workerId path parameter

Media typeapplication/json

An entry to add to a worker’s activity feed.

object
workerId

The worker the entry belongs to. Taken from the route; a value in the request body is ignored.

integer format: int32
Example
4821
eventId

The Outlook calendar event id, when the activity was raised as a calendar entry. Set when the activity is logged and cannot be changed afterwards, so correcting an entry leaves it alone. Up to 300 characters.

string
nullable
Example
AAMkAGI2TG93AAA=
activityDate

When the activity happened, in UK local time. Required — the column is NOT NULL, and an entry with no date has nowhere to sit in the feed.

string format: date-time
Example
2026-09-04T14:32:00
activityTypeId

The kind of activity, as an id from your agency’s Activity types lookup.

integer format: int16
nullable
Example
4
description

What was said or done.

string
nullable
Example
Called about Thursday nights at Trafford Park; worker is interested.
actionTaken

What was done about it.

string
nullable
Example
Pencilled in for the Thursday shift; to confirm Monday.
nextCallDate

When to call the worker back, in UK local time.

string format: date-time
nullable
Example
2026-09-08T09:00:00

Created

Media typeapplication/json
object
workerActivityId

The entry’s identifier.

integer format: int32
activityDate

When the activity happened, in UK local time.

string format: date-time
activityTypeId

The kind of activity, as an id from your agency’s Activity types lookup.

integer format: int16
nullable
description

What was said or done.

string
nullable
actionTaken

What was done about it.

string
nullable
nextCallDate

When to call the worker back, in UK local time.

string format: date-time
nullable
userId

The Recruso user id (tblUsers.UserID) of the consultant the activity involved, not the ASP.NET Identity id. Set when the activity is logged and not changed afterwards.

integer format: int16
nullable
eventId

The Outlook calendar event id, when the activity was raised as a calendar entry.

string
nullable
createdBy

The Recruso user id (tblUsers.UserID) that logged the entry, not the ASP.NET Identity id. The generic audit column; userId above is the consultant involved, and in most cases the two are the same person.

integer format: int16
nullable
createdOn

When the entry was logged, in UK local time.

string format: date-time
nullable
Example
{
"workerActivityId": 9930,
"activityDate": "2026-09-04T14:32:00",
"activityTypeId": 4,
"description": "Called about Thursday nights at Trafford Park; worker is interested.",
"actionTaken": "Pencilled in for the Thursday shift; to confirm Monday.",
"nextCallDate": "2026-09-08T09:00:00",
"userId": 100,
"eventId": "AAMkAGI2TG93AAA=",
"createdBy": 100,
"createdOn": "2026-09-04T14:35:11"
}

Bad Request

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"
}

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"
}