# MailerLite Routing Reference

**App name:** `mailerlite`
**Base URL proxied:** `connect.mailerlite.com`

## API Path Pattern

```
/mailerlite/api/{resource}
```

## Common Endpoints

### Subscribers

#### List Subscribers
```bash
GET /mailerlite/api/subscribers
```

Query parameters: `filter[status]`, `limit`, `cursor`, `include`

#### Get Subscriber
```bash
GET /mailerlite/api/subscribers/{subscriber_id_or_email}
```

#### Create/Upsert Subscriber
```bash
POST /mailerlite/api/subscribers
Content-Type: application/json

{
  "email": "[REDACTED_EMAIL]",
  "fields": {"name": "John Doe"},
  "groups": ["[REDACTED_PHONE]"],
  "status": "active"
}
```

#### Update Subscriber
```bash
PUT /mailerlite/api/subscribers/{subscriber_id}
Content-Type: application/json

{
  "fields": {"name": "Jane Doe"}
}
```

#### Delete Subscriber
```bash
DELETE /mailerlite/api/subscribers/{subscriber_id}
```

### Groups

#### List Groups
```bash
GET /mailerlite/api/groups
```

Query parameters: `limit`, `page`, `filter[name]`, `sort`

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

### Campaigns

#### List Campaigns
```bash
GET /mailerlite/api/campaigns
```

Query parameters: `filter[status]`, `filter[type]`, `limit`, `page`

#### 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": "[REDACTED_EMAIL]"
    }
  ],
  "groups": ["[REDACTED_PHONE]"]
}
```

#### Schedule Campaign
```bash
POST /mailerlite/api/campaigns/{campaign_id}/schedule
Content-Type: application/json

{
  "delivery": "instant"
}
```

#### Delete Campaign
```bash
DELETE /mailerlite/api/campaigns/{campaign_id}
```

### Automations

#### List Automations
```bash
GET /mailerlite/api/automations
```

Query parameters: `filter[enabled]`, `filter[name]`, `page`, `limit`

#### Get Automation
```bash
GET /mailerlite/api/automations/{automation_id}
```

#### Delete Automation
```bash
DELETE /mailerlite/api/automations/{automation_id}
```

### Fields

#### List Fields
```bash
GET /mailerlite/api/fields
```

#### Create Field
```bash
POST /mailerlite/api/fields
Content-Type: application/json

{
  "name": "Company",
  "type": "text"
}
```

### Segments

#### List Segments
```bash
GET /mailerlite/api/segments
```

#### Get Segment Subscribers
```bash
GET /mailerlite/api/segments/{segment_id}/subscribers
```

### Forms

#### List Forms
```bash
GET /mailerlite/api/forms/{type}
```

Path parameters: `type` - `popup`, `embedded`, or `promotion`

#### Get Form Subscribers
```bash
GET /mailerlite/api/forms/{form_id}/subscribers
```

### Webhooks

#### List Webhooks
```bash
GET /mailerlite/api/webhooks
```

#### Create Webhook
```bash
POST /mailerlite/api/webhooks
Content-Type: application/json

{
  "name": "Subscriber Updates",
  "events": ["subscriber.created", "subscriber.updated"],
  "url": "https://example.com/webhook"
}
```

## Notes

- Rate limit: 120 requests per minute
- Subscriber emails serve as unique identifiers (POST creates or updates existing)
- Only draft campaigns can be updated
- Pagination: cursor-based for subscribers, page-based for groups/campaigns
- API versioning can be overridden via `X-Version: YYYY-MM-DD` header

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