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;
}{
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"campaignName": "NEW TO DELETE",
"leadUrl": "https://api.lemlist.com/api/leads/alex.doe%40example.com",
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Inc",
"jobTitle": "Growth Engineer",
"companyDomain": "example.com",
"email": "support@lemlist.com",
"preferredContactMethod": "email",
"_id": "lea_fiDpiGV585wy3Oii2",
"isPaused": false,
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"emailStatus": "deliverable"
}"Bad team""Lead not found""An identifier (email, linkedinUrl or salesnavUrl) already belongs to another contact"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;
}{
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"campaignName": "NEW TO DELETE",
"leadUrl": "https://api.lemlist.com/api/leads/alex.doe%40example.com",
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Inc",
"jobTitle": "Growth Engineer",
"companyDomain": "example.com",
"email": "support@lemlist.com",
"preferredContactMethod": "email",
"_id": "lea_fiDpiGV585wy3Oii2",
"isPaused": false,
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"emailStatus": "deliverable"
}"Bad team""Lead not found""An identifier (email, linkedinUrl or salesnavUrl) already belongs to another contact"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.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: the company part was skipped, or FIELDS_KEPT when the update strategy kept values you sent (params.fields names them, company fields prefixed with company).
Show child attributes
Show child attributes
Was this page helpful?