lemlist node reference - all 127 operations, the credential it needs, and a worked example.
lemlist API (Email Marketing). 127 operations: leads (add, update, list, get, launch, pause, resume, mark interested, custom variables, CRM import); campaigns (create, start, pause, duplicate, stats, reports, export); sequences, steps and A/B tests; the shared inbox (send email, LinkedIn and WhatsApp, drafts, labels); CRM contacts, lists and companies; tasks; sending schedules; enrichment; the people and companies prospecting database; signal agents; lemwarm and deliverability alerts; unsubscribes; team, users and fields; activities and webhooks.
Credential: lemlist API key - see Credentials.
lemlist has no scope system and no OAuth flow. Its OpenAPI spec declares exactly ONE security scheme - HTTP basicAuth - applied globally with an empty scope array, and not a single one of the 140 operations attaches a scope, permission or capability to it. The credential is a workspace API key minted at app.lemlist.com/settings/integrations and sent as Basic auth with an EMPTY login and the key as the password (the leading colon in --user ":YourApiKey" is the whole trick). It carries whatever the workspace user behind it can already do, so every operation below either works or the credential does not - a refusal is never a missing checkbox. A 401 or 403 means the key is wrong, revoked, or belongs to a different workspace than the campaign, lead or contact being named; limit the blast radius by issuing it under a user with a restricted workspace role. Two gates that do exist are not per-operation: enrichment spends team CREDITS (check them with Get remaining credits) rather than needing a grant, and every route shares one rate limit of 20 requests per 2 seconds per key, which answers 429 with Retry-After.
| Operation | What it does |
|---|
addLead | Add lead to campaign |
updateLead | Update lead in campaign |
deleteLead | Delete or unsubscribe lead by ID |
unsubscribeLeadFromCampaign | Unsubscribe lead from campaign by email |
getCampaignLeads | List leads in a campaign |
getLead | Get lead by ID or email |
getLeadByEmail | Get lead by email |
launchLead | Launch (approve) a lead awaiting review |
pauseLead | Pause lead |
resumeLead | Resume paused lead |
markLeadInterested | Mark lead as interested |
markLeadNotInterested | Mark lead as not interested |
markLeadInterestedInCampaign | Mark lead interested (in a campaign) |
markLeadNotInterestedInCampaign | Mark lead not interested (in a campaign) |
addLeadVariables | Add custom variables on a lead |
updateLeadVariables | Update custom variables on a lead |
eraseLeadVariables | Erase custom variables on a lead |
importLeadsFromCrm | Import leads from a CRM filter |
getCrmFilters | List CRM filters |
| Operation | What it does |
|---|
listCampaigns | List campaigns |
createCampaign | Create campaign |
getCampaign | Get campaign |
updateCampaign | Update campaign settings |
startCampaign | Start campaign |
pauseCampaign | Pause campaign |
duplicateCampaign | Duplicate campaign |
getCampaignStatutes | Get campaign lead-status breakdown |
getCampaignStats | Get campaign stats |
getBatchCampaignStats | Get stats for several campaigns |
getCampaignReports | Get campaign reports |
exportCampaignLeads | Export campaign leads |
| Operation | What it does |
|---|
getCampaignSequences | List a campaign's sequences |
addSequenceStep | Add step to sequence |
updateSequenceStep | Update sequence step |
deleteSequenceStep | Delete sequence step |
createAbTestVariant | Create A/B test variant |
getAbTestVariant | Get A/B test variant |
updateAbTestVariant | Update A/B test variant |
deleteAbTestVariant | Delete A/B test variant |
selectAbTestWinner | Select A/B test winner |
| Operation | What it does |
|---|
getInboxes | List conversations |
getContactMessages | Get a contact's messages |
sendInboxEmail | Send email |
sendLinkedinMessage | Send LinkedIn message |
sendWhatsappMessage | Send WhatsApp message |
| Operation | What it does |
|---|
listDrafts | List drafts for a contact |
createDraft | Create draft |
getDraft | Get draft |
updateDraft | Update draft |
deleteDraft | Delete draft |
| Operation | What it does |
|---|
getInboxLabels | List labels |
createInboxLabel | Create label |
getInboxLabel | Get label |
attachConversationLabels | Attach labels to a conversation |
removeConversationLabels | Remove labels from a conversation |
| Operation | What it does |
|---|
upsertContact | Add or update contact |
getContacts | List / search contacts |
getContact | Get contact |
deleteContact | Delete contact |
getContactLists | List contact lists |
createContactList | Create contact list |
updateContactListEntities | Add or remove contacts in a list |
| Operation | What it does |
|---|
getCompanies | List / search companies |
upsertCompany | Add or update company |
deleteCompany | Delete company |
getCompanyNotes | List company notes |
createCompanyNote | Create company note |
| Operation | What it does |
|---|
createTask | Create task |
getTasks | List tasks |
updateTask | Update task |
ignoreTasks | Ignore (dismiss) tasks |
| Operation | What it does |
|---|
getSchedules | List schedules |
createSchedule | Create schedule |
getSchedule | Get schedule |
updateSchedule | Update schedule |
deleteSchedule | Delete schedule |
getCampaignSchedules | List a campaign's schedules |
associateScheduleWithCampaign | Attach schedule to campaign |
| Operation | What it does |
|---|
enrich | Enrich data (find / verify email, phone, LinkedIn) |
bulkEnrich | Bulk enrich |
enrichLead | Enrich an existing lead |
getEnrichmentResult | Get enrichment result |
| Operation | What it does |
|---|
getDatabaseFilters | List database filters |
searchPeopleDatabase | Search people database |
searchCompaniesDatabase | Search companies database |
| Operation | What it does |
|---|
listSignalAgents | List signal agents |
createSignalAgent | Create signal agent |
updateSignalAgent | Update signal agent |
deleteSignalAgent | Delete signal agent |
getSignals | Get detected signals |
pushExternalSignals | Push external signals |
getSignalAgentHistory | Get signal agent config history |
listSignalTypes | List available signal types |
listSignalFilters | List allowed filters for a signal type |
autocompleteSignalFilterValues | Autocomplete a filter's values |
| Operation | What it does |
|---|
startLemwarm | Start lemwarm on a mailbox |
pauseLemwarm | Pause lemwarm on a mailbox |
getLemwarmSettings | Get lemwarm settings |
updateLemwarmSettings | Update lemwarm settings |
listDeliverabilityAlerts | List deliverability alerts |
createDeliverabilityAlert | Create deliverability alert |
getDeliverabilityAlert | Get deliverability alert |
updateDeliverabilityAlert | Update deliverability alert |
deleteDeliverabilityAlert | Delete deliverability alert |
| Operation | What it does |
|---|
getUnsubscribes | List unsubscribes |
getUnsubscribe | Get unsubscribe by email |
addUnsubscribe | Add email or domain to the unsubscribe list |
deleteUnsubscribe | Re-subscribe an email |
listUnsubscribedVariables | List unsubscribed variables |
bulkUnsubscribeVariables | Bulk unsubscribe variables |
getUnsubscribedVariable | Get unsubscribed variable |
unsubscribeVariable | Unsubscribe a variable |
resubscribeVariable | Re-subscribe a variable |
getContactSubscriptionStatus | Get a contact's subscription status |
unsubscribeContact | Unsubscribe a contact |
resubscribeContact | Re-subscribe a contact |
| Operation | What it does |
|---|
getTeam | Get team |
getTeamSenders | List team senders |
getTeamCredits | Get remaining credits |
getTeamCrmUsers | List team CRM users |
getUser | Get user |
getUserChannels | List the user's channels |
listFields | List custom fields |
| Operation | What it does |
|---|
getActivities | List activities |
listWebhooks | List webhooks |
createWebhook | Add webhook |
deleteWebhook | Delete webhook |
Push a lead into a campaign and let lemlist enrich it
The node's default operation, and the one whose endpoint changed: it now posts to the documented POST /campaigns/{id}/leads/ with the email in the BODY, where it used to use a legacy path form that no longer appears in lemlist's spec at all. Same inputs and same output — but the body form is what makes the enrichment flags below reachable.
Set Operation to addLead, then fill in:
| Field | Value | Notes |
|---|
campaignId | {{ vars.lemlistCampaignId }} | The campaign to add into |
email | {{ myTrigger.email }} | |
firstName | {{ myTrigger.firstName }} | |
companyName | {{ myTrigger.company }} | |
deduplicate | true | Skip if the lead already exists anywhere in the account — only reachable via the body form |
Sets {{lead.email}} and {{lead._id}}. lemlist allows 20 requests per 2 seconds per key, so a Loop over a list needs a Delay.