Lemlist
Interact with the Lemlist API to manage campaigns, leads, sequences, schedules, activities, inbox, webhooks, unsubscribes, exports, and enrichment.
Full endpoint reference: references/api-endpoints.md
Official API docs: https://developer.lemlist.com/api-reference
Setup
1. Get API key
- 1. Log in to Lemlist
- Go to Settings > Integrations > API Keys
- Create a new key — copy immediately, shown only once
2. Configure in OpenClaw
Add to ~/.openclaw/openclaw.json:
CODEBLOCK0
Alternative explicit format:
CODEBLOCK1
3. Verify
Run: INLINECODE2
Docker sandbox
Forward the key explicitly:
CODEBLOCK2
Authentication
Base URL: INLINECODE3
Basic Auth with empty username (colon before key is mandatory):
CODEBLOCK3
Python Helper
Use this pattern for all API calls:
CODEBLOCK4
Endpoint Summary
| Domain | Key endpoints |
|---|
| Team | GET /team, /team/members, /team/credits, INLINECODE7 |
| Campaigns |
GET/POST
/campaigns, PATCH
/campaigns/:id, POST
pause/
start |
|
Sequences | GET
/campaigns/:id/sequences, POST/PATCH/DELETE steps |
|
Leads (campaign) | GET/POST/PATCH/DELETE
/campaigns/:id/leads/:idOrEmail |
|
Leads (global) | GET
/leads, POST
pause/
start/
interested/
notinterested |
|
Lead variables | POST/PATCH/DELETE
/leads/:id/variables |
|
Activities | GET
/activities (filter:
campaignId,
type) |
|
Schedules | CRUD
/schedules, POST
/campaigns/:id/schedules |
|
Unsubscribes | GET
/unsubscribes, POST/DELETE
/unsubscribes/:value |
|
Webhooks | GET/POST/DELETE
/hooks (max 200/team) |
|
Inbox | GET
/inbox, POST
email/
linkedin/
whatsapp/
sms |
|
Inbox labels | CRUD
/inbox/labels, assign via
/conversations/labels/:contactId |
|
Companies | GET
/companies,
/companies/:id/notes |
|
Contacts | GET
/contacts,
/contacts/:idOrEmail |
|
Exports | GET
/campaigns/:id/export (sync),
/export/start (async) |
|
Enrichment | POST
/leads/:id/enrich, GET
/enrich/:id, POST
/enrich (batch) |
|
Tasks | GET/POST/PATCH
/tasks, POST
/tasks/ignore |
|
Lemwarm | POST
start/
pause, GET/PATCH
settings via
/lemwarm/:mailboxId |
For request/response details, read references/api-endpoints.md.
Pagination
Params: offset (default 0), limit (max 100), page (1-based, overrides offset).
Paginated responses include pagination: { totalRecords, currentPage, nextPage, totalPage }. Some older endpoints return a plain array.
ID Prefixes
INLINECODE55 campaign, lea_ lead, skd_ schedule, seq_ sequence, tea_ team, usr_ user.
Gotchas
- - User-Agent required — set
User-Agent: OpenClaw/1.0, Python's default UA is blocked by Cloudflare (403) - Basic Auth format — empty username mandatory:
base64(":key"), not INLINECODE63 - No campaign deletion — only pause via API
- Email encoding —
@ → %40 in URL path params - Webhook auto-deletion — 404/410 response silently removes the webhook
- No rate limiting — the public API does not throttle
- Variable deletion —
DELETE /leads/:id/variables deletes vars, not the lead - Sync vs async export —
/export returns CSV directly, /export/start + poll for large volumes - Limits — 100 items/page, 200 webhooks/team, 100 API keys/team
Lemlist
与Lemlist API交互,管理营销活动、潜在客户、序列、日程、活动、收件箱、网络钩子、退订、导出和数据丰富。
完整端点参考:references/api-endpoints.md
官方API文档:https://developer.lemlist.com/api-reference
设置
1. 获取API密钥
- 1. 登录 Lemlist
- 前往 设置 > 集成 > API密钥
- 创建新密钥 — 立即复制,仅显示一次
2. 在OpenClaw中配置
添加到 ~/.openclaw/openclaw.json:
json
{
skills: {
entries: {
lemlist: {
apiKey: your-lemlist-api-key
}
}
}
}
替代显式格式:
json
{
skills: {
entries: {
lemlist: {
env: {
LEMLISTAPIKEY: your-lemlist-api-key
}
}
}
}
}
3. 验证
运行:Get my Lemlist team info
Docker沙箱
显式转发密钥:
json
{
agents: {
defaults: {
sandbox: {
docker: {
env: [LEMLISTAPIKEY]
}
}
}
}
}
认证
基础URL:https://api.lemlist.com/api
使用空用户名的基本认证(密钥前的冒号是必需的):
Authorization: Basic base64(:LEMLISTAPIKEY)
Python辅助函数
所有API调用使用此模式:
python
import urllib.request, os, json, base64
APIKEY = os.environ[LEMLISTAPI_KEY]
AUTH = base64.b64encode(f:{API_KEY}.encode()).decode()
BASE = https://api.lemlist.com/api
def api(path, method=GET, data=None):
body = json.dumps(data).encode() if data else None
req = urllib.request.Request(f{BASE}{path}, data=body, method=method)
req.add_header(Authorization, fBasic {AUTH})
req.add_header(User-Agent, OpenClaw/1.0)
if data:
req.add_header(Content-Type, application/json)
return json.load(urllib.request.urlopen(req))
端点摘要
| 领域 | 关键端点 |
|---|
| 团队 | GET /team, /team/members, /team/credits, /team/senders |
| 营销活动 |
GET/POST /campaigns, PATCH /campaigns/:id, POST pause/start |
|
序列 | GET /campaigns/:id/sequences, POST/PATCH/DELETE 步骤 |
|
潜在客户(活动) | GET/POST/PATCH/DELETE /campaigns/:id/leads/:idOrEmail |
|
潜在客户(全局) | GET /leads, POST pause/start/interested/notinterested |
|
潜在客户变量 | POST/PATCH/DELETE /leads/:id/variables |
|
活动 | GET /activities(过滤:campaignId, type) |
|
日程 | CRUD /schedules, POST /campaigns/:id/schedules |
|
退订 | GET /unsubscribes, POST/DELETE /unsubscribes/:value |
|
网络钩子 | GET/POST/DELETE /hooks(每团队最多200个) |
|
收件箱 | GET /inbox, POST email/linkedin/whatsapp/sms |
|
收件箱标签 | CRUD /inbox/labels, 通过 /conversations/labels/:contactId 分配 |
|
公司 | GET /companies, /companies/:id/notes |
|
联系人 | GET /contacts, /contacts/:idOrEmail |
|
导出 | GET /campaigns/:id/export(同步), /export/start(异步) |
|
数据丰富 | POST /leads/:id/enrich, GET /enrich/:id, POST /enrich(批量) |
|
任务 | GET/POST/PATCH /tasks, POST /tasks/ignore |
|
Lemwarm | POST start/pause, GET/PATCH settings 通过 /lemwarm/:mailboxId |
有关请求/响应详情,请阅读 references/api-endpoints.md。
分页
参数:offset(默认0),limit(最大100),page(从1开始,覆盖offset)。
分页响应包含 pagination: { totalRecords, currentPage, nextPage, totalPage }。某些旧端点返回纯数组。
ID前缀
cam 营销活动,lea 潜在客户,skd 日程,seq 序列,tea 团队,usr 用户。
注意事项
- - 需要User-Agent — 设置 User-Agent: OpenClaw/1.0,Python默认UA会被Cloudflare拦截(403)
- 基本认证格式 — 必须使用空用户名:base64(:key),而非 base64(key)
- 无法删除营销活动 — 只能通过API暂停
- 邮箱编码 — URL路径参数中 @ → %40
- 网络钩子自动删除 — 404/410响应会静默删除网络钩子
- 无速率限制 — 公共API不限制请求频率
- 变量删除 — DELETE /leads/:id/variables 删除变量,而非潜在客户
- 同步与异步导出 — /export 直接返回CSV,/export/start + 轮询用于大量数据
- 限制 — 每页100项,每团队200个网络钩子,每团队100个API密钥