Maton

MailerLite

Access the MailerLite API with managed OAuth authentication. Manage subscribers, groups, campaigns, automations, forms, fields, segments, and webhooks.

Reference

List Subscribers

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

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-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)

POST /mailerlite/api/subscribers/{subscriber_id}/forget

List Groups

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

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}/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

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/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

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}/cancel

Reverts 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-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)

List Automations

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

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}/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

DELETE /mailerlite/api/automations/{automation_id}

List Fields

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

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/segments

Query parameters:

  • limit - Results per page (max 250)
  • page - Page number (starts from 1)

Get Segment Subscribers

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

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 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

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}/subscribers

Query parameters:

  • filter[status] - Filter by status: active, unsubscribed, unconfirmed, bounced, junk
  • limit - Results per page (default: 25)
  • cursor - Pagination cursor

List Webhooks

GET /mailerlite/api/webhooks

Get 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}

Resources

On this page