返回顶部
m

mailerlite

|

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.2
安全检测
已通过
3,424
下载量
3
收藏
概述
安装方式
版本历史

mailerlite

# MailerLite Access the MailerLite API with managed OAuth authentication. Manage subscribers, groups, campaigns, automations, forms, fields, segments, and webhooks. ## Quick Start ```bash # List subscribers python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://gateway.maton.ai/mailerlite/api/subscribers?limit=10') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ## Base URL ``` https://gateway.maton.ai/mailerlite/{native-api-path} ``` Replace `{native-api-path}` with the actual MailerLite API endpoint path. The gateway proxies requests to `connect.mailerlite.com` and automatically injects your OAuth token. ## Authentication All requests require the Maton API key in the Authorization header: ``` Authorization: Bearer $MATON_API_KEY ``` **Environment Variable:** Set your API key as `MATON_API_KEY`: ```bash export MATON_API_KEY="YOUR_API_KEY" ``` ### Getting Your API Key 1. Sign in or create an account at [maton.ai](https://maton.ai) 2. Go to [maton.ai/settings](https://maton.ai/settings) 3. Copy your API key ## Connection Management Manage your MailerLite OAuth connections at `https://ctrl.maton.ai`. ### List Connections ```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections?app=mailerlite&status=ACTIVE') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Create Connection ```bash python <<'EOF' import urllib.request, os, json data = json.dumps({'app': 'mailerlite'}).encode() req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('Content-Type', 'application/json') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Get Connection ```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` **Response:** ```json { "connection": { "connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80", "status": "ACTIVE", "creation_time": "2025-12-08T07:20:53.488460Z", "last_updated_time": "2026-01-31T20:03:32.593153Z", "url": "https://connect.maton.ai/?session_token=...", "app": "mailerlite", "metadata": {} } } ``` Open the returned `url` in a browser to complete OAuth authorization. ### Delete Connection ```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Specifying Connection If you have multiple MailerLite connections, specify which one to use with the `Maton-Connection` header: ```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://gateway.maton.ai/mailerlite/api/subscribers') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` If omitted, the gateway uses the default (oldest) active connection. ## API Reference ### Subscriber Operations #### List Subscribers ```bash GET /mailerlite/api/subscribers ``` Query parameters: - `filter[status]` - Filter by status: `active`, `unsubscribed`, `unconfirmed`, `bounced`, `junk` - `limit` - Results per page (default: 25) - `cursor` - Pagination cursor - `include` - Include related data: `groups` #### Get Subscriber ```bash GET /mailerlite/api/subscribers/{subscriber_id_or_email} ``` #### Create/Upsert Subscriber ```bash POST /mailerlite/api/subscribers Content-Type: application/json { "email": "subscriber@example.com", "fields": { "name": "John Doe", "company": "Acme Inc" }, "groups": ["12345678901234567"], "status": "active" } ``` Returns 201 for new subscribers, 200 for updates. #### Update Subscriber ```bash PUT /mailerlite/api/subscribers/{subscriber_id} Content-Type: application/json { "fields": { "name": "Jane Doe" }, "status": "active" } ``` #### Delete Subscriber ```bash DELETE /mailerlite/api/subscribers/{subscriber_id} ``` #### Get Subscriber Activity ```bash GET /mailerlite/api/subscribers/{subscriber_id}/activity-log ``` Query parameters: - `filter[log_name]` - Filter by activity type: `campaign_send`, `automation_email_sent`, `email_open`, `link_click`, `email_bounce`, `spam_complaint`, `unsubscribed` - `limit` - Results per page (default: 100) - `page` - Page number (starts from 1) #### Forget Subscriber (GDPR) ```bash POST /mailerlite/api/subscribers/{subscriber_id}/forget ``` ### Group Operations #### List Groups ```bash GET /mailerlite/api/groups ``` Query parameters: - `limit` - Results per page - `page` - Page number (starts from 1) - `filter[name]` - Filter by name (partial match) - `sort` - Sort by: `name`, `total`, `open_rate`, `click_rate`, `created_at` (prepend `-` for descending) #### Create Group ```bash POST /mailerlite/api/groups Content-Type: application/json { "name": "Newsletter Subscribers" } ``` #### Update Group ```bash PUT /mailerlite/api/groups/{group_id} Content-Type: application/json { "name": "Updated Group Name" } ``` #### Delete Group ```bash DELETE /mailerlite/api/groups/{group_id} ``` #### Get Group Subscribers ```bash GET /mailerlite/api/groups/{group_id}/subscribers ``` Query parameters: - `filter[status]` - Filter by status: `active`, `unsubscribed`, `unconfirmed`, `bounced`, `junk` - `limit` - Results per page (1-1000, default: 50) - `cursor` - Pagination cursor #### Assign Subscriber to Group ```bash POST /mailerlite/api/subscribers/{subscriber_id}/groups/{group_id} ``` #### Remove Subscriber from Group ```bash DELETE /mailerlite/api/subscribers/{subscriber_id}/groups/{group_id} ``` ### Campaign Operations #### List Campaigns ```bash GET /mailerlite/api/campaigns ``` Query parameters: - `filter[status]` - Filter by status: `sent`, `draft`, `ready` - `filter[type]` - Filter by type: `regular`, `ab`, `resend`, `rss` - `limit` - Results per page: 10, 25, 50, or 100 (default: 25) - `page` - Page number (starts from 1) #### Get Campaign ```bash GET /mailerlite/api/campaigns/{campaign_id} ``` #### Create Campaign ```bash POST /mailerlite/api/campaigns Content-Type: application/json { "name": "My Newsletter", "type": "regular", "emails": [ { "subject": "Weekly Update", "from_name": "Newsletter", "from": "newsletter@example.com" } ], "groups": ["12345678901234567"] } ``` #### Update Campaign ```bash PUT /mailerlite/api/campaigns/{campaign_id} Content-Type: application/json { "name": "Updated Campaign Name", "emails": [ { "subject": "New Subject Line", "from_name": "Newsletter", "from": "newsletter@example.com" } ] } ``` Note: Only draft campaigns can be updated. #### Schedule Campaign ```bash POST /mailerlite/api/campaigns/{campaign_id}/schedule Content-Type: application/json { "delivery": "instant" } ``` For scheduled delivery: ```json { "delivery": "scheduled", "schedule": { "date": "2026-03-15", "hours": "10", "minutes": "30" } } ``` #### Cancel Campaign ```bash POST /mailerlite/api/campaigns/{campaign_id}/cancel ``` Reverts a ready campaign to draft status. #### Delete Campaign ```bash DELETE /mailerlite/api/campaigns/{campaign_id} ``` #### Get Campaign Subscriber Activity ```bash GET /mailerlite/api/campaigns/{campaign_id}/reports/subscriber-activity ``` Query parameters: - `filter[type]` - Filter by activity: `opened`, `unopened`, `clicked`, `unsubscribed`, `forwarded`, `hardbounced`, `softbounced`, `junk` - `filter[search]` - Search by email - `limit` - Results per page (10, 25, 50, or 100) - `page` - Page number (starts from 1) ### Automation Operations #### List Automations ```bash GET /mailerlite/api/automations ``` Query parameters: - `filter[enabled]` - Filter by status: `true` or `false` - `filter[name]` - Filter by name - `filter[group]` - Filter by group ID - `page` - Page number (starts from 1) - `limit` - Results per page (default: 10) #### Get Automation ```bash GET /mailerlite/api/automations/{automation_id} ``` #### Create Automation ```bash POST /mailerlite/api/automations Content-Type: application/json { "name": "Welcome Series" } ``` Creates a draft automation. #### Get Automation Activity ```bash GET /mailerlite/api/automations/{automation_id}/activity ``` Query parameters: - `filter[status]` - Required: `completed`, `active`, `canceled`, `failed` - `filter[date_from]` - Start date (Y-m-d) - `filter[date_to]` - End date (Y-m-d) - `filter[search]` - Search by email - `page` - Page number (starts from 1) - `limit` - Results per page (default: 10) #### Delete Automation ```bash DELETE /mailerlite/api/automations/{automation_id} ``` ### Field Operations #### List Fields ```bash GET /mailerlite/api/fields ``` Query parameters: - `limit` - Results per page (max 100) - `page` - Page number (starts from 1) - `filter[keyword]` - Filter by keyword (partial match) - `filter[type]` - Filter by type: `text`, `number`, `date` - `sort` - Sort by: `name`, `type` (prepend `-` for descending) #### Create Field ```bash POST /mailerlite/api/fields Content-Type: application/json { "name": "Company", "type": "text" } ``` #### Update Field ```bash PUT /mailerlite/api/fields/{field_id} Content-Type: application/json { "name": "Organization" } ``` #### Delete Field ```bash DELETE /mailerlite/api/fields/{field_id} ``` ### Segment Operations #### List Segments ```bash GET /mailerlite/api/segments ``` Query parameters: - `limit` - Results per page (max 250) - `page` - Page number (starts from 1) #### Get Segment Subscribers ```bash GET /mailerlite/api/segments/{segment_id}/subscribers ``` Query parameters: - `filter[status]` - Filter by status: `active`, `unsubscribed`, `unconfirmed`, `bounced`, `junk` - `limit` - Results per page - `cursor` - Pagination cursor #### Update Segment ```bash PUT /mailerlite/api/segments/{segment_id} Content-Type: application/json { "name": "High Engagement Subscribers" } ``` #### Delete Segment ```bash DELETE /mailerlite/api/segments/{segment_id} ``` ### Form Operations #### List Forms ```bash GET /mailerlite/api/forms/{type} ``` Path parameters: - `type` - Form type: `popup`, `embedded`, `promotion` Query parameters: - `limit` - Results per page - `page` - Page number (starts from 1) - `filter[name]` - Filter by name (partial match) - `sort` - Sort by: `created_at`, `name`, `conversions_count`, `opens_count`, `visitors`, `conversion_rate`, `last_registration_at` (prepend `-` for descending) #### Get Form ```bash GET /mailerlite/api/forms/{form_id} ``` #### Update Form ```bash PUT /mailerlite/api/forms/{form_id} Content-Type: application/json { "name": "Newsletter Signup" } ``` #### Delete Form ```bash DELETE /mailerlite/api/forms/{form_id} ``` #### Get Form Subscribers ```bash GET /mailerlite/api/forms/{form_id}/subscribers ``` Query parameters: - `filter[status]` - Filter by status: `active`, `unsubscribed`, `unconfirmed`, `bounced`, `junk` - `limit` - Results per page (default: 25) - `cursor` - Pagination cursor ### Webhook Operations #### List Webhooks ```bash GET /mailerlite/api/webhooks ``` #### Get Webhook ```bash GET /mailerlite/api/webhooks/{webhook_id} ``` #### Create Webhook ```bash POST /mailerlite/api/webhooks Content-Type: application/json { "name": "Subscriber Updates", "events": ["subscriber.created", "subscriber.updated"], "url": "https://example.com/webhook" } ``` #### Update Webhook ```bash PUT /mailerlite/api/webhooks/{webhook_id} Content-Type: application/json { "name": "Updated Webhook", "enabled": true } ``` #### Delete Webhook ```bash DELETE /mailerlite/api/webhooks/{webhook_id} ``` ## Pagination MailerLite uses cursor-based pagination for most endpoints and page-based pagination for some. ### Cursor-based Pagination ```bash GET /mailerlite/api/subscribers?limit=25&cursor=eyJpZCI6MTIzNDU2fQ ``` Response includes pagination links: ```json { "data": [...], "links": { "first": "https://connect.mailerlite.com/api/subscribers?cursor=...", "last": null, "prev": null, "next": "https://connect.mailerlite.com/api/subscribers?cursor=eyJpZCI6MTIzNDU2fQ" }, "meta": { "path": "https://connect.mailerlite.com/api/subscribers", "per_page": 25, "next_cursor": "eyJpZCI6MTIzNDU2fQ", "prev_cursor": null } } ``` ### Page-based Pagination ```bash GET /mailerlite/api/groups?limit=25&page=2 ``` Response includes page metadata: ```json { "data": [...], "meta": { "current_page": 2, "from": 26, "last_page": 4, "per_page": 25, "to": 50, "total": 100 } } ``` ## Code Examples ### JavaScript ```javascript const response = await fetch( 'https://gateway.maton.ai/mailerlite/api/subscribers?limit=10', { headers: { 'Authorization': `Bearer ${process.env.MATON_API_KEY}` } } ); const data = await response.json(); ``` ### Python ```python import os import requests response = requests.get( 'https://gateway.maton.ai/mailerlite/api/subscribers', headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}, params={'limit': 10} ) data = response.json() ``` ### Create Subscriber Example ```python import os import requests response = requests.post( 'https://gateway.maton.ai/mailerlite/api/subscribers', headers={ 'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}', 'Content-Type': 'application/json' }, json={ 'email': 'newuser@example.com', 'fields': {'name': 'John Doe'}, 'status': 'active' } ) data = response.json() ``` ## Notes - Rate limit: 120 requests per minute - Subscriber emails are used as unique identifiers (POST creates or updates) - Group names have a maximum length of 255 characters - Only draft campaigns can be updated - API versioning can be overridden via `X-Version: YYYY-MM-DD` header - IMPORTANT: When using curl commands, use `curl -g` when URLs contain brackets to disable glob parsing - IMPORTANT: When piping curl output to `jq` or other commands, environment variables like `$MATON_API_KEY` may not expand correctly in some shell environments ## Error Handling | Status | Meaning | |--------|---------| | 400 | Missing MailerLite connection | | 401 | Invalid or missing Maton API key | | 403 | Forbidden - insufficient permissions | | 404 | Resource not found | | 422 | Validation error | | 429 | Rate limited (120 req/min) | | 4xx/5xx | Passthrough error from MailerLite API | ### Troubleshooting: API Key Issues 1. Check that the `MATON_API_KEY` environment variable is set: ```bash echo $MATON_API_KEY ``` 2. Verify the API key is valid by listing connections: ```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ``` ### Troubleshooting: Invalid App Name 1. Ensure your URL path starts with `mailerlite`. For example: - Correct: `https://gateway.maton.ai/mailerlite/api/subscribers` - Incorrect: `https://gateway.maton.ai/api/subscribers` ## Resources - [MailerLite API Documentation](https://developers.mailerlite.com/docs/) - [MailerLite Subscribers API](https://developers.mailerlite.com/docs/subscribers.html) - [MailerLite Groups API](https://developers.mailerlite.com/docs/groups.html) - [MailerLite Campaigns API](https://developers.mailerlite.com/docs/campaigns.html) - [Maton Community](https://discord.com/invite/dBfFAcefs2) - [Maton Support](mailto:support@maton.ai)

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 mailerlite-1776086640 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 mailerlite-1776086640 技能

通过命令行安装

skillhub install mailerlite-1776086640

下载 Zip 包

⬇ 下载 mailerlite v1.0.2

文件大小: 5.6 KB | 发布时间: 2026-4-17 15:17

v1.0.2 最新 2026-4-17 15:17
- Added metadata section for clawdbot, specifying required environment variable MATON_API_KEY and emoji.
- No changes to functionality or code were made.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部