Skip to content

Upload a document against a worker

POST
/v1/workers/{workerId}/documents
curl --request POST \
--url https://api2.recruso.co.uk/v1/workers/1/documents \
--header 'Authorization: <Authorization>' \
--header 'Content-Type: multipart/form-data' \
--form workerId=4821 \
--form file=@file

Adds a file to a worker’s documents in your own agency, sent as multipart/form-data with the file in a part named file.

Accepted types are doc, docx, xls, xlsx, pdf, jpg, jpeg, png, gif, tif, tiff, msg, up to 50 MB. Anything else returns 400.

An upload cannot be corrected. The record carries no modified-by audit, so there is nothing to record a correction with: replace a document by uploading the new one and removing the old.

The name you upload is kept as the document name, and the file is stored under a generated identifier instead, so a file whose name another agency has already used is fine. Documents are held in private storage, and the response does not say where.

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

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

workerId
required
integer format: int32

The workerId path parameter

Media typemultipart/form-data

The file to hold against a worker, sent as multipart/form-data.

object
workerId

The worker the document belongs to. Taken from the route.

integer format: int32
Example
4821
file

The file itself. Its name is kept as the document name; the name it is stored under is generated, so uploading a file whose name another agency has already used is fine.

string format: binary
nullable

Created

Media typeapplication/json
object
workerDocumentId

The document’s identifier.

integer format: int32
documentName

The name the file was uploaded as.

string
createdBy

The Recruso user id (tblUsers.UserID) that uploaded it, not the ASP.NET Identity id.

integer format: int16
nullable
createdOn

When it was uploaded, in UK local time.

string format: date-time
nullable
Example
{
"workerDocumentId": 7714,
"documentName": "New Microsoft Word Document.docx",
"createdBy": 100,
"createdOn": "2026-09-07T11:04:22"
}

Bad Request

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

Unauthorized

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

Forbidden

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

Not Found

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