---
title: Lemlist API Integration on Truto
slug: lemlist
category: Sales Enablement
canonical: "https://truto.one/integrations/detail/lemlist/"
---

# Lemlist API Integration on Truto



**Category:** Sales Enablement  
**Status:** Generally available

## Unified APIs

### Unified User Directory API

- **Users** — The User object represents a User.
- **Workspaces** — Workspaces represent concepts like teams, workspaces, projects in apps that support them

## MCP-ready AI tools

Truto exposes 81 tools for Lemlist that AI agents can call directly.

- **list_all_lemlist_teams** — Get the lemlist team associated with the authenticated account. Returns: _id, userIds, createdBy, createdAt, hooks, beta, slackWebhook, invitedUsers, agency, pictureId, example.
- **list_all_lemlist_team_senders** — List team senders in lemlist with their associated campaigns. Returns: userId, campaigns. An optional state filter narrows results by campaign state (running, paused, draft, ended, archived, errors).
- **list_all_lemlist_team_credits** — Get the lemlist team credit balance and its breakdown by source. Returns: credits, details, example.remaining with total, freemium, subscription, gifted, and paid credit counts.
- **list_all_lemlist_team_crm_users** — List CRM integrations connected by team users in lemlist. Returns: userId, crm, example. No required parameters.
- **get_single_lemlist_user_by_id** — Get a single lemlist user by id. Returns the user object including _id, email, role, linkedIn connection status and limits, and associated mailboxes with provider and warmup settings. Required: id.
- **list_all_lemlist_campaigns** — List all lemlist campaigns with optional filtering by status and sorting. Returns: _id, name, labels, createdAt, createdBy, status, archived, isEnded, hasError. Supports filtering by status (running, draft, archived, ended, paused, errors) and sorting by createdAt.
- **create_a_lemlist_campaign** — Create a new lemlist campaign. Returns the created campaign object including _id, name, sequenceId, scheduleIds, teamId, state, createdAt, and CRM configuration.
- **get_single_lemlist_campaign_by_id** — Get a single lemlist campaign by id. Returns the campaign object including _id, name, labels, createdAt, createdBy, status, state, scheduleIds, and CRM configuration. Required: id.
- **update_a_lemlist_campaign_by_id** — Update a lemlist campaign's configuration including name, stop conditions, and tracking settings. Returns: name, stopOnEmailReplied. Required: id.
- **lemlist_campaigns_pause** — Pause a running lemlist campaign. Returns: _id, state. Required: campaign_id.
- **list_all_lemlist_campaigns_reports** — Retrieve campaign report export status from lemlist, optionally filtered by campaign IDs. Returns a status object containing campaignId, campaignName, status, startedAt, endedAt, progress, total, and a download url for the exported report file.
- **list_all_lemlist_campaign_sequences** — List all sequences for a lemlist campaign, returned as a map keyed by sequence id. Each sequence value includes _id, steps (each with _id, type, delay, emailTemplateId, index, message, and a conditions array for branching steps), level, parentId, and conditionalStepIndex. Required: campaign_id.
- **list_all_lemlist_campaign_schedules** — List all schedules associated with a lemlist campaign. Returns: _id, name, secondsToWait, timezone, start, end, weekdays, teamId, createdBy, createdAt. Required: campaign_id.
- **create_a_lemlist_campaign_schedule** — Associate a schedule with a lemlist campaign. Returns: scheduleId, campaignId. Required: campaign_id, schedule_id.
- **list_all_lemlist_campaign_stats** — Get lemlist campaign statistics for a specific campaign, optionally filtered by date range and timezone. Returns: leadTotal, leadToLaunch, leadReadyToSend, leadInProgress, leadCompleted, sentCount, deliveredCount, openedCount, clickedCount, repliedCount, interestedCount. Required: campaign_id.
- **lemlist_campaign_stats_list_v_2** — Get lemlist campaign statistics via the v2 API, with optional filters for date range, sender, A/B variant, and channels. Returns: _id, name, labels, createdAt, createdBy, status. Required: campaign_id.
- **list_all_lemlist_schedules** — List all lemlist schedules. Returns: _id, name, secondsToWait, timezone, start, end, weekdays, teamId, createdBy, createdAt. Sorting is limited to the createdAt field.
- **create_a_lemlist_schedule** — Create a new schedule in lemlist. Returns the created schedule including _id, name, secondsToWait, timezone, start, end, weekdays, public, teamId, createdBy, and createdAt.
- **get_single_lemlist_schedule_by_id** — Get a single lemlist schedule by id. Returns: _id, name, secondsToWait, timezone, start, end, weekdays, teamId, createdBy, createdAt, public. Required: id.
- **update_a_lemlist_schedule_by_id** — Update a lemlist schedule by id. Returns the updated schedule including _id, name, secondsToWait, timezone, start, end, weekdays, public, teamId, createdBy, and createdAt. Required: id.
- **delete_a_lemlist_schedule_by_id** — Delete a lemlist schedule by id. Returns: _id. Required: id.
- **create_a_lemlist_sequence_step** — Add a step to a lemlist sequence. Returns the created step including its _id, type, delay, emailTemplateId, and message. Required: sequence_id.
- **update_a_lemlist_sequence_step_by_id** — Update a step in a lemlist sequence. Returns the updated step including its _id, type, delay, emailTemplateId, and message. Required: id, sequence_id.
- **delete_a_lemlist_sequence_step_by_id** — Delete a step from a lemlist sequence. Returns: ok. Required: id, sequence_id.
- **get_single_lemlist_lead_by_id** — Get a single lemlist lead by id. Returns: email, firstName, lastName, picture, phone, linkedinUrl, companyName, companyDomain, icebreaker, jobTitle, _id, isPaused, campaignId, emailStatus. Required: id.
- **lemlist_leads_search** — Search for a lemlist lead by email or id. Returns: email, firstName, lastName, picture, phone, linkedinUrl, companyName, companyDomain, icebreaker, jobTitle, _id, isPaused, campaignId, emailStatus. At least one of email or id must be supplied.
- **create_a_lemlist_campaign_lead** — Create a new lead in a lemlist campaign by email address. Returns: campaignId, campaignName, email, firstName, lastName, picture, phone, linkedinUrl, companyName, companyDomain, icebreaker, jobTitle, _id, isPaused, leadUrl. Required: campaign_id, email.
- **update_a_lemlist_campaign_lead_by_id** — Update a lead in a lemlist campaign, such as setting the preferred contact method. Returns: campaignId, campaignName, email, firstName, lastName, picture, phone, linkedinUrl, companyName, companyDomain, icebreaker, jobTitle, preferredContactMethod, _id, isPaused, leadUrl. Required: id, campaign_id.
- **lemlist_campaign_leads_bulk_delete** — Unsubscribe a lead from a lemlist campaign by email address. Returns: email, firstName, lastName, picture, phone, linkedinUrl, companyName, companyDomain, icebreaker, jobTitle, _id, isPaused, campaignId. Required: campaign_id, email.
- **create_a_lemlist_leads_start** — Resume a paused lead in lemlist by start_id. Returns an array of lead objects each containing _id, email, firstName, lastName, isPaused, and campaignId. Required: start_id.
- **create_a_lemlist_leads_pause** — Pause a lead in lemlist across all campaigns or within a specific campaign. Returns an array of lead objects including _id, email, firstName, lastName, companyName, campaignId, and isPaused (set to true). Optional: campaignId to limit the pause to a single campaign. Required: pause_id.
- **create_a_lemlist_leads_interested** — Mark a lead as interested in lemlist by lead ID or email. Returns an array of lead objects including _id, email, firstName, lastName, companyName, campaignId, and isPaused. Required: lead_id_or_email.
- **create_a_lemlist_leads_notinterested** — Mark a lemlist lead as not interested using the lead's id or email address. Returns an array of updated lead records including _id, email, firstName, lastName, companyName, companyDomain, isPaused, and campaignId for each campaign the lead belongs to. Required: lead_id_or_email.
- **create_a_lemlist_lead_interested** — Mark a lemlist lead as interested in a specific campaign. Returns the lead object including _id, email, firstName, lastName, phone, companyName, companyDomain, jobTitle, isPaused, and campaignId. Required: campaign_id, lead_id_or_email.
- **create_a_lemlist_lead_notinterested** — Mark a lemlist lead as not interested in a specific campaign. Returns the lead object including _id, email, firstName, lastName, companyName, and campaignId. Required: campaign_id, lead_id_or_email.
- **create_a_lemlist_lead_variable** — Add custom variables to a lemlist lead. Variable names and values (e.g. company, preferredContactMethod) are passed as query parameters. Returns: ok. Required: lead_id.
- **lemlist_lead_variables_bulk_update** — Update custom variables on a lemlist lead. Variable names and values (e.g. favoriteColor, company) are passed as query parameters. Returns: ok. Required: lead_id.
- **lemlist_lead_variables_bulk_delete** — Delete custom variables from a lemlist lead. Variable names (e.g. company, favoriteColor) are passed as query parameters to identify which variables to remove. Returns an empty 204 response on success. Required: lead_id.
- **create_a_lemlist_leads_audio** — Upload an audio file to a lemlist voice message step. Returns: ok, status.
- **list_all_lemlist_hooks** — List all webhooks in your lemlist workspace. Returns: _id, targetUrl, createdAt, zapId, campaignId, type.
- **create_a_lemlist_hook** — Create a new webhook in lemlist to receive real-time event callbacks. Returns: _id, targetUrl, createdAt, type, campaignId, zapId.
- **delete_a_lemlist_hook_by_id** — Delete a webhook from your lemlist workspace by id. Returns: _id, targetUrl, createdAt, type, campaignId, zapId. Required: id.
- **list_all_lemlist_unsubscribes** — List lemlist unsubscribes. Returns: _id, createdAt, value, source, example.
- **get_single_lemlist_unsubscribe_by_id** — Get a single lemlist unsubscribe by id. Returns: _id, createdAt, value, source. Required: id.
- **create_a_lemlist_unsubscribe** — Add an email or domain to the lemlist unsubscribe list. Returns: _id, createdAt, value, source. Required: unsubscribe_id.
- **delete_a_lemlist_unsubscribe_by_id** — Delete a lemlist unsubscribe by id. Returns an empty 204 response on success. Required: id.
- **list_all_lemlist_unsubs_exports** — Export unsubscribe records from lemlist. Returns an array of unsubscribe objects including _id, createdAt, value, and source.
- **get_single_lemlist_enrich_by_id** — Get a single lemlist enrichment result by id. Returns: enrichmentId, enrichmentStatus, input, data, example. Required: id.
- **create_a_lemlist_enrich** — Create a lemlist enrichment to find verified emails, verify existing emails, find phone numbers, or run LinkedIn enrichment. Returns: id. At least one enrichment action (findEmail, findPhone, linkedinEnrichment, or verifyEmail) must be enabled.
- **create_a_lemlist_lead_enrich** — Enrich a lemlist lead by triggering email search, email verification, LinkedIn enrichment, or phone number lookup. Returns: id. Required: lead_id.
- **list_all_lemlist_export_starts** — Start a campaign stats export in lemlist. Returns the export job object including _id, id, campaignId, status, startedAt, progressType, progress, and total. Required: campaign_id.
- **list_all_lemlist_export_status** — Get the status of a campaign export in lemlist. Returns the export status object including ok, id, teamId, campaignId, campaignName, status, startedAt, endedAt, progress, total, and the download url. Required: campaign_id, export_id.
- **lemlist_export_emails_bulk_update** — Export a lemlist campaign's send status for a specific email address. Returns: ok, status. Required: campaign_id, export_id, email.
- **list_all_lemlist_export_leads** — Export leads from a lemlist campaign, optionally filtered by lead state. Returns lead records with email, firstName, lastName, _id, campaignId, emailStatus, companyName, companyDomain, jobTitle, phone, linkedinUrl, picture, icebreaker, isPaused. Supports json or csv output format. Required: campaign_id.
- **list_all_lemlist_crm_filters** — List CRM filters from lemlist. Returns: id, name. Results can be narrowed by CRM name, connected user ID, or Salesforce filter type (lead, contact, report).
- **create_a_lemlist_leads_import** — Import leads from a CRM into a lemlist campaign. Returns: ok. Required: campaign_id.
- **list_all_lemlist_activities** — List lemlist activities with optional filters by activity type, campaign, lead, or version. Returns: _id, type, emailId, messageId, emailTemplateId, isFirst, stopped, createdAt, bot, teamId, leadId, campaignId, sequenceId, sequenceStep, createdBy, sendUserId, totalSequenceStep, sendUserName, sendUserEmail, sendUserMailboxId, sendUserMailboxProviderId, leadFirstName, leadLastName, leadEmail,…
- **lemlist_enrichments_bulk_create** — Create bulk enrichment requests in lemlist by submitting an array of enrichment jobs with input data (LinkedIn URL, email, company name, domain, first/last name) and desired enrichment types. Returns an array of enrichment results, each containing id, metadata, and error (on failed items). Enrichment types include find_email, find_phone, verify, and linkedin_enrichment.
- **list_all_lemlist_database_filters** — List lemlist database filters available for the People database. Returns: filterId, description, mode, type, helper, example.
- **create_a_lemlist_database_people** — Search the lemlist people database by applying filter criteria in the request body. Returns: results, total, took, search, limitation, team. No required parameters.
- **list_all_lemlist_schema_peoples** — Retrieve the people schema definition in lemlist, describing the field structure for person records including lead_id, full_name, country, experiences, education, skills, interests, and lead_quality_score. Returns: example.
- **create_a_lemlist_database_company** — Search the lemlist companies database by applying filters such as technologies, country, or industry to find matching company records. Returns: company_id, company_name, company_website_url, company_domain, company_industry, company_location, techno_used_array, and additional company attributes.
- **list_all_lemlist_schema_companies** — Get the companies schema from lemlist's people database, describing all available company attributes and their types. Returns: example.
- **list_all_lemlist_tasks** — List lemlist tasks. Returns each task with _id, type, leadId, campaignId, contactId, dueDate, and userId.
- **create_a_lemlist_task** — Create a new task in lemlist. Returns the created task object including _id, type, leadId, campaignId, contactId, dueDate, and userId.
- **lemlist_tasks_bulk_update** — Update an existing task in lemlist. Returns the updated task object including _id, type, leadId, campaignId, contactId, dueDate, and userId.
- **create_a_lemlist_tasks_ignore** — Ignore lemlist tasks associated with a lead. Returns an empty 204 response on success.
- **list_all_lemlist_inboxes** — List lemlist inbox conversations. Returns: _id, opportunities, lastActivityAt, createdBy, teamId, contactId, users, createdAt, channels, haveReplies, lastRepliedAt, lastRepliedChannel, example.
- **get_single_lemlist_inbox_by_id** — Get messages for a lemlist inbox contact conversation by id. Returns: _id, type, messageId, cc, createdAt, teamId, leadId, campaignId, sendUserId, sendUserName, sendUserEmail, sendUserMailboxId, leadEmail, contactId, message, subject, attachments. Required: id.
- **create_a_lemlist_inbox_email** — Send an email from a lemlist inbox to a contact or lead. Returns: ok. Provide the sender's user ID/email/mailbox, the recipient's contactId or leadId, a subject, a message body, and an optional cc list.
- **create_a_lemlist_inbox_linkedin** — Send a LinkedIn message to a lead or contact in lemlist. Returns: ok.
- **create_a_lemlist_inbox_whatsapp** — Send a WhatsApp message to a contact in lemlist. Returns: ok.
- **list_all_lemlist_contacts** — List lemlist contacts. Returns: _id, teamId, email, fullName, fields, campaigns, ownerId, createdAt, createdBy.
- **get_single_lemlist_contact_by_id** — Get a single lemlist contact by id or email. Returns: _id, teamId, email, fullName, fields, campaigns, ownerId, createdAt, createdBy. Required: id.
- **lemlist_lemwarms_start** — Start lemwarm email warmup for a specific mailbox in lemlist. Returns: ok. Required: user_mailbox_id.
- **lemlist_lemwarms_pause** — Pause lemwarm email warmup for a specific mailbox in lemlist. Returns: ok. Required: user_mailbox_id.
- **list_all_lemlist_lemwarm_settings** — Get lemwarm warm-up settings and deliverability diagnostics for a specific mailbox in lemlist. Returns: warmEmailRampup, warmEmailMax, activeAt, warmNextEmailAt, lastWarmAt, deliverability. Required: user_mailbox_id.
- **lemlist_lemwarm_settings_bulk_update** — Update lemwarm warm-up settings for a specific mailbox in lemlist. Returns: ok. Required: user_mailbox_id.
- **list_all_lemlist_companies** — List lemlist companies with optional search, sorting, and field selection. Returns: createdAt. Max 100 per page.
- **list_all_lemlist_company_notes** — List notes for a lemlist company. Returns: _id, note, createdAt. Supports optional sorting by createdAt in ascending or descending order. Required: company_id.
- **create_a_lemlist_company_note** — Create a note on a lemlist company. Returns: _id, note, createdAt. Required: company_id.

## How it works

1. **Link your customer's Lemlist account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Lemlist.** The Proxy API is a 1-to-1 mapping of the Lemlist API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Power autonomous AI SDR agents with live Lemlist outreach** — AI sales agent platforms can use Truto to push AI-researched prospects and generated copy directly into active Lemlist campaigns on behalf of the correct sender, enabling fully autonomous outbound sequences without manual intervention.
- **Route intent-triggered leads to the right sales rep's sequence** — Intent data and job-change tracking platforms can match prospects to the correct Lemlist user via Truto's Unified User Directory API, ensuring automated enrollments send from the right rep's mailbox for maximum relevance and deliverability.
- **Sync CRM contacts into Lemlist sequences from a single pane of glass** — Niche and vertical CRMs can offer one-click sequence enrollment by pushing contacts into Lemlist campaigns through Truto, giving their users outbound automation without leaving the CRM.
- **Build unified sales performance dashboards across outreach tools** — Revenue intelligence and BI platforms can pull Lemlist campaign analytics alongside data from other sales tools via Truto, giving revenue leaders a consolidated view of outbound performance metrics.
- **Pause outreach automatically when deals progress** — Pipeline management tools can react to deal-stage changes by removing or pausing prospects in Lemlist sequences via Truto, preventing awkward cold emails from reaching prospects who are already in active conversations.

## What you can build

- **Rep-aware lead routing for outbound enrollment** — Map your platform's users to Lemlist Users and Workspaces via Truto's Unified User Directory API so leads are always enrolled under the correct SDR's sender identity.
- **Workspace and team member sync** — Automatically import and keep in sync the Lemlist Team (Workspace) structure and its Users so your product reflects the customer's real sales org.
- **One-click sequence enrollment from your UI** — Let your users select a contact in your app and push them into a specific Lemlist campaign with pre-populated custom variables — no tab-switching required.
- **AI-generated icebreaker injection** — Pass AI-written personalization fields like custom icebreakers or research summaries as dynamic variables when adding leads to Lemlist campaigns through Truto.
- **Engagement-driven lead scoring updates** — Listen for Lemlist activity events like email replies and LinkedIn interactions via webhooks, then update lead scores and trigger alerts inside your product in real time.
- **Outbound activity timeline in your CRM** — Surface Lemlist send, open, reply, and bounce events on your product's contact timeline so users see the full engagement history without leaving your app.

## FAQs

### What authentication method does Lemlist's API use?

Lemlist supports Basic Auth (using an API key) and OAuth. Truto handles the auth flow for you, so your end users can connect their Lemlist accounts without your team managing tokens or credentials directly.

### What Unified APIs does Truto offer for Lemlist?

Truto currently maps Lemlist to the Unified User Directory API, covering Users and Workspaces (Lemlist Teams). This lets you resolve which rep and team a lead should be routed to. Additional tools and unified models can be built on request.

### Can I push leads into Lemlist campaigns through Truto?

Lemlist's API supports adding leads to campaigns with custom variables. While specific Truto tools for this are built on request, the integration can be scoped to cover lead creation, campaign enrollment, and dynamic variable injection based on your needs.

### How does Truto handle Lemlist's rate limits and pagination?

Truto abstracts away API-specific quirks including rate limiting and pagination. When you query Users or Workspaces through the Unified User Directory API, Truto manages retries and page cursors so your code doesn't have to.

### Can I receive real-time engagement events from Lemlist?

Lemlist supports webhook subscriptions for events like emailsSent, emailsOpened, emailsReplied, emailsBounced, and linkedinInterested. Truto can be configured to relay these events to your application — contact the team to scope this for your use case.

### What if I need Lemlist API coverage beyond Users and Workspaces?

Truto builds additional tools and unified model mappings on request. Common asks include campaign management, lead enrollment, activity polling, and enrichment endpoints. Reach out to scope what you need and Truto will build it.

## Related reading

- [Connect Lemlist to Claude: Manage Lead Enrichment & Multi-Channel AI](https://truto.one/blog/connect-lemlist-to-claude-manage-lead-enrichment-multi-channel-ai/) — Learn how to connect Lemlist to Claude using a managed MCP server. Automate lead enrichment, personalize outreach, and monitor campaign performance with AI.
- [Connect Lemlist to ChatGPT: Automate Outreach & Campaign Workflows](https://truto.one/blog/connect-lemlist-to-chatgpt-automate-outreach-campaign-workflows/) — Learn how to connect Lemlist to ChatGPT using a managed MCP server. Automate outbound campaigns, lead enrichment, and sales operations with AI agents.
- [Connect Lemlist to AI Agents: Scale Prospecting & Sales Operations](https://truto.one/blog/connect-lemlist-to-ai-agents-scale-prospecting-sales-operations/) — Learn how to connect Lemlist to AI Agents using Truto's tools API. Automate lead enrichment, sequence enrollment, and campaign tracking with LangChain.
