Access the MailerLite API with managed OAuth authentication. Manage subscribers, groups, campaigns, automations, forms, fields, segments, and webhooks.
Reference
List Subscribers
GET /mailerlite/api/subscribersQuery parameters:
filter[status]- Filter by status:active,unsubscribed,unconfirmed,bounced,junklimit- Results per page (default: 25)cursor- Pagination cursorinclude- Include related data:groups
Get Subscriber
GET /mailerlite/api/subscribers/{subscriber_id_or_email}Create/Upsert Subscriber
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
PUT /mailerlite/api/subscribers/{subscriber_id}
Content-Type: application/json
{
"fields": {
"name": "Jane Doe"
},
"status": "active"
}Delete Subscriber
DELETE /mailerlite/api/subscribers/{subscriber_id}Get Subscriber Activity
GET /mailerlite/api/subscribers/{subscriber_id}/activity-logQuery parameters:
filter[log_name]- Filter by activity type:campaign_send,automation_email_sent,email_open,link_click,email_bounce,spam_complaint,unsubscribedlimit- Results per page (default: 100)page- Page number (starts from 1)
Forget Subscriber (GDPR)
POST /mailerlite/api/subscribers/{subscriber_id}/forgetList Groups
GET /mailerlite/api/groupsQuery parameters:
limit- Results per pagepage- 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
POST /mailerlite/api/groups
Content-Type: application/json
{
"name": "Newsletter Subscribers"
}Update Group
PUT /mailerlite/api/groups/{group_id}
Content-Type: application/json
{
"name": "Updated Group Name"
}Delete Group
DELETE /mailerlite/api/groups/{group_id}Get Group Subscribers
GET /mailerlite/api/groups/{group_id}/subscribersQuery parameters:
filter[status]- Filter by status:active,unsubscribed,unconfirmed,bounced,junklimit- Results per page (1-1000, default: 50)cursor- Pagination cursor
Assign Subscriber to Group
POST /mailerlite/api/subscribers/{subscriber_id}/groups/{group_id}Remove Subscriber from Group
DELETE /mailerlite/api/subscribers/{subscriber_id}/groups/{group_id}List Campaigns
GET /mailerlite/api/campaignsQuery parameters:
filter[status]- Filter by status:sent,draft,readyfilter[type]- Filter by type:regular,ab,resend,rsslimit- Results per page: 10, 25, 50, or 100 (default: 25)page- Page number (starts from 1)
Get Campaign
GET /mailerlite/api/campaigns/{campaign_id}Create Campaign
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
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
POST /mailerlite/api/campaigns/{campaign_id}/schedule
Content-Type: application/json
{
"delivery": "instant"
}For scheduled delivery:
{
"delivery": "scheduled",
"schedule": {
"date": "2026-03-15",
"hours": "10",
"minutes": "30"
}
}Cancel Campaign
POST /mailerlite/api/campaigns/{campaign_id}/cancelReverts a ready campaign to draft status.
Delete Campaign
DELETE /mailerlite/api/campaigns/{campaign_id}Get Campaign Subscriber Activity
GET /mailerlite/api/campaigns/{campaign_id}/reports/subscriber-activityQuery parameters:
filter[type]- Filter by activity:opened,unopened,clicked,unsubscribed,forwarded,hardbounced,softbounced,junkfilter[search]- Search by emaillimit- Results per page (10, 25, 50, or 100)page- Page number (starts from 1)
List Automations
GET /mailerlite/api/automationsQuery parameters:
filter[enabled]- Filter by status:trueorfalsefilter[name]- Filter by namefilter[group]- Filter by group IDpage- Page number (starts from 1)limit- Results per page (default: 10)
Get Automation
GET /mailerlite/api/automations/{automation_id}Create Automation
POST /mailerlite/api/automations
Content-Type: application/json
{
"name": "Welcome Series"
}Creates a draft automation.
Get Automation Activity
GET /mailerlite/api/automations/{automation_id}/activityQuery parameters:
filter[status]- Required:completed,active,canceled,failedfilter[date_from]- Start date (Y-m-d)filter[date_to]- End date (Y-m-d)filter[search]- Search by emailpage- Page number (starts from 1)limit- Results per page (default: 10)
Delete Automation
DELETE /mailerlite/api/automations/{automation_id}List Fields
GET /mailerlite/api/fieldsQuery 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,datesort- Sort by:name,type(prepend-for descending)
Create Field
POST /mailerlite/api/fields
Content-Type: application/json
{
"name": "Company",
"type": "text"
}Update Field
PUT /mailerlite/api/fields/{field_id}
Content-Type: application/json
{
"name": "Organization"
}Delete Field
DELETE /mailerlite/api/fields/{field_id}List Segments
GET /mailerlite/api/segmentsQuery parameters:
limit- Results per page (max 250)page- Page number (starts from 1)
Get Segment Subscribers
GET /mailerlite/api/segments/{segment_id}/subscribersQuery parameters:
filter[status]- Filter by status:active,unsubscribed,unconfirmed,bounced,junklimit- Results per pagecursor- Pagination cursor
Update Segment
PUT /mailerlite/api/segments/{segment_id}
Content-Type: application/json
{
"name": "High Engagement Subscribers"
}Delete Segment
DELETE /mailerlite/api/segments/{segment_id}List Forms
GET /mailerlite/api/forms/{type}Path parameters:
type- Form type:popup,embedded,promotion
Query parameters:
limit- Results per pagepage- 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
GET /mailerlite/api/forms/{form_id}Update Form
PUT /mailerlite/api/forms/{form_id}
Content-Type: application/json
{
"name": "Newsletter Signup"
}Delete Form
DELETE /mailerlite/api/forms/{form_id}Get Form Subscribers
GET /mailerlite/api/forms/{form_id}/subscribersQuery parameters:
filter[status]- Filter by status:active,unsubscribed,unconfirmed,bounced,junklimit- Results per page (default: 25)cursor- Pagination cursor
List Webhooks
GET /mailerlite/api/webhooksGet Webhook
GET /mailerlite/api/webhooks/{webhook_id}Create Webhook
POST /mailerlite/api/webhooks
Content-Type: application/json
{
"name": "Subscriber Updates",
"events": ["subscriber.created", "subscriber.updated"],
"url": "https://example.com/webhook"
}Update Webhook
PUT /mailerlite/api/webhooks/{webhook_id}
Content-Type: application/json
{
"name": "Updated Webhook",
"enabled": true
}Delete Webhook
DELETE /mailerlite/api/webhooks/{webhook_id}