curl --request PATCH \
--url https://api.lemlist.com/api/campaigns/{campaignId}/leads/{leadId} \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"preferredContactMethod": "email"
}
'import requests
url = "https://api.lemlist.com/api/campaigns/{campaignId}/leads/{leadId}"
payload = { "preferredContactMethod": "email" }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({preferredContactMethod: 'email'})
};
fetch('https://api.lemlist.com/api/campaigns/{campaignId}/leads/{leadId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));require 'uri'
require 'net/http'
url = URI("https://api.lemlist.com/api/campaigns/{campaignId}/leads/{leadId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"preferredContactMethod\": \"email\"\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lemlist.com/api/campaigns/{campaignId}/leads/{leadId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'preferredContactMethod' => 'email'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}Update Lead in a Campaign
Updates an existing lead’s information in a specific campaign.
curl --request PATCH \
--url https://api.lemlist.com/api/campaigns/{campaignId}/leads/{leadId} \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"preferredContactMethod": "email"
}
'import requests
url = "https://api.lemlist.com/api/campaigns/{campaignId}/leads/{leadId}"
payload = { "preferredContactMethod": "email" }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({preferredContactMethod: 'email'})
};
fetch('https://api.lemlist.com/api/campaigns/{campaignId}/leads/{leadId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));require 'uri'
require 'net/http'
url = URI("https://api.lemlist.com/api/campaigns/{campaignId}/leads/{leadId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"preferredContactMethod\": \"email\"\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lemlist.com/api/campaigns/{campaignId}/leads/{leadId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'preferredContactMethod' => 'email'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}firstName or jobTitle are written on the contact, company fields such as companyName on the company. Only the fields you send change. updateStrategy decides what the lead, its contact and its company keep. overwrite (default): sent values replace stored ones, an empty value clears. overwriteIgnoreEmpty: same, empty values ignored. fillEmptyOnly: only empty fields are filled, identifiers, company link, owner and status kept. Kept values are listed in warnings (FIELDS_KEPT, params.fields: lead variables and contact fields by name, company fields prefixed with company).companyName alone renames the company the lead is linked to. When the lead has no company yet, it gets linked to a company with that name, created when needed.Either way the response reports it: warnings carries a company-fields-write-company-record entry naming the company-prefixed keys you sent in params.fields. It is informational, the update went through. To edit a company on purpose, use Upsert Company.Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Path Parameters
The unique identifier of the campaign
The unique identifier of the lead
Query Parameters
What the lead, its contact and its company keep. overwrite (default): sent values replace stored ones, an empty string clears. overwriteIgnoreEmpty: empty values ignored. fillEmptyOnly: only empty fields filled, identifiers, links, owner and status kept. Other values: 400.
overwrite, overwriteIgnoreEmpty, fillEmptyOnly Body
Response
Success
URL to access the lead
Whether the lead is paused in the campaign
Associated contact ID
Email verification status
Non-blocking notices, never a failure — the request went through. They tell you what happened to the company part (written, or skipped and why) and which values the update strategy kept. See code.
Show child attributes
Show child attributes
Was this page helpful?