API reference
Recruitment
41 requests. Each shows the permission a key needs, what to send and what comes back.
On this page
Applicants (the board or a list), with counts by stage, and the jobs address
GET/v1/recruitment/applicants
- Permission
recruit.view- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
view | query | enum | One of list, board · Default "list" |
stage | query | enum | One of new, screening, interview, onboarding, on_trial, hired, rejected, withdrawn, open, all · Default "open" |
roleId | query | uuid | |
source | query | enum | One of careers, email, manual |
q | query | string | |
quiet | query | enum | One of 1 |
due | query | enum | One of 1 |
Response object
applicantsarray of objectrequirediduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequired
countsobjectrequiredquietintegerrequired-9007199254740991 to 9007199254740991
dueintegerrequired-9007199254740991 to 9007199254740991
goneQuietDaysintegerrequired-9007199254740991 to 9007199254740991
jobsAddressstringrequiredcareersUrlstringrequiredcan be null
curl "https://app.workscope.co.uk/v1/recruitment/applicants" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"applicants": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"counts": {},
"quiet": -9007199254740991,
"due": -9007199254740991,
"goneQuietDays": -9007199254740991,
"jobsAddress": "1 Harbour Road, Bristol",
"careersUrl": "https://example.co.uk"
}Add an applicant by hand. An email address already an applicant adds to them (linked: true).
POST/v1/recruitment/applicants
- Permission
recruit.manage- Module
recruitment- Answers
201
Request body JSON
namestringrequired1–200 characters
emailconstant or stringoptionalcan be nullphonestringoptionalcan be nullUp to 50 characters
areastringoptionalcan be nullUp to 120 characters
availabilitystringoptionalcan be nullUp to 500 characters
rightToWorkbooleanoptionalcan be nullmessagestringoptionalcan be nullUp to 20000 characters
assignedUserIduuidoptionalcan be nullnextActionOndateoptionalcan be nullYYYY-MM-DD
nextActionstringoptionalcan be nullUp to 300 characters
roleIduuidoptionalcan be null
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be nulllinkedbooleanrequired
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Harbourside Dental",
"email": "",
"phone": "0117 496 0123",
"area": "text",
"availability": "text",
"rightToWork": false,
"message": "text",
"assignedUserId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"roleId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text",
"linked": false
}One applicant and their timeline (marks them read)
GET/v1/recruitment/applicants/{id}
- Permission
recruit.view- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be null
curl "https://app.workscope.co.uk/v1/recruitment/applicants/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text"
}Change an applicant: details, stage, roles, who has them, next action
PATCH/v1/recruitment/applicants/{id}
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
namestringoptional1–200 characters
emailconstant or stringoptionalcan be nullphonestringoptionalcan be nullUp to 50 characters
areastringoptionalcan be nullUp to 120 characters
availabilitystringoptionalcan be nullUp to 500 characters
rightToWorkbooleanoptionalcan be nullmessagestringoptionalcan be nullUp to 20000 characters
assignedUserIduuidoptionalcan be nullnextActionOndateoptionalcan be nullYYYY-MM-DD
nextActionstringoptionalcan be nullUp to 300 characters
stageenumoptionalOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"roleIdsarray of uuidoptionalUp to 20 items
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be null
curl -X PATCH "https://app.workscope.co.uk/v1/recruitment/applicants/ID" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Harbourside Dental",
"email": "",
"phone": "0117 496 0123",
"area": "text",
"availability": "text",
"rightToWork": false,
"message": "text",
"assignedUserId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"stage": "new",
"roleIds": [
"8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f"
]
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text"
}Delete an applicant for good: their timeline, emails, files and onboarding (recorded, without their name, in the privacy log)
DELETE/v1/recruitment/applicants/{id}
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
okconstantrequiredAlways
true
curl -X DELETE "https://app.workscope.co.uk/v1/recruitment/applicants/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"ok": true
}Email the applicant. Their answer comes back to them here. Links may only be to Workscope.
POST/v1/recruitment/applicants/{id}/email
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
subjectstringrequired1–300 characters
bodystringrequired1–20000 characters
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/email" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"subject": "text",
"body": "Side gate code is on the key safe."
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text"
}A ready-written email (thanks for applying, asking for more, or not this time) in the company's own words
GET/v1/recruitment/applicants/{id}/email-draft
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
kind | query | enumrequired | One of applicant_received, applicant_info, applicant_reject |
Response object
tostringrequiredcan be nullsubjectstringrequiredmessagestringrequired
curl "https://app.workscope.co.uk/v1/recruitment/applicants/ID/email-draft?kind=applicant_received" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"to": "2026-11-06",
"subject": "text",
"message": "text"
}A file that came with an application or an email
GET/v1/recruitment/applicants/{id}/events/{eventId}/attachments/{index}
- Permission
recruit.view- Module
recruitment- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
eventId | path | uuidrequired | |
index | path | integerrequired |
curl "https://app.workscope.co.uk/v1/recruitment/applicants/ID/events/ID/attachments/INDEX" \
-H "Authorization: Bearer wsk_your_key_here"Download everything held about an applicant: a ZIP of their record, timeline and files (recorded in the privacy log)
GET/v1/recruitment/applicants/{id}/export
- Permission
recruit.manage- Module
recruitment- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
curl "https://app.workscope.co.uk/v1/recruitment/applicants/ID/export" \
-H "Authorization: Bearer wsk_your_key_here"Add a file (a CV, a certificate): send the file itself as application/octet-stream, its name in the query
POST/v1/recruitment/applicants/{id}/files
- Permission
recruit.manage- Module
recruitment- Answers
201
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
name | query | stringrequired |
Request body the file itself
Send the file as the body, with Content-Type one of application/octet-stream. See Files and photos.
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/files?name=Harbourside%20Dental" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/octet-stream" \
--data-binary @file.pdfExample response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text"
}Notes from an interview, with a score from 1 to 5 if given
POST/v1/recruitment/applicants/{id}/interview-notes
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
bodystringrequired1–10000 characters
scoreintegeroptionalcan be null1 to 5
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/interview-notes" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"body": "Side gate code is on the key safe.",
"score": 1
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text"
}Book an interview: a booking on the interviewer's schedule (internal, never invoiced), and the invite emailed with a calendar file
POST/v1/recruitment/applicants/{id}/interviews
- Permission
recruit.manage or booking.manage- Module
recruitment- Answers
201
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
datedaterequiredYYYY-MM-DD
starttimerequiredHH:MM, 24-hour
endtimerequiredHH:MM, 24-hour
teamMemberIduuidrequiredplaceenumoptionalOne of
"office","other","phone","video"· Default"office"placeTextstringoptionalcan be nullUp to 500 characters
emailbooleanoptionalDefault
true
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/interviews" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"place": "office",
"placeText": "text",
"email": true
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text"
}Keep an applicant for another retention period instead of deleting them, saying why
POST/v1/recruitment/applicants/{id}/keep
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
reasonstringrequired1–500 characters
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/keep" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"reason": "text"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text"
}Add a note or a call to the timeline
POST/v1/recruitment/applicants/{id}/notes
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
kindenumoptionalOne of
"note","call"· Default"note"bodystringrequired1–10000 characters
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/notes" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"kind": "note",
"body": "Side gate code is on the key safe."
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text"
}Their onboarding: the checklist, what they gave (NI and bank masked), files and the signed contract
GET/v1/recruitment/applicants/{id}/onboarding
- Permission
recruit.view- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
statusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be nullpaystringrequiredcan be nullhoursstringrequiredcan be nullcontractTemplateNamestringrequiredcan be nulldetailsobjectrequirednamestringrequiredcan be nullsurnamestringrequiredcan be nullphonestringrequiredcan be nulladdressstringrequiredcan be nulldateOfBirthdaterequiredcan be nullYYYY-MM-DD
niNumberMaskedstringrequiredcan be nullbankMaskedstringrequiredcan be nullemergencyobjectrequiredcan be nullnamestringrequiredrelationshipstringrequiredcan be nullphonestringrequired
dbsNumberstringrequiredcan be nullfilesarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
kindenumrequiredOne of
"right_to_work","dbs"filenamestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
rightToWorkCheckedAtstringrequiredcan be nullrightToWorkCheckedBystringrequiredcan be nulldbsCheckedAtstringrequiredcan be nulldbsCheckedBystringrequiredcan be nullcontractobjectrequiredtextstringrequiredcan be nullsignedNamestringrequiredcan be nullsignedAtstringrequiredcan be nullsignedIpstringrequiredcan be nullhashstringrequiredcan be nullsignatureUrlstringrequiredcan be null
teamMemberIduuidrequiredcan be null
curl "https://app.workscope.co.uk/v1/recruitment/applicants/ID/onboarding" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z",
"pay": "text",
"hours": "text",
"contractTemplateName": "Harbourside Dental",
"details": {
"name": "Harbourside Dental",
"surname": "Harbourside Dental",
"phone": "0117 496 0123",
"address": "1 Harbour Road, Bristol",
"dateOfBirth": "2026-11-06"
},
"niNumberMasked": "text",
"bankMasked": "text",
"emergency": {
"name": "Harbourside Dental",
"relationship": "text",
"phone": "0117 496 0123"
},
"dbsNumber": "text",
"files": [
{
"index": -9007199254740991,
"kind": "right_to_work",
"filename": "Harbourside Dental",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"rightToWorkCheckedAt": "2026-11-06T09:30:00.000Z",
"rightToWorkCheckedBy": "text",
"dbsCheckedAt": "2026-11-06T09:30:00.000Z",
"dbsCheckedBy": "text",
"contract": {
"text": "text",
"signedName": "Harbourside Dental",
"signedAt": "2026-11-06T09:30:00.000Z",
"signedIp": "text",
"hash": "text",
"signatureUrl": "https://example.co.uk"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
}Start onboarding: a private link for 14 days where they give their details and sign their contract (emailed unless email is false)
POST/v1/recruitment/applicants/{id}/onboarding
- Permission
recruit.manage- Module
recruitment- Answers
201
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
startDatedaterequiredYYYY-MM-DD
roleTitlestringoptionalcan be nullUp to 120 characters
paystringoptionalcan be nullUp to 120 characters
hoursstringoptionalcan be nullUp to 120 characters
contractTemplateIduuidoptionalcan be nullemailbooleanoptionalDefault
true
Response object
statusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be nullpaystringrequiredcan be nullhoursstringrequiredcan be nullcontractTemplateNamestringrequiredcan be nulldetailsobjectrequirednamestringrequiredcan be nullsurnamestringrequiredcan be nullphonestringrequiredcan be nulladdressstringrequiredcan be nulldateOfBirthdaterequiredcan be nullYYYY-MM-DD
niNumberMaskedstringrequiredcan be nullbankMaskedstringrequiredcan be nullemergencyobjectrequiredcan be nullnamestringrequiredrelationshipstringrequiredcan be nullphonestringrequired
dbsNumberstringrequiredcan be nullfilesarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
kindenumrequiredOne of
"right_to_work","dbs"filenamestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
rightToWorkCheckedAtstringrequiredcan be nullrightToWorkCheckedBystringrequiredcan be nulldbsCheckedAtstringrequiredcan be nulldbsCheckedBystringrequiredcan be nullcontractobjectrequiredtextstringrequiredcan be nullsignedNamestringrequiredcan be nullsignedAtstringrequiredcan be nullsignedIpstringrequiredcan be nullhashstringrequiredcan be nullsignatureUrlstringrequiredcan be null
teamMemberIduuidrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/onboarding" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"startDate": "2026-11-06",
"roleTitle": "text",
"pay": "text",
"hours": "text",
"contractTemplateId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"email": true
}'Example response
{
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z",
"pay": "text",
"hours": "text",
"contractTemplateName": "Harbourside Dental",
"details": {
"name": "Harbourside Dental",
"surname": "Harbourside Dental",
"phone": "0117 496 0123",
"address": "1 Harbour Road, Bristol",
"dateOfBirth": "2026-11-06"
},
"niNumberMasked": "text",
"bankMasked": "text",
"emergency": {
"name": "Harbourside Dental",
"relationship": "text",
"phone": "0117 496 0123"
},
"dbsNumber": "text",
"files": [
{
"index": -9007199254740991,
"kind": "right_to_work",
"filename": "Harbourside Dental",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"rightToWorkCheckedAt": "2026-11-06T09:30:00.000Z",
"rightToWorkCheckedBy": "text",
"dbsCheckedAt": "2026-11-06T09:30:00.000Z",
"dbsCheckedBy": "text",
"contract": {
"text": "text",
"signedName": "Harbourside Dental",
"signedAt": "2026-11-06T09:30:00.000Z",
"signedIp": "text",
"hash": "text",
"signatureUrl": "https://example.co.uk"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
}Make them a team member On trial from what they gave (nothing typed again), with their documents, an app invite and a welcome email
POST/v1/recruitment/applicants/{id}/onboarding/approve
- Permission
recruit.manage or team.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
invitebooleanoptionalDefault
true
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/onboarding/approve" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"invite": true
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text"
}Tick (or untick) that their right to work and DBS were checked
POST/v1/recruitment/applicants/{id}/onboarding/checks
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
rightToWorkbooleanoptionaldbsbooleanoptional
Response object
statusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be nullpaystringrequiredcan be nullhoursstringrequiredcan be nullcontractTemplateNamestringrequiredcan be nulldetailsobjectrequirednamestringrequiredcan be nullsurnamestringrequiredcan be nullphonestringrequiredcan be nulladdressstringrequiredcan be nulldateOfBirthdaterequiredcan be nullYYYY-MM-DD
niNumberMaskedstringrequiredcan be nullbankMaskedstringrequiredcan be nullemergencyobjectrequiredcan be nullnamestringrequiredrelationshipstringrequiredcan be nullphonestringrequired
dbsNumberstringrequiredcan be nullfilesarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
kindenumrequiredOne of
"right_to_work","dbs"filenamestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
rightToWorkCheckedAtstringrequiredcan be nullrightToWorkCheckedBystringrequiredcan be nulldbsCheckedAtstringrequiredcan be nulldbsCheckedBystringrequiredcan be nullcontractobjectrequiredtextstringrequiredcan be nullsignedNamestringrequiredcan be nullsignedAtstringrequiredcan be nullsignedIpstringrequiredcan be nullhashstringrequiredcan be nullsignatureUrlstringrequiredcan be null
teamMemberIduuidrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/onboarding/checks" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"rightToWork": false,
"dbs": false
}'Example response
{
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z",
"pay": "text",
"hours": "text",
"contractTemplateName": "Harbourside Dental",
"details": {
"name": "Harbourside Dental",
"surname": "Harbourside Dental",
"phone": "0117 496 0123",
"address": "1 Harbour Road, Bristol",
"dateOfBirth": "2026-11-06"
},
"niNumberMasked": "text",
"bankMasked": "text",
"emergency": {
"name": "Harbourside Dental",
"relationship": "text",
"phone": "0117 496 0123"
},
"dbsNumber": "text",
"files": [
{
"index": -9007199254740991,
"kind": "right_to_work",
"filename": "Harbourside Dental",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"rightToWorkCheckedAt": "2026-11-06T09:30:00.000Z",
"rightToWorkCheckedBy": "text",
"dbsCheckedAt": "2026-11-06T09:30:00.000Z",
"dbsCheckedBy": "text",
"contract": {
"text": "text",
"signedName": "Harbourside Dental",
"signedAt": "2026-11-06T09:30:00.000Z",
"signedIp": "text",
"hash": "text",
"signatureUrl": "https://example.co.uk"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
}A document they uploaded (right to work, DBS)
GET/v1/recruitment/applicants/{id}/onboarding/files/{index}
- Permission
recruit.view- Module
recruitment- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
index | path | integerrequired |
curl "https://app.workscope.co.uk/v1/recruitment/applicants/ID/onboarding/files/INDEX" \
-H "Authorization: Bearer wsk_your_key_here"Another 14 days on the onboarding link, and the email again
POST/v1/recruitment/applicants/{id}/onboarding/resend
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
statusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be nullpaystringrequiredcan be nullhoursstringrequiredcan be nullcontractTemplateNamestringrequiredcan be nulldetailsobjectrequirednamestringrequiredcan be nullsurnamestringrequiredcan be nullphonestringrequiredcan be nulladdressstringrequiredcan be nulldateOfBirthdaterequiredcan be nullYYYY-MM-DD
niNumberMaskedstringrequiredcan be nullbankMaskedstringrequiredcan be nullemergencyobjectrequiredcan be nullnamestringrequiredrelationshipstringrequiredcan be nullphonestringrequired
dbsNumberstringrequiredcan be nullfilesarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
kindenumrequiredOne of
"right_to_work","dbs"filenamestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
rightToWorkCheckedAtstringrequiredcan be nullrightToWorkCheckedBystringrequiredcan be nulldbsCheckedAtstringrequiredcan be nulldbsCheckedBystringrequiredcan be nullcontractobjectrequiredtextstringrequiredcan be nullsignedNamestringrequiredcan be nullsignedAtstringrequiredcan be nullsignedIpstringrequiredcan be nullhashstringrequiredcan be nullsignatureUrlstringrequiredcan be null
teamMemberIduuidrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/onboarding/resend" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z",
"pay": "text",
"hours": "text",
"contractTemplateName": "Harbourside Dental",
"details": {
"name": "Harbourside Dental",
"surname": "Harbourside Dental",
"phone": "0117 496 0123",
"address": "1 Harbour Road, Bristol",
"dateOfBirth": "2026-11-06"
},
"niNumberMasked": "text",
"bankMasked": "text",
"emergency": {
"name": "Harbourside Dental",
"relationship": "text",
"phone": "0117 496 0123"
},
"dbsNumber": "text",
"files": [
{
"index": -9007199254740991,
"kind": "right_to_work",
"filename": "Harbourside Dental",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"rightToWorkCheckedAt": "2026-11-06T09:30:00.000Z",
"rightToWorkCheckedBy": "text",
"dbsCheckedAt": "2026-11-06T09:30:00.000Z",
"dbsCheckedBy": "text",
"contract": {
"text": "text",
"signedName": "Harbourside Dental",
"signedAt": "2026-11-06T09:30:00.000Z",
"signedIp": "text",
"hash": "text",
"signatureUrl": "https://example.co.uk"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
}The signature their contract was signed with
GET/v1/recruitment/applicants/{id}/onboarding/signature
- Permission
recruit.view- Module
recruitment- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
curl "https://app.workscope.co.uk/v1/recruitment/applicants/ID/onboarding/signature" \
-H "Authorization: Bearer wsk_your_key_here"Mark an applicant read (or unread again)
POST/v1/recruitment/applicants/{id}/read
- Permission
recruit.view- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
unreadbooleanoptionalDefault
false
Response object
okconstantrequiredAlways
true
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/read" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"unread": false
}'Example response
{
"ok": true
}Move to Rejected, and (unless email is false) send the "not this time" email
POST/v1/recruitment/applicants/{id}/reject
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
emailbooleanoptionalDefault
truesubjectstringoptionalUp to 300 characters
bodystringoptionalUp to 20000 characters
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/reject" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"email": true,
"subject": "text",
"body": "Side gate code is on the key safe."
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text"
}The end of the trial: keep them on (Hired), or it didn't work out (employment ends, future bookings go to nobody, the login stops)
POST/v1/recruitment/applicants/{id}/trial
- Permission
recruit.manage or team.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
outcomeenumrequiredOne of
"keep","end"endDatedateoptionalcan be nullYYYY-MM-DD
reasonstringoptionalcan be nullUp to 1000 characters
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullareastringrequiredcan be nullstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"sourceenumrequiredOne of
"careers","email","manual"rolesarray of objectrequirediduuidrequiredtitlestringrequired
assignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredgoneQuietbooleanrequiredunreadbooleanrequiredfilesintegerrequired-9007199254740991 to 9007199254740991
daysInStageintegerrequired-9007199254740991 to 9007199254740991
lastActivityAtstringrequiredlastActivitystringrequiredcan be nullcreatedAtstringrequiredavailabilitystringrequiredcan be nullrightToWorkbooleanrequiredcan be nullmessagestringrequiredcan be nulljobsAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","applied","email_in","email_out","note","call","stage","file","assigned","interview","onboarding","trial","retention"subjectstringrequiredcan be nullbodystringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
interviewsarray of objectrequiredbookingIduuidrequireddatedaterequiredcan be nullYYYY-MM-DD
startstringrequiredcan be nullendstringrequiredcan be nullteamMemberIduuidrequiredcan be nullinterviewerNamestringrequiredcan be nullplaceenumrequiredOne of
"office","other","phone","video"placeTextstringrequiredcan be nullwherestringrequiredstatusstringrequiredpastbooleanrequired
interviewScoreintegerrequiredcan be null-9007199254740991 to 9007199254740991
onboardingobjectrequiredcan be nullstatusenumrequiredOne of
"open","submitted","approved"expiresAtstringrequiredexpiredbooleanrequiredstartDatedaterequiredcan be nullYYYY-MM-DD
roleTitlestringrequiredcan be nulllinkstringrequiredstepsobjectrequiredsubmittedAtstringrequiredcan be nullapprovedAtstringrequiredcan be null
teamMemberIduuidrequiredcan be nullonTrialbooleanrequireddeleteOndaterequiredcan be nullYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
keptReasonstringrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/recruitment/applicants/ID/trial" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"outcome": "keep",
"endDate": "2026-11-06",
"reason": "text"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"area": "text",
"stage": "new",
"source": "careers",
"roles": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"title": "text"
}
],
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"goneQuiet": false,
"unread": false,
"files": -9007199254740991,
"daysInStage": -9007199254740991,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"createdAt": "2026-11-06T09:30:00.000Z",
"availability": "text",
"rightToWork": false,
"message": "text",
"jobsAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"subject": "text",
"body": "Side gate code is on the key safe.",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"interviews": [
{
"bookingId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"date": "2026-11-06",
"start": "09:00",
"end": "11:00",
"teamMemberId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"interviewerName": "Harbourside Dental",
"place": "office",
"placeText": "text",
"where": "text",
"status": "text",
"past": false
}
],
"interviewScore": -9007199254740991,
"onboarding": {
"status": "open",
"expiresAt": "2026-11-06T09:30:00.000Z",
"expired": false,
"startDate": "2026-11-06",
"roleTitle": "text",
"link": "text",
"steps": {},
"submittedAt": "2026-11-06T09:30:00.000Z",
"approvedAt": "2026-11-06T09:30:00.000Z"
},
"teamMemberId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"onTrial": false,
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06",
"keptReason": "text"
}The careers page settings (made, switched off, the first time)
GET/v1/recruitment/careers
- Permission
recruit.view- Module
recruitment- Answers
200
Response object
enabledbooleanrequiredslugstringrequiredurlstringrequiredcolourstringrequiredheadlinestringrequiredcan be nullaboutstringrequiredcan be nullperksarray of stringrequiredcoverUrlstringrequiredcan be nullphotosarray of objectrequiredidstringrequiredurlstringrequiredthumbUrlstringrequired
speculativebooleanrequiredautoReplybooleanrequiredprivacystringrequiredcan be nulllogoUrlstringrequiredcan be nullcompanyNamestringrequiredretentionMonthsconstantrequiredOption 1: constant
Always
3Option 2: constant
Always
6Option 3: constant
Always
12Option 4: constant
Always
24
curl "https://app.workscope.co.uk/v1/recruitment/careers" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"enabled": false,
"slug": "example-slug",
"url": "https://example.co.uk",
"colour": "text",
"headline": "text",
"about": "text",
"perks": [
"text"
],
"coverUrl": "https://example.co.uk",
"photos": [
{
"id": "text",
"url": "https://example.co.uk",
"thumbUrl": "https://example.co.uk"
}
],
"speculative": false,
"autoReply": false,
"privacy": "text",
"logoUrl": "https://example.co.uk",
"companyName": "Harbourside Dental",
"retentionMonths": 3
}Change the careers page: switch it on, its address, colour, words, perks
PATCH/v1/recruitment/careers
- Permission
recruit.manage- Module
recruitment- Answers
200
Request body JSON
enabledbooleanoptionalslugstringoptionalMatches
^[a-z0-9]+(?:-[a-z0-9]+)*$· 2–60 characterscolourstringoptionalMatches
^#[0-9a-fA-F]{6}$headlinestringoptionalcan be nullUp to 160 characters
aboutstringoptionalcan be nullUp to 10000 characters
perksarray of stringoptionalUp to 12 items
speculativebooleanoptionalautoReplybooleanoptionalprivacystringoptionalcan be nullUp to 3000 characters
retentionMonthsconstantoptionalOption 1: constant
Always
3Option 2: constant
Always
6Option 3: constant
Always
12Option 4: constant
Always
24
Response object
enabledbooleanrequiredslugstringrequiredurlstringrequiredcolourstringrequiredheadlinestringrequiredcan be nullaboutstringrequiredcan be nullperksarray of stringrequiredcoverUrlstringrequiredcan be nullphotosarray of objectrequiredidstringrequiredurlstringrequiredthumbUrlstringrequired
speculativebooleanrequiredautoReplybooleanrequiredprivacystringrequiredcan be nulllogoUrlstringrequiredcan be nullcompanyNamestringrequiredretentionMonthsconstantrequiredOption 1: constant
Always
3Option 2: constant
Always
6Option 3: constant
Always
12Option 4: constant
Always
24
curl -X PATCH "https://app.workscope.co.uk/v1/recruitment/careers" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"enabled": false,
"slug": "example-slug",
"colour": "#2563eb",
"headline": "text",
"about": "text",
"perks": [
"text"
],
"speculative": false,
"autoReply": false,
"privacy": "text",
"retentionMonths": 3
}'Example response
{
"enabled": false,
"slug": "example-slug",
"url": "https://example.co.uk",
"colour": "text",
"headline": "text",
"about": "text",
"perks": [
"text"
],
"coverUrl": "https://example.co.uk",
"photos": [
{
"id": "text",
"url": "https://example.co.uk",
"thumbUrl": "https://example.co.uk"
}
],
"speculative": false,
"autoReply": false,
"privacy": "text",
"logoUrl": "https://example.co.uk",
"companyName": "Harbourside Dental",
"retentionMonths": 3
}Set the cover picture: send the image itself (JPEG, PNG or WebP)
POST/v1/recruitment/careers/cover
- Permission
recruit.manage- Module
recruitment- Answers
200
Request body the file itself
Send the file as the body, with Content-Type one of image/jpeg, image/png, image/webp, image/heic, image/heif. See Files and photos.
Response object
enabledbooleanrequiredslugstringrequiredurlstringrequiredcolourstringrequiredheadlinestringrequiredcan be nullaboutstringrequiredcan be nullperksarray of stringrequiredcoverUrlstringrequiredcan be nullphotosarray of objectrequiredidstringrequiredurlstringrequiredthumbUrlstringrequired
speculativebooleanrequiredautoReplybooleanrequiredprivacystringrequiredcan be nulllogoUrlstringrequiredcan be nullcompanyNamestringrequiredretentionMonthsconstantrequiredOption 1: constant
Always
3Option 2: constant
Always
6Option 3: constant
Always
12Option 4: constant
Always
24
curl -X POST "https://app.workscope.co.uk/v1/recruitment/careers/cover" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: image/jpeg" \
--data-binary @photo.jpgExample response
{
"enabled": false,
"slug": "example-slug",
"url": "https://example.co.uk",
"colour": "text",
"headline": "text",
"about": "text",
"perks": [
"text"
],
"coverUrl": "https://example.co.uk",
"photos": [
{
"id": "text",
"url": "https://example.co.uk",
"thumbUrl": "https://example.co.uk"
}
],
"speculative": false,
"autoReply": false,
"privacy": "text",
"logoUrl": "https://example.co.uk",
"companyName": "Harbourside Dental",
"retentionMonths": 3
}Take the cover picture off
DELETE/v1/recruitment/careers/cover
- Permission
recruit.manage- Module
recruitment- Answers
200
Response object
enabledbooleanrequiredslugstringrequiredurlstringrequiredcolourstringrequiredheadlinestringrequiredcan be nullaboutstringrequiredcan be nullperksarray of stringrequiredcoverUrlstringrequiredcan be nullphotosarray of objectrequiredidstringrequiredurlstringrequiredthumbUrlstringrequired
speculativebooleanrequiredautoReplybooleanrequiredprivacystringrequiredcan be nulllogoUrlstringrequiredcan be nullcompanyNamestringrequiredretentionMonthsconstantrequiredOption 1: constant
Always
3Option 2: constant
Always
6Option 3: constant
Always
12Option 4: constant
Always
24
curl -X DELETE "https://app.workscope.co.uk/v1/recruitment/careers/cover" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"enabled": false,
"slug": "example-slug",
"url": "https://example.co.uk",
"colour": "text",
"headline": "text",
"about": "text",
"perks": [
"text"
],
"coverUrl": "https://example.co.uk",
"photos": [
{
"id": "text",
"url": "https://example.co.uk",
"thumbUrl": "https://example.co.uk"
}
],
"speculative": false,
"autoReply": false,
"privacy": "text",
"logoUrl": "https://example.co.uk",
"companyName": "Harbourside Dental",
"retentionMonths": 3
}An image on the careers page (logo, cover, a photo), for the preview
GET/v1/recruitment/careers/images/{id}
- Permission
recruit.view- Module
recruitment- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | stringrequired |
curl "https://app.workscope.co.uk/v1/recruitment/careers/images/ID" \
-H "Authorization: Bearer wsk_your_key_here"Add a photo to "About us" (up to 8): send the image itself
POST/v1/recruitment/careers/photos
- Permission
recruit.manage- Module
recruitment- Answers
201
Request body the file itself
Send the file as the body, with Content-Type one of image/jpeg, image/png, image/webp, image/heic, image/heif. See Files and photos.
Response object
enabledbooleanrequiredslugstringrequiredurlstringrequiredcolourstringrequiredheadlinestringrequiredcan be nullaboutstringrequiredcan be nullperksarray of stringrequiredcoverUrlstringrequiredcan be nullphotosarray of objectrequiredidstringrequiredurlstringrequiredthumbUrlstringrequired
speculativebooleanrequiredautoReplybooleanrequiredprivacystringrequiredcan be nulllogoUrlstringrequiredcan be nullcompanyNamestringrequiredretentionMonthsconstantrequiredOption 1: constant
Always
3Option 2: constant
Always
6Option 3: constant
Always
12Option 4: constant
Always
24
curl -X POST "https://app.workscope.co.uk/v1/recruitment/careers/photos" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: image/jpeg" \
--data-binary @photo.jpgExample response
{
"enabled": false,
"slug": "example-slug",
"url": "https://example.co.uk",
"colour": "text",
"headline": "text",
"about": "text",
"perks": [
"text"
],
"coverUrl": "https://example.co.uk",
"photos": [
{
"id": "text",
"url": "https://example.co.uk",
"thumbUrl": "https://example.co.uk"
}
],
"speculative": false,
"autoReply": false,
"privacy": "text",
"logoUrl": "https://example.co.uk",
"companyName": "Harbourside Dental",
"retentionMonths": 3
}Take a photo off
DELETE/v1/recruitment/careers/photos/{id}
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | stringrequired |
Response object
enabledbooleanrequiredslugstringrequiredurlstringrequiredcolourstringrequiredheadlinestringrequiredcan be nullaboutstringrequiredcan be nullperksarray of stringrequiredcoverUrlstringrequiredcan be nullphotosarray of objectrequiredidstringrequiredurlstringrequiredthumbUrlstringrequired
speculativebooleanrequiredautoReplybooleanrequiredprivacystringrequiredcan be nulllogoUrlstringrequiredcan be nullcompanyNamestringrequiredretentionMonthsconstantrequiredOption 1: constant
Always
3Option 2: constant
Always
6Option 3: constant
Always
12Option 4: constant
Always
24
curl -X DELETE "https://app.workscope.co.uk/v1/recruitment/careers/photos/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"enabled": false,
"slug": "example-slug",
"url": "https://example.co.uk",
"colour": "text",
"headline": "text",
"about": "text",
"perks": [
"text"
],
"coverUrl": "https://example.co.uk",
"photos": [
{
"id": "text",
"url": "https://example.co.uk",
"thumbUrl": "https://example.co.uk"
}
],
"speculative": false,
"autoReply": false,
"privacy": "text",
"logoUrl": "https://example.co.uk",
"companyName": "Harbourside Dental",
"retentionMonths": 3
}The careers page as visitors would see it, even while switched off
GET/v1/recruitment/careers/preview
- Permission
recruit.view- Module
recruitment- Answers
200
Response object
slugstringrequiredcompanyNamestringrequiredwebsitestringrequiredcan be nulllogoUrlstringrequiredcan be nullcolourstringrequiredheadlinestringrequiredcan be nullaboutstringrequiredcan be nullperksarray of stringrequiredcoverUrlstringrequiredcan be nullphotosarray of objectrequiredidstringrequiredurlstringrequiredthumbUrlstringrequired
speculativebooleanrequiredprivacystringrequiredrolesarray of objectrequiredslugstringrequiredtitlestringrequiredsummarystringrequiredcan be nullareastringrequiredcan be nullhoursstringrequiredcan be nullpaystringrequiredcan be nullemploymentTypeenumrequiredOne of
"employed","self_employed"closesOndaterequiredcan be nullYYYY-MM-DD
descriptionstringrequiredcan be null
roleobjectrequiredcan be nullslugstringrequiredtitlestringrequiredsummarystringrequiredcan be nullareastringrequiredcan be nullhoursstringrequiredcan be nullpaystringrequiredcan be nullemploymentTypeenumrequiredOne of
"employed","self_employed"closesOndaterequiredcan be nullYYYY-MM-DD
descriptionstringrequiredcan be null
previewbooleanrequired
curl "https://app.workscope.co.uk/v1/recruitment/careers/preview" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"slug": "example-slug",
"companyName": "Harbourside Dental",
"website": "https://example.co.uk",
"logoUrl": "https://example.co.uk",
"colour": "text",
"headline": "text",
"about": "text",
"perks": [
"text"
],
"coverUrl": "https://example.co.uk",
"photos": [
{
"id": "text",
"url": "https://example.co.uk",
"thumbUrl": "https://example.co.uk"
}
],
"speculative": false,
"privacy": "text",
"roles": [
{
"slug": "example-slug",
"title": "text",
"summary": "text",
"area": "text",
"hours": "text",
"pay": "text",
"employmentType": "employed",
"closesOn": "2026-11-06",
"description": "Side gate code is on the key safe."
}
],
"role": {
"slug": "example-slug",
"title": "text",
"summary": "text",
"area": "text",
"hours": "text",
"pay": "text",
"employmentType": "employed",
"closesOn": "2026-11-06",
"description": "Side gate code is on the key safe."
},
"preview": false
}Contract templates (the first one is made from Workscope's example the first time)
GET/v1/recruitment/contracts
- Permission
recruit.view- Module
recruitment- Answers
200
Response array of object
iduuidrequirednamestringrequiredbodystringrequiredarchivedbooleanrequiredcreatedAtstringrequired
curl "https://app.workscope.co.uk/v1/recruitment/contracts" \
-H "Authorization: Bearer wsk_your_key_here"Example response
[
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"body": "Side gate code is on the key safe.",
"archived": false,
"createdAt": "2026-11-06T09:30:00.000Z"
}
]Add a contract template
POST/v1/recruitment/contracts
- Permission
recruit.manage- Module
recruitment- Answers
201
Request body JSON
namestringrequired1–120 characters
bodystringrequired1–50000 characters
archivedbooleanoptional
Response object
iduuidrequirednamestringrequiredbodystringrequiredarchivedbooleanrequiredcreatedAtstringrequired
curl -X POST "https://app.workscope.co.uk/v1/recruitment/contracts" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Harbourside Dental",
"body": "Side gate code is on the key safe.",
"archived": false
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"body": "Side gate code is on the key safe.",
"archived": false,
"createdAt": "2026-11-06T09:30:00.000Z"
}Change or archive a contract template (contracts already sent keep their words)
PATCH/v1/recruitment/contracts/{id}
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
namestringoptional1–120 characters
bodystringoptional1–50000 characters
archivedbooleanoptional
Response object
iduuidrequirednamestringrequiredbodystringrequiredarchivedbooleanrequiredcreatedAtstringrequired
curl -X PATCH "https://app.workscope.co.uk/v1/recruitment/contracts/ID" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Harbourside Dental",
"body": "Side gate code is on the key safe.",
"archived": false
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"body": "Side gate code is on the key safe.",
"archived": false,
"createdAt": "2026-11-06T09:30:00.000Z"
}How many applicants have something nobody has opened yet (the Recruitment menu's number)
GET/v1/recruitment/counts
- Permission
recruit.view- Module
recruitment- Answers
200
Response object
unreadintegerrequired-9007199254740991 to 9007199254740991
curl "https://app.workscope.co.uk/v1/recruitment/counts" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"unread": -9007199254740991
}Applicants due for deletion in the next 30 days, and the privacy log
GET/v1/recruitment/retention
- Permission
recruit.view- Module
recruitment- Answers
200
Response object
monthsintegerrequired-9007199254740991 to 9007199254740991
duearray of objectrequirediduuidrequirednamestringrequiredstageenumrequiredOne of
"new","screening","interview","onboarding","on_trial","hired","rejected","withdrawn"deleteOndaterequiredYYYY-MM-DD
keptUntildaterequiredcan be nullYYYY-MM-DD
logarray of objectrequirediduuidrequiredactionenumrequiredOne of
"auto_deleted","deleted","exported","kept"countintegerrequired-9007199254740991 to 9007199254740991
detailstringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
curl "https://app.workscope.co.uk/v1/recruitment/retention" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"months": -9007199254740991,
"due": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"stage": "new",
"deleteOn": "2026-11-06",
"keptUntil": "2026-11-06"
}
],
"log": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"action": "auto_deleted",
"count": 3,
"detail": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
]
}The roles (open first), with how many applied for each
GET/v1/recruitment/roles
- Permission
recruit.view- Module
recruitment- Answers
200
Response array of object
iduuidrequiredtitlestringrequiredslugstringrequiredsummarystringrequiredcan be nulldescriptionstringrequiredcan be nullareastringrequiredcan be nullhoursstringrequiredcan be nullpaystringrequiredcan be nullemploymentTypeenumrequiredOne of
"employed","self_employed"statusenumrequiredOne of
"draft","open","closed"closesOndaterequiredcan be nullYYYY-MM-DD
applicantsintegerrequired-9007199254740991 to 9007199254740991
openApplicantsintegerrequired-9007199254740991 to 9007199254740991
createdAtstringrequired
curl "https://app.workscope.co.uk/v1/recruitment/roles" \
-H "Authorization: Bearer wsk_your_key_here"Example response
[
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"title": "text",
"slug": "example-slug",
"summary": "text",
"description": "Side gate code is on the key safe.",
"area": "text",
"hours": "text",
"pay": "text",
"employmentType": "employed",
"status": "draft",
"closesOn": "2026-11-06",
"applicants": -9007199254740991,
"openApplicants": -9007199254740991,
"createdAt": "2026-11-06T09:30:00.000Z"
}
]Add a role (a draft unless opened)
POST/v1/recruitment/roles
- Permission
recruit.manage- Module
recruitment- Answers
201
Request body JSON
titlestringrequired1–120 characters
summarystringoptionalcan be nullUp to 300 characters
descriptionstringoptionalcan be nullUp to 20000 characters
areastringoptionalcan be nullUp to 120 characters
hoursstringoptionalcan be nullUp to 120 characters
paystringoptionalcan be nullUp to 120 characters
employmentTypeenumoptionalOne of
"employed","self_employed"· Default"employed"statusenumoptionalOne of
"draft","open","closed"· Default"draft"closesOndateoptionalcan be nullYYYY-MM-DD
slugstringoptionalcan be nullMatches
^[a-z0-9]+(?:-[a-z0-9]+)*$· Up to 80 characters
Response object
iduuidrequiredtitlestringrequiredslugstringrequiredsummarystringrequiredcan be nulldescriptionstringrequiredcan be nullareastringrequiredcan be nullhoursstringrequiredcan be nullpaystringrequiredcan be nullemploymentTypeenumrequiredOne of
"employed","self_employed"statusenumrequiredOne of
"draft","open","closed"closesOndaterequiredcan be nullYYYY-MM-DD
applicantsintegerrequired-9007199254740991 to 9007199254740991
openApplicantsintegerrequired-9007199254740991 to 9007199254740991
createdAtstringrequired
curl -X POST "https://app.workscope.co.uk/v1/recruitment/roles" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"title": "text",
"summary": "text",
"description": "Side gate code is on the key safe.",
"area": "text",
"hours": "text",
"pay": "text",
"employmentType": "employed",
"status": "draft",
"closesOn": "2026-11-06",
"slug": "example-slug"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"title": "text",
"slug": "example-slug",
"summary": "text",
"description": "Side gate code is on the key safe.",
"area": "text",
"hours": "text",
"pay": "text",
"employmentType": "employed",
"status": "draft",
"closesOn": "2026-11-06",
"applicants": -9007199254740991,
"openApplicants": -9007199254740991,
"createdAt": "2026-11-06T09:30:00.000Z"
}Change a role, open it or close it
PATCH/v1/recruitment/roles/{id}
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
titlestringoptional1–120 characters
summarystringoptionalcan be nullUp to 300 characters
descriptionstringoptionalcan be nullUp to 20000 characters
areastringoptionalcan be nullUp to 120 characters
hoursstringoptionalcan be nullUp to 120 characters
paystringoptionalcan be nullUp to 120 characters
employmentTypeenumoptionalOne of
"employed","self_employed"· Default"employed"statusenumoptionalOne of
"draft","open","closed"· Default"draft"closesOndateoptionalcan be nullYYYY-MM-DD
slugstringoptionalcan be nullMatches
^[a-z0-9]+(?:-[a-z0-9]+)*$· Up to 80 characters
Response object
iduuidrequiredtitlestringrequiredslugstringrequiredsummarystringrequiredcan be nulldescriptionstringrequiredcan be nullareastringrequiredcan be nullhoursstringrequiredcan be nullpaystringrequiredcan be nullemploymentTypeenumrequiredOne of
"employed","self_employed"statusenumrequiredOne of
"draft","open","closed"closesOndaterequiredcan be nullYYYY-MM-DD
applicantsintegerrequired-9007199254740991 to 9007199254740991
openApplicantsintegerrequired-9007199254740991 to 9007199254740991
createdAtstringrequired
curl -X PATCH "https://app.workscope.co.uk/v1/recruitment/roles/ID" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"title": "text",
"summary": "text",
"description": "Side gate code is on the key safe.",
"area": "text",
"hours": "text",
"pay": "text",
"employmentType": "employed",
"status": "draft",
"closesOn": "2026-11-06",
"slug": "example-slug"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"title": "text",
"slug": "example-slug",
"summary": "text",
"description": "Side gate code is on the key safe.",
"area": "text",
"hours": "text",
"pay": "text",
"employmentType": "employed",
"status": "draft",
"closesOn": "2026-11-06",
"applicants": -9007199254740991,
"openApplicants": -9007199254740991,
"createdAt": "2026-11-06T09:30:00.000Z"
}Delete a role nobody has applied for (close it otherwise)
DELETE/v1/recruitment/roles/{id}
- Permission
recruit.manage- Module
recruitment- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
okconstantrequiredAlways
true
curl -X DELETE "https://app.workscope.co.uk/v1/recruitment/roles/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"ok": true
}