curl --request GET \
--url https://api.lemlist.com/api/activities \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.lemlist.com/api/activities"
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/activities', 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/activities")
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/activities",
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": "act_PbKqTGpQqSlPcoOZ5",
"type": "manualDone",
"userId": "usr_Emu1g29BMtBixhMSP",
"userName": "Guillaume Moubeche",
"bot": false,
"createdAt": "2025-10-28T08:07:38.375Z",
"leadFirstName": "John",
"leadLastName": "Doe",
"leadEmail": "support@lemlist.com",
"leadCompanyName": "Acme Inc",
"leadId": "lea_fiDpiGV585wy3Oii2",
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"opportunityId": "opp_LyXDV8KHzctQdLFpG",
"metaData": {
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"leadId": "lea_fiDpiGV585wy3Oii2",
"type": "manualDone"
},
"lead": {
"_id": "lea_fiDpiGV585wy3Oii2",
"isPaused": false,
"state": "manualNotInterested",
"personalized": false,
"source": "api",
"variables": {
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Inc",
"jobTitle": "Growth Engineer",
"companyDomain": "example.com",
"email": "support@lemlist.com",
"preferredContactMethod": "email",
"industry": "Technology",
"Company name": "John Doe"
},
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"enrichment": {
"emailStatus": "deliverable"
}
},
"campaignName": "NEW TO DELETE",
"sequenceTested": "B"
},
{
"_id": "act_j0NrG6rYEPP9TMmWC",
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"companyId": "cpn_Qf4CJuUrNUNmHm6uZ",
"type": "annotated",
"createdAt": "2025-10-28T04:25:00.653Z",
"note": "could help our GTM team be more productive",
"sendUserId": "usr_ahfFktBBHUIxbVG5P",
"userId": "usr_ahfFktBBHUIxbVG5P"
},
{
"_id": "act_WeKrlIaQlBnM3LZ6G",
"type": "manualNotInterested",
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"userName": "api",
"isFirst": false,
"bot": false,
"createdAt": "2025-10-28T02:14:34.834Z",
"name": "NEW TO DELETE",
"leadFirstName": "John",
"leadLastName": "Doe",
"leadEmail": "support@lemlist.com",
"leadCompanyName": "Acme Inc",
"leadId": "lea_fiDpiGV585wy3Oii2",
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"metaData": {
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"leadId": "lea_fiDpiGV585wy3Oii2",
"type": "manualNotInterested"
},
"lead": {
"_id": "lea_fiDpiGV585wy3Oii2",
"isPaused": false,
"state": "manualNotInterested",
"personalized": false,
"source": "api",
"variables": {
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Inc",
"jobTitle": "Growth Engineer",
"companyDomain": "example.com",
"email": "support@lemlist.com",
"preferredContactMethod": "email",
"industry": "Technology",
"Company name": "John Doe"
},
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"enrichment": {
"emailStatus": "deliverable"
}
},
"campaignName": "NEW TO DELETE",
"sequenceTested": "B"
},
{
"_id": "act_zktTG4HXXXSOQya5U",
"type": "paused",
"userName": "api",
"bot": false,
"createdAt": "2025-10-28T01:54:56.099Z",
"name": "NEW TO DELETE",
"leadFirstName": "John",
"leadLastName": "Doe",
"leadEmail": "support@lemlist.com",
"leadCompanyName": "Acme Inc",
"leadId": "lea_fiDpiGV585wy3Oii2",
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"metaData": {
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"leadId": "lea_fiDpiGV585wy3Oii2",
"type": "paused"
},
"lead": {
"_id": "lea_fiDpiGV585wy3Oii2",
"isPaused": false,
"state": "manualNotInterested",
"personalized": false,
"source": "api",
"variables": {
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Inc",
"jobTitle": "Growth Engineer",
"companyDomain": "example.com",
"email": "support@lemlist.com",
"preferredContactMethod": "email",
"industry": "Technology",
"Company name": "John Doe"
},
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"enrichment": {
"emailStatus": "deliverable"
}
},
"campaignName": "NEW TO DELETE",
"sequenceTested": "B"
},
{
"_id": "act_x6esGLhoPa2SMHCZ7",
"type": "emailsOpened",
"isFirst": false,
"stopped": false,
"createdAt": "2025-10-27T20:20:59.696Z",
"bot": false,
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"leadId": "lea_wj47uWhDbbN6Qq6oT",
"campaignId": "cam_oxeGg6paG3ZVxjHkH",
"sequenceId": "seq_ODjsLXkxXiySRw6dK",
"sequenceStep": 1,
"emailTemplateId": "etp_z3nAbjdHuewVEjIl5",
"createdBy": "usr_EvXz6JqPSJJL9lHkp",
"sendUserId": "usr_EvXz6JqPSJJL9lHkp",
"name": "Unicorn campaign",
"leadFirstName": "Sam",
"leadLastName": "Taylor",
"leadEmail": "sam@example.com",
"leadCompanyName": "lemlist",
"contactId": "ctc_FkeUdQHEfhqG2HMbK",
"relatedSentAt": "2020-12-07T11:49:14.830Z",
"metaData": {
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"campaignId": "cam_oxeGg6paG3ZVxjHkH",
"leadId": "lea_wj47uWhDbbN6Qq6oT",
"type": "emailsOpened",
"createdBy": "usr_EvXz6JqPSJJL9lHkp",
"taskId": "tsk_namMcIQnA6gxQIupP"
},
"lead": {
"_id": "lea_wj47uWhDbbN6Qq6oT",
"isPaused": false,
"state": "emailsUnsubscribed",
"personalized": false,
"source": "manually",
"variables": {
"firstName": "Sam ",
"lastName": "Taylor",
"email": "sam@example.com",
"companyName": "lemlist",
"linkedinUrl": "https://www.linkedin.com/in/sam-doe"
},
"contactId": "ctc_FkeUdQHEfhqG2HMbK",
"enrichment": {}
},
"campaignName": "Unicorn campaign",
"sequenceTested": "A",
"emailTemplateName": "Blank"
},
{
"_id": "act_q4tnlXNdXsBeQceYW",
"type": "emailsOpened",
"isFirst": false,
"stopped": false,
"createdAt": "2025-10-27T20:17:24.119Z",
"bot": false,
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"leadId": "lea_wj47uWhDbbN6Qq6oT",
"campaignId": "cam_oxeGg6paG3ZVxjHkH",
"sequenceId": "seq_ODjsLXkxXiySRw6dK",
"sequenceStep": 1,
"emailTemplateId": "etp_z3nAbjdHuewVEjIl5",
"createdBy": "usr_EvXz6JqPSJJL9lHkp",
"sendUserId": "usr_EvXz6JqPSJJL9lHkp",
"name": "Unicorn campaign",
"leadFirstName": "Sam",
"leadLastName": "Taylor",
"leadEmail": "sam@example.com",
"leadCompanyName": "lemlist",
"contactId": "ctc_FkeUdQHEfhqG2HMbK",
"relatedSentAt": "2020-12-07T11:49:14.830Z",
"metaData": {
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"campaignId": "cam_oxeGg6paG3ZVxjHkH",
"leadId": "lea_wj47uWhDbbN6Qq6oT",
"type": "emailsOpened",
"createdBy": "usr_EvXz6JqPSJJL9lHkp",
"taskId": "tsk_namMcIQnA6gxQIupP"
},
"lead": {
"_id": "lea_wj47uWhDbbN6Qq6oT",
"isPaused": false,
"state": "emailsUnsubscribed",
"personalized": false,
"source": "manually",
"variables": {
"firstName": "Sam ",
"lastName": "Taylor",
"email": "sam@example.com",
"companyName": "lemlist",
"linkedinUrl": "https://www.linkedin.com/in/sam-doe"
},
"contactId": "ctc_FkeUdQHEfhqG2HMbK",
"enrichment": {}
},
"campaignName": "Unicorn campaign",
"sequenceTested": "A",
"emailTemplateName": "Blank"
}
]"Bad team"Get Many Activities
Retrieves the history of all campaign activities and steps performed (optionally filtered by activity type and campaign).
curl --request GET \
--url https://api.lemlist.com/api/activities \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.lemlist.com/api/activities"
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/activities', 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/activities")
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/activities",
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": "act_PbKqTGpQqSlPcoOZ5",
"type": "manualDone",
"userId": "usr_Emu1g29BMtBixhMSP",
"userName": "Guillaume Moubeche",
"bot": false,
"createdAt": "2025-10-28T08:07:38.375Z",
"leadFirstName": "John",
"leadLastName": "Doe",
"leadEmail": "support@lemlist.com",
"leadCompanyName": "Acme Inc",
"leadId": "lea_fiDpiGV585wy3Oii2",
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"opportunityId": "opp_LyXDV8KHzctQdLFpG",
"metaData": {
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"leadId": "lea_fiDpiGV585wy3Oii2",
"type": "manualDone"
},
"lead": {
"_id": "lea_fiDpiGV585wy3Oii2",
"isPaused": false,
"state": "manualNotInterested",
"personalized": false,
"source": "api",
"variables": {
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Inc",
"jobTitle": "Growth Engineer",
"companyDomain": "example.com",
"email": "support@lemlist.com",
"preferredContactMethod": "email",
"industry": "Technology",
"Company name": "John Doe"
},
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"enrichment": {
"emailStatus": "deliverable"
}
},
"campaignName": "NEW TO DELETE",
"sequenceTested": "B"
},
{
"_id": "act_j0NrG6rYEPP9TMmWC",
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"companyId": "cpn_Qf4CJuUrNUNmHm6uZ",
"type": "annotated",
"createdAt": "2025-10-28T04:25:00.653Z",
"note": "could help our GTM team be more productive",
"sendUserId": "usr_ahfFktBBHUIxbVG5P",
"userId": "usr_ahfFktBBHUIxbVG5P"
},
{
"_id": "act_WeKrlIaQlBnM3LZ6G",
"type": "manualNotInterested",
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"userName": "api",
"isFirst": false,
"bot": false,
"createdAt": "2025-10-28T02:14:34.834Z",
"name": "NEW TO DELETE",
"leadFirstName": "John",
"leadLastName": "Doe",
"leadEmail": "support@lemlist.com",
"leadCompanyName": "Acme Inc",
"leadId": "lea_fiDpiGV585wy3Oii2",
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"metaData": {
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"leadId": "lea_fiDpiGV585wy3Oii2",
"type": "manualNotInterested"
},
"lead": {
"_id": "lea_fiDpiGV585wy3Oii2",
"isPaused": false,
"state": "manualNotInterested",
"personalized": false,
"source": "api",
"variables": {
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Inc",
"jobTitle": "Growth Engineer",
"companyDomain": "example.com",
"email": "support@lemlist.com",
"preferredContactMethod": "email",
"industry": "Technology",
"Company name": "John Doe"
},
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"enrichment": {
"emailStatus": "deliverable"
}
},
"campaignName": "NEW TO DELETE",
"sequenceTested": "B"
},
{
"_id": "act_zktTG4HXXXSOQya5U",
"type": "paused",
"userName": "api",
"bot": false,
"createdAt": "2025-10-28T01:54:56.099Z",
"name": "NEW TO DELETE",
"leadFirstName": "John",
"leadLastName": "Doe",
"leadEmail": "support@lemlist.com",
"leadCompanyName": "Acme Inc",
"leadId": "lea_fiDpiGV585wy3Oii2",
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"metaData": {
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"campaignId": "cam_bSn8EORHQxbWPjHvu",
"leadId": "lea_fiDpiGV585wy3Oii2",
"type": "paused"
},
"lead": {
"_id": "lea_fiDpiGV585wy3Oii2",
"isPaused": false,
"state": "manualNotInterested",
"personalized": false,
"source": "api",
"variables": {
"firstName": "John",
"lastName": "Doe",
"companyName": "Acme Inc",
"jobTitle": "Growth Engineer",
"companyDomain": "example.com",
"email": "support@lemlist.com",
"preferredContactMethod": "email",
"industry": "Technology",
"Company name": "John Doe"
},
"contactId": "ctc_xW8Ou6C03Csv8vatp",
"enrichment": {
"emailStatus": "deliverable"
}
},
"campaignName": "NEW TO DELETE",
"sequenceTested": "B"
},
{
"_id": "act_x6esGLhoPa2SMHCZ7",
"type": "emailsOpened",
"isFirst": false,
"stopped": false,
"createdAt": "2025-10-27T20:20:59.696Z",
"bot": false,
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"leadId": "lea_wj47uWhDbbN6Qq6oT",
"campaignId": "cam_oxeGg6paG3ZVxjHkH",
"sequenceId": "seq_ODjsLXkxXiySRw6dK",
"sequenceStep": 1,
"emailTemplateId": "etp_z3nAbjdHuewVEjIl5",
"createdBy": "usr_EvXz6JqPSJJL9lHkp",
"sendUserId": "usr_EvXz6JqPSJJL9lHkp",
"name": "Unicorn campaign",
"leadFirstName": "Sam",
"leadLastName": "Taylor",
"leadEmail": "sam@example.com",
"leadCompanyName": "lemlist",
"contactId": "ctc_FkeUdQHEfhqG2HMbK",
"relatedSentAt": "2020-12-07T11:49:14.830Z",
"metaData": {
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"campaignId": "cam_oxeGg6paG3ZVxjHkH",
"leadId": "lea_wj47uWhDbbN6Qq6oT",
"type": "emailsOpened",
"createdBy": "usr_EvXz6JqPSJJL9lHkp",
"taskId": "tsk_namMcIQnA6gxQIupP"
},
"lead": {
"_id": "lea_wj47uWhDbbN6Qq6oT",
"isPaused": false,
"state": "emailsUnsubscribed",
"personalized": false,
"source": "manually",
"variables": {
"firstName": "Sam ",
"lastName": "Taylor",
"email": "sam@example.com",
"companyName": "lemlist",
"linkedinUrl": "https://www.linkedin.com/in/sam-doe"
},
"contactId": "ctc_FkeUdQHEfhqG2HMbK",
"enrichment": {}
},
"campaignName": "Unicorn campaign",
"sequenceTested": "A",
"emailTemplateName": "Blank"
},
{
"_id": "act_q4tnlXNdXsBeQceYW",
"type": "emailsOpened",
"isFirst": false,
"stopped": false,
"createdAt": "2025-10-27T20:17:24.119Z",
"bot": false,
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"leadId": "lea_wj47uWhDbbN6Qq6oT",
"campaignId": "cam_oxeGg6paG3ZVxjHkH",
"sequenceId": "seq_ODjsLXkxXiySRw6dK",
"sequenceStep": 1,
"emailTemplateId": "etp_z3nAbjdHuewVEjIl5",
"createdBy": "usr_EvXz6JqPSJJL9lHkp",
"sendUserId": "usr_EvXz6JqPSJJL9lHkp",
"name": "Unicorn campaign",
"leadFirstName": "Sam",
"leadLastName": "Taylor",
"leadEmail": "sam@example.com",
"leadCompanyName": "lemlist",
"contactId": "ctc_FkeUdQHEfhqG2HMbK",
"relatedSentAt": "2020-12-07T11:49:14.830Z",
"metaData": {
"teamId": "tea_8QvkOiBfPdb2ZRhHi",
"campaignId": "cam_oxeGg6paG3ZVxjHkH",
"leadId": "lea_wj47uWhDbbN6Qq6oT",
"type": "emailsOpened",
"createdBy": "usr_EvXz6JqPSJJL9lHkp",
"taskId": "tsk_namMcIQnA6gxQIupP"
},
"lead": {
"_id": "lea_wj47uWhDbbN6Qq6oT",
"isPaused": false,
"state": "emailsUnsubscribed",
"personalized": false,
"source": "manually",
"variables": {
"firstName": "Sam ",
"lastName": "Taylor",
"email": "sam@example.com",
"companyName": "lemlist",
"linkedinUrl": "https://www.linkedin.com/in/sam-doe"
},
"contactId": "ctc_FkeUdQHEfhqG2HMbK",
"enrichment": {}
},
"campaignName": "Unicorn campaign",
"sequenceTested": "A",
"emailTemplateName": "Blank"
}
]"Bad team"Filtering by date
Activities can be filtered on theircreatedAt field using either of two
naming conventions:
minDate/maxDate(primary)startDate/endDate(aliases, kept consistent with sibling endpoints such as/campaigns/{campaignId}/stats)
1715385600) or
an ISO 8601 datetime (e.g. 2026-05-11T00:00:00Z).
When both names are provided, the primary one wins: minDate takes
precedence over startDate, and maxDate over endDate. maxDate must
be strictly greater than minDate when both are set.
Response
The response can includesequenceStep and totalSequenceStep fields, which are zero-indexed (starting at 0).
Activities also carry stepId, the stable identifier of the step that produced
them. Unlike sequenceStep — a position that shifts when a sequence’s steps are
reordered — stepId always points at the same step, so prefer it when you store
a reference. sequenceStep keeps being returned exactly as before.
stepId is present on every activity created from now on. Activities recorded
earlier gain it progressively as historical records are backfilled, so treat it
as optional when you read back through history.Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Query Parameters
API version. v2 is mandatory
v2 Filter by activity type. Accepts any value from the ActivityType enum — mind the exact spelling (email types are plural emails*, invites are linkedinInvite*). An unknown type returns 400.
A lemlist activity type. These are the exact values accepted by the type filter on GET /activities and returned as an activity's type. Mind the spelling: email types are plural (emailsSent), invites are linkedinInvite*.
emailsSent, emailsOpened, emailsClicked, emailsReplied, emailsExternalSent, emailsExternalReceived, emailsDone, emailsIgnored, emailsBounced, emailsFailed, emailsUnsubscribed, emailsInterested, emailsNotInterested, snoozed, annotated, aircallDone, aircallIgnored, aircallCreated, aircallEnded, aircallInterested, aircallNotInterested, apiDone, apiIgnored, apiInterested, apiNotInterested, apiFailed, apiUnsubscribed, enrichmentDone, enrichmentFailed, enrichmentSkipped, linkedinVisitDone, linkedinVisitFailed, linkedinVisitSkipped, linkedinCommentLastPostDone, linkedinCommentLastPostFailed, linkedinCommentLastPostSkipped, linkedinFollowDone, linkedinFollowFailed, linkedinFollowSkipped, linkedinLikeLastPostDone, linkedinLikeLastPostNoPost, linkedinLikeLastPostFailed, linkedinLikeLastPostSkipped, linkedinInviteDone, linkedinEndorseDone, linkedinEndorseFailed, linkedinEndorseSkipped, linkedinSent, linkedinInMailSent, linkedinOpened, linkedinInviteAccepted, linkedinInviteFailed, linkedinSendFailed, linkedinInMailFailed, linkedinInMailSkipped, linkedinVoiceNoteDone, linkedinVoiceNoteFailed, linkedinWithdrawInvitationDone, linkedinWithdrawInvitationFailed, linkedinVoiceNoteReplied, whatsappMessageSent, whatsappMessageDelivered, whatsappMessageOpened, whatsappReplied, whatsappMessageFailed, whatsappDone, whatsappIgnored, whatsappVoiceNoteSent, whatsappVoiceNoteDelivered, whatsappVoiceNoteOpened, whatsappVoiceNoteReplied, whatsappVoiceNoteFailed, whatsappVoiceNoteIgnored, smsSent, smsDone, smsDelivered, smsReplied, smsIgnored, smsFailed, aiVariableDone, aiVariableFailed, linkedinReplied, linkedinInterested, linkedinNotInterested, linkedinDone, linkedinIgnored, manualDone, manualIgnored, manualInterested, manualNotInterested, manualUnsubscribed, scheduleCancelled, paused, stopped, resumed, skipped, meetingBooked, conditionChosen, conditionalFailed, sendToAnotherCampaign, manualEmailQueued, manualLinkedinSendQueued, manualLinkedinVoiceNoteQueued, manualLinkedinInviteQueued, manualLinkedinCommentLastPostQueued, manualWhatsappMessageQueued, manualWhatsappVoiceNoteQueued, outOfOffice, mailinblackDetected, entityUnsubscribed, variableUnsubscribed, entitySubscribed, variableSubscribed Filter by campaign ID
Filter for first activity
Number of records to skip. Note: This is not traditional cursor-based pagination. To retrieve all activities, increment offset by the limit value on each request (e.g., offset=0, then offset=100, then offset=200, etc.).
Number of activities to retrieve. Default: 100. Maximum: 100
Filter by lead ID
Filter activities by createdAt >= minDate. Accepts either a Unix timestamp in seconds (e.g. 1715385600) or an ISO 8601 datetime (e.g. 2026-05-11T00:00:00Z). minDate is the primary name; startDate is accepted as an alias and minDate takes precedence when both are provided.
Filter activities by createdAt <= maxDate. Accepts either a Unix timestamp in seconds (e.g. 1715385600) or an ISO 8601 datetime (e.g. 2026-05-11T00:00:00Z). Must be strictly greater than minDate when both are provided. maxDate is the primary name; endDate is accepted as an alias and maxDate takes precedence when both are provided.
Alias for minDate, provided for consistency with sibling endpoints (e.g. /campaigns/{campaignId}/stats). Accepts either a Unix timestamp in seconds or an ISO 8601 datetime. Ignored when minDate is also provided.
Alias for maxDate, provided for consistency with sibling endpoints (e.g. /campaigns/{campaignId}/stats). Accepts either a Unix timestamp in seconds or an ISO 8601 datetime. Ignored when maxDate is also provided.
Response
Success
Unique activity identifier
A lemlist activity type. These are the exact values accepted by the type filter on GET /activities and returned as an activity's type. Mind the spelling: email types are plural (emailsSent), invites are linkedinInvite*.
emailsSent, emailsOpened, emailsClicked, emailsReplied, emailsExternalSent, emailsExternalReceived, emailsDone, emailsIgnored, emailsBounced, emailsFailed, emailsUnsubscribed, emailsInterested, emailsNotInterested, snoozed, annotated, aircallDone, aircallIgnored, aircallCreated, aircallEnded, aircallInterested, aircallNotInterested, apiDone, apiIgnored, apiInterested, apiNotInterested, apiFailed, apiUnsubscribed, enrichmentDone, enrichmentFailed, enrichmentSkipped, linkedinVisitDone, linkedinVisitFailed, linkedinVisitSkipped, linkedinCommentLastPostDone, linkedinCommentLastPostFailed, linkedinCommentLastPostSkipped, linkedinFollowDone, linkedinFollowFailed, linkedinFollowSkipped, linkedinLikeLastPostDone, linkedinLikeLastPostNoPost, linkedinLikeLastPostFailed, linkedinLikeLastPostSkipped, linkedinInviteDone, linkedinEndorseDone, linkedinEndorseFailed, linkedinEndorseSkipped, linkedinSent, linkedinInMailSent, linkedinOpened, linkedinInviteAccepted, linkedinInviteFailed, linkedinSendFailed, linkedinInMailFailed, linkedinInMailSkipped, linkedinVoiceNoteDone, linkedinVoiceNoteFailed, linkedinWithdrawInvitationDone, linkedinWithdrawInvitationFailed, linkedinVoiceNoteReplied, whatsappMessageSent, whatsappMessageDelivered, whatsappMessageOpened, whatsappReplied, whatsappMessageFailed, whatsappDone, whatsappIgnored, whatsappVoiceNoteSent, whatsappVoiceNoteDelivered, whatsappVoiceNoteOpened, whatsappVoiceNoteReplied, whatsappVoiceNoteFailed, whatsappVoiceNoteIgnored, smsSent, smsDone, smsDelivered, smsReplied, smsIgnored, smsFailed, aiVariableDone, aiVariableFailed, linkedinReplied, linkedinInterested, linkedinNotInterested, linkedinDone, linkedinIgnored, manualDone, manualIgnored, manualInterested, manualNotInterested, manualUnsubscribed, scheduleCancelled, paused, stopped, resumed, skipped, meetingBooked, conditionChosen, conditionalFailed, sendToAnotherCampaign, manualEmailQueued, manualLinkedinSendQueued, manualLinkedinVoiceNoteQueued, manualLinkedinInviteQueued, manualLinkedinCommentLastPostQueued, manualWhatsappMessageQueued, manualWhatsappVoiceNoteQueued, outOfOffice, mailinblackDetected, entityUnsubscribed, variableUnsubscribed, entitySubscribed, variableSubscribed Associated lead ID
Campaign ID
Sequence ID
Stable identifier of the sequence step that produced this activity. Present on every activity created from now on; older activities gain it progressively as historical records are backfilled, so treat it as optional when reading history.
0-based position of the step within the sequence. Still emitted on every activity, unchanged. Prefer stepId for a reference that survives steps being reordered.
0-based count of the sequence steps already delivered to this lead.
When the activity occurred
Contact the activity relates to. Present on every activity, campaign or not.
Lead email as it was when the activity happened. Campaign activities only (absent when the activity has no leadId).
Lead first name as it was when the activity happened. Campaign activities only, and only if the lead had the variable at that moment. For a name on every activity, read the current lead (lead.variables.firstName in v2) or the contact instead.
Lead last name as it was when the activity happened. Same scope as leadFirstName.
Lead company name as it was when the activity happened. Same scope as leadFirstName.
Was this page helpful?