curl --request GET \
--url https://api.lemlist.com/api/contacts/{idOrEmail} \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.lemlist.com/api/contacts/{idOrEmail}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.lemlist.com/api/contacts/{idOrEmail}', 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/contacts/{idOrEmail}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lemlist.com/api/contacts/{idOrEmail}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"_id": "ctc_xW8Ou6C03Csv8vatp",
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"fullName": "John Doe",
"email": "support@lemlist.com",
"fields": {
"firstName": "John",
"jobTitle": "Growth Engineer",
"lastName": "Doe",
"industry": "Technology",
"isActiveInCampaigns": false,
"lastCampaign": "NEW TO DELETE",
"lastLeadMarkedAsInterestedDate": "2025-10-28T02:12:31.971Z",
"leadStatus": "Marked as not Interested by api"
},
"campaigns": [
{
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"campaignState": "running",
"leadState": "review",
"leadId": "lea_fiDpiGV585wy3Oii2"
}
],
"ownerId": "usr_ahfFktBBHUIxbVG5P",
"createdAt": "2025-10-28T00:40:37.917Z",
"createdBy": "usr_ahfFktBBHUIxbVG5P",
"unsubscribed": false
}{
"error": "Match error: Failed Match.Where validation in field [0]"
}The authentication you supplied is incorrect{
"error": "Contact not found"
}Get Contact
Retrieves a specific contact by their ID or email address.
curl --request GET \
--url https://api.lemlist.com/api/contacts/{idOrEmail} \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.lemlist.com/api/contacts/{idOrEmail}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.lemlist.com/api/contacts/{idOrEmail}', 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/contacts/{idOrEmail}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lemlist.com/api/contacts/{idOrEmail}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"_id": "ctc_xW8Ou6C03Csv8vatp",
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"fullName": "John Doe",
"email": "support@lemlist.com",
"fields": {
"firstName": "John",
"jobTitle": "Growth Engineer",
"lastName": "Doe",
"industry": "Technology",
"isActiveInCampaigns": false,
"lastCampaign": "NEW TO DELETE",
"lastLeadMarkedAsInterestedDate": "2025-10-28T02:12:31.971Z",
"leadStatus": "Marked as not Interested by api"
},
"campaigns": [
{
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"campaignState": "running",
"leadState": "review",
"leadId": "lea_fiDpiGV585wy3Oii2"
}
],
"ownerId": "usr_ahfFktBBHUIxbVG5P",
"createdAt": "2025-10-28T00:40:37.917Z",
"createdBy": "usr_ahfFktBBHUIxbVG5P",
"unsubscribed": false
}{
"error": "Match error: Failed Match.Where validation in field [0]"
}The authentication you supplied is incorrect{
"error": "Contact not found"
}ctc_xxx) or an email address. To find a contact from its CRM record id, use GET /contacts?crmIds=.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 or email of the contact
Response
Success
A contact record in your CRM, as the lookups (GET /contacts?idsOrEmails=, GET /contacts?crmIds=, GET /contacts/{idOrEmail}) return it. Not to be confused with a lead which is a contact specifically added to a campaign.
Unique contact identifier
Team identifier the contact belongs to
Contact's calculated full name
Contact's primary email address
Contact fields, standard (firstName, lastName, phone, jobTitle...) and custom
List of campaigns the contact is associated with
Show child attributes
Show child attributes
Contact's LinkedIn profile URL
Contact's LinkedIn Sales Navigator URL
ID of the user who owns this contact
Contact creation timestamp
ID of the user who created the contact
Whether the contact is globally unsubscribed. When true, no outreach will be sent to this contact.
Verification status of each verified phone number.
Show child attributes
Show child attributes
CRM sync status for the contact, resolved against the team's active CRM provider (Hubspot, Salesforce, or Pipedrive). Only present when a CRM is connected and the contact has a record in it. crmRecordId maps a crmIds lookup back to the ids sent.
Show child attributes
Show child attributes
Values lemlist refused to write on this contact, each with its reason. Empty when none. Filter the list endpoint to only flagged contacts via GET /contacts?fieldRejectionReason=....
Show child attributes
Show child attributes
Was this page helpful?