Skip to main content
GET
Get Many Activities
This endpoint retrieves the history of all campaign activities and steps performed.

Filtering by date

Activities can be filtered on their createdAt field using either of two naming conventions:
  • minDate / maxDate (primary)
  • startDate / endDate (aliases, kept consistent with sibling endpoints such as /campaigns/{campaignId}/stats)
Both pairs accept either a Unix timestamp in seconds (e.g. 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 include sequenceStep 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

Authorization
string
header
required

Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.

Query Parameters

version
enum<string>
required

API version. v2 is mandatory

Available options:
v2
type
enum<string>

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*.

Available options:
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
campaignId
string

Filter by campaign ID

isFirst
boolean

Filter for first activity

offset
integer

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.).

limit
integer

Number of activities to retrieve. Default: 100. Maximum: 100

leadId
string

Filter by lead ID

minDate
string

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.

maxDate
string

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.

startDate
string

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.

endDate
string

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

_id
string

Unique activity identifier

type
enum<string>

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*.

Available options:
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
leadId
string

Associated lead ID

campaignId
string

Campaign ID

sequenceId
string

Sequence ID

stepId
string

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.

sequenceStep
number

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.

totalSequenceStep
number

0-based count of the sequence steps already delivered to this lead.

createdAt
string<date-time>

When the activity occurred

contactId
string

Contact the activity relates to. Present on every activity, campaign or not.

leadEmail
string

Lead email as it was when the activity happened. Campaign activities only (absent when the activity has no leadId).

leadFirstName
string

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.

leadLastName
string

Lead last name as it was when the activity happened. Same scope as leadFirstName.

leadCompanyName
string

Lead company name as it was when the activity happened. Same scope as leadFirstName.