Skip to content

Update a lead

PUT
/v1/leads/{id}
curl --request PUT \
--url https://api2.recruso.co.uk/v1/leads/1 \
--header 'Authorization: <Authorization>' \
--header 'Content-Type: application/json' \
--data '{ "id": 137, "clientName": "Northgate Foods Ltd", "branchId": 4, "mediaSourceId": 6, "companyRegNumber": "08841972", "vatYn": true, "vatRegNumber": "GB 412 8853 07", "website": "https://www.example-northgate.co.uk", "address1": "Northgate House", "address2": "22 Ashburton Road West", "town": "Trafford Park", "county": "Greater Manchester", "country": "United Kingdom", "postCode": "M17 1RU", "telephone1": "0161 872 4400", "telephone2": "0161 872 4401", "fax": "0161 872 4402", "email": "operations@example-northgate.co.uk", "notes": "Invoices must quote the site purchase order number." }'

Updates one lead in your own agency.

This is a full replacement, not a partial merge: every mutable field is written from the request, so a field you omit is set to null.

This endpoint does not convert a lead into a client. There is no field here that changes the record’s type, and none of the client-only fields — terms, invoicing, Sage — can be set through it.

A live client id returns 404; update it through UpdateClient. So does a lead belonging to another agency, or under a branch the Recruso user behind your API app cannot access. branchId must be a branch that user can access: moving a lead to any other branch returns 400, not 403.

modifiedBy and modifiedOn are set from your credentials and the current UK local time.

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

id
required
integer format: int32

The id path parameter

Media typeapplication/json

The replacement values for a lead. Every mutable field is written, so an omitted field is set to null.

object
id

The lead to update. Taken from the route; a value in the request body is ignored.

integer format: int32
Example
137
clientName

The client’s registered or trading name. Required, up to 100 characters.

string
Example
Northgate Foods Ltd
branchId

The branch the client is managed under. Must be a branch the Recruso user behind your API app can access.

integer format: int16
Example
4
mediaSourceId

The recruitment source the client came from, as an id from your agency’s Recruitment sources lookup.

integer format: int16
nullable
Example
6
companyRegNumber

The client’s company registration number. Required, up to 20 characters.

string
nullable
Example
08841972
vatYn

Whether the client is VAT registered. When true, vatRegNumber is required.

boolean
nullable
Example
true
vatRegNumber

The client’s VAT registration number. Required when vatYn is true.

string
nullable
Example
GB 412 8853 07
website

The client’s website.

string
nullable
Example
https://www.example-northgate.co.uk
address1

First line of the client’s trading address. Required, up to 100 characters.

string
nullable
Example
Northgate House
address2

Second line of the client’s trading address.

string
nullable
Example
22 Ashburton Road West
town

Town or city of the client’s trading address. Required, up to 50 characters.

string
nullable
Example
Trafford Park
county

County of the client’s trading address. Required, up to 50 characters.

string
nullable
Example
Greater Manchester
country

Country of the client’s trading address. Required, up to 50 characters.

string
nullable
Example
United Kingdom
postCode

Postcode of the client’s trading address. Required, up to 15 characters.

string
nullable
Example
M17 1RU
telephone1

The client’s main telephone number.

string
nullable
Example
0161 872 4400
telephone2

A second telephone number for the client.

string
nullable
Example
0161 872 4401
fax

The client’s fax number.

string
nullable
Example
0161 872 4402
email

The client’s main email address.

string
nullable
Example
operations@example-northgate.co.uk
notes

Free-text notes about the client. Up to 2000 characters.

string
nullable
Example
Invoices must quote the site purchase order number.

OK

Media typeapplication/json

A lead as it stands after the update.

object
clientId

The client’s unique identifier, assigned by Recruso.

integer format: int32
clientName

The client’s registered or trading name. Required, up to 100 characters.

string
userId

The Recruso user the client is assigned to. Set to the user behind your API app when the client is created.

integer format: int16
nullable
createdDate

When the client record was created, in UK local time (GMT/BST). A legacy column carrying the same value as createdOn.

string format: date-time
nullable
branchId

The branch the client is managed under. Must be a branch the Recruso user behind your API app can access.

integer format: int16
mediaSourceId

The recruitment source the client came from, as an id from your agency’s Recruitment sources lookup.

integer format: int16
nullable
companyRegNumber

The client’s company registration number. Required, up to 20 characters.

string
nullable
vatYn

Whether the client is VAT registered. When true, vatRegNumber is required.

boolean
nullable
vatRegNumber

The client’s VAT registration number. Required when vatYn is true.

string
nullable
website

The client’s website.

string
nullable
createdBy

The Recruso user who created the client.

integer format: int16
nullable
createdOn

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

string format: date-time
nullable
modifiedBy

The Recruso user who last updated the client. Null until the client is first updated.

integer format: int16
nullable
modifiedOn

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

string format: date-time
nullable
address1

First line of the client’s trading address. Required, up to 100 characters.

string
nullable
address2

Second line of the client’s trading address.

string
nullable
town

Town or city of the client’s trading address. Required, up to 50 characters.

string
nullable
county

County of the client’s trading address. Required, up to 50 characters.

string
nullable
country

Country of the client’s trading address. Required, up to 50 characters.

string
nullable
postCode

Postcode of the client’s trading address. Required, up to 15 characters.

string
nullable
telephone1

The client’s main telephone number.

string
nullable
telephone2

A second telephone number for the client.

string
nullable
fax

The client’s fax number.

string
nullable
email

The client’s main email address.

string
nullable
notes

Free-text notes about the client. Up to 2000 characters.

string
nullable
Example
{
"clientId": 137,
"clientName": "Northgate Foods Ltd",
"userId": 12,
"createdDate": "2026-03-04T09:12:44",
"branchId": 4,
"mediaSourceId": 6,
"companyRegNumber": "08841972",
"vatYn": true,
"vatRegNumber": "GB 412 8853 07",
"website": "https://www.example-northgate.co.uk",
"createdBy": 12,
"createdOn": "2026-03-04T09:12:44",
"modifiedBy": 12,
"modifiedOn": "2026-06-11T14:02:09",
"address1": "Northgate House",
"address2": "22 Ashburton Road West",
"town": "Trafford Park",
"county": "Greater Manchester",
"country": "United Kingdom",
"postCode": "M17 1RU",
"telephone1": "0161 872 4400",
"telephone2": "0161 872 4401",
"fax": "0161 872 4402",
"email": "operations@example-northgate.co.uk",
"notes": "Invoices must quote the site purchase order number."
}

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