API / Campaigns

Method Endpoint Description
GET /api/campaigns Gets all campaigns.
GET /api/campaigns/:campaign_id Gets a single campaign.
GET /api/campaigns/:campaign_id/preview Gets the HTML preview of a campaign body.
GET /api/campaigns/running/stats Gets the stats of a given set of campaigns.
POST /api/campaigns Creates a new campaign.
POST /api/campaigns/:campaign_id/test Posts campaign message to arbitrary subscribers for testing.
PUT /api/campaigns/:campaign_id Modifies a campaign.
PUT /api/campaigns/:campaign_id/status Start / pause / cancel / schedule a campaign.
DELETE /api/campaigns/:campaign_id Deletes a campaign.

GET /api/campaigns

Gets all campaigns.

Example Request
 curl -u "username:password" -X GET 'http://localhost:9000/api/campaigns?page=1&per_page=100'

To skip pagination and retrieve all records, pass per_page=all.

Example Response
{
    "data": {
        "results": [
            {
                "id": 1,
                "created_at": "2020-03-14T17:36:41.29451+01:00",
                "updated_at": "2020-03-14T17:36:41.29451+01:00",
                "CampaignID": 0,
                "views": 0,
                "clicks": 0,
                "lists": [
                    {
                        "id": 1,
                        "name": "Default list"
                    }
                ],
                "started_at": null,
                "to_send": 0,
                "sent": 0,
                "uuid": "57702beb-6fae-4355-a324-c2fd5b59a549",
                "type": "regular",
                "name": "Test campaign",
                "subject": "Welcome to listmonk",
                "from_email": "No Reply <[email protected]>",
                "body": "<h3>Hi {{ .Subscriber.FirstName }}!</h3>\n\t\t\tThis is a test e-mail campaign. Your second name is {{ .Subscriber.LastName }} and you are from {{ .Subscriber.Attribs.city }}.",
                "send_at": "2020-03-15T17:36:41.293233+01:00",
                "status": "draft",
                "content_type": "richtext",
                "tags": [
                    "test-campaign"
                ],
                "template_id": 1,
                "messenger": "email"
            }
        ],
        "query": "",
        "total": 1,
        "per_page": 20,
        "page": 1
    }
}

GET /api/campaigns/:campaign_id

Gets a single campaign.

Parameters
Name Parameter Type Data Type Required/Optional Description
campaign_id Path Parameter Number Required The id value of the campaign you want to get.
Example Request
curl -u "username:password" -X GET 'http://localhost:9000/api/campaigns/1'
Example Response
{
    "data": {
        "id": 1,
        "created_at": "2020-03-14T17:36:41.29451+01:00",
        "updated_at": "2020-03-14T17:36:41.29451+01:00",
        "CampaignID": 0,
        "views": 0,
        "clicks": 0,
        "lists": [
            {
                "id": 1,
                "name": "Default list"
            }
        ],
        "started_at": null,
        "to_send": 0,
        "sent": 0,
        "uuid": "57702beb-6fae-4355-a324-c2fd5b59a549",
        "type": "regular",
        "name": "Test campaign",
        "subject": "Welcome to listmonk",
        "from_email": "No Reply <[email protected]>",
        "body": "<h3>Hi {{ .Subscriber.FirstName }}!</h3>\n\t\t\tThis is a test e-mail campaign. Your second name is {{ .Subscriber.LastName }} and you are from {{ .Subscriber.Attribs.city }}.",
        "send_at": "2020-03-15T17:36:41.293233+01:00",
        "status": "draft",
        "content_type": "richtext",
        "tags": [
            "test-campaign"
        ],
        "template_id": 1,
        "messenger": "email"
    }
}

GET /api/campaigns/:campaign_id/preview

Gets the html preview of a campaign body.

Parameters
Name Parameter Type Data Type Required/Optional Description
campaign_id Path Parameter Number Required The id value of the campaign to be previewed.
Example Request
curl -u "username:password" -X GET 'http://localhost:9000/api/campaigns/1/preview'
Example Response
<h3>Hi John!</h3>
This is a test e-mail campaign. Your second name is Doe and you are from Bengaluru.

GET /api/campaigns/running/stats

Gets the running stat of a given set of campaigns.

Parameters
Name Parameter Type Data Type Required/Optional Description
campaign_id Query Parameters Number Required The id values of the campaigns whose stat you want to get.
Example Request
curl -u "username:password" -X GET 'http://localhost:9000/api/campaigns/running/stats?campaign_id=1'
Example Response
{
    "data": []
}

POST /api/campaigns

Creates a new campaign.

Parameters

Name Data type Required/Optional Description
name String Required Name of the campaign.
subject String Required (E-mail) subject of the campaign.
lists []Number Required Array of list IDs to send the campaign to.
from_email String Optional From e-mail to show on the campaign e-mails. If left empty, the default value from settings is used.
type String Required regular or optin campaign.
content_type String Required richtext, html, markdown, plain
body String Required Campaign content body.
altbody String Optional Alternate plain text body for HTML (and richtext) e-mails.
send_at String Optional A timestamp to schedule the campaign at. Eg: 2021-12-25T06:00:00 (YYYY-MM-DDTHH:MM:SS)
messenger String Optional email or a custom messenger defined in the settings. If left empty, email is used.
template_id Number Optional ID of the template to use. If left empty, the default template is used.
tags []String Optional Array of string tags to mark the campaign.

Example request

curl -u "username:password" 'http://localhost:9000/api/campaigns' -X POST -H 'Content-Type: application/json;charset=utf-8' --data-raw '{"name":"Test campaign","subject":"Hello, world","lists":[1],"from_email":"listmonk <[email protected]>","content_type":"richtext","messenger":"email","type":"regular","tags":["test"],"template_id":1}'

Example response

{
    "data": {
        "id": 1,
        "created_at": "2021-12-27T11:50:23.333485Z",
        "updated_at": "2021-12-27T11:50:23.333485Z",
        "views": 0,
        "clicks": 0,
        "bounces": 0,
        "lists": [{
            "id": 1,
            "name": "Default list"
        }],
        "started_at": null,
        "to_send": 1,
        "sent": 0,
        "uuid": "90c889cc-3728-4064-bbcb-5c1c446633b3",
        "type": "regular",
        "name": "Test campaign",
        "subject": "Hello, world",
        "from_email": "listmonk \[email protected]\u003e",
        "body": "",
        "altbody": null,
        "send_at": null,
        "status": "draft",
        "content_type": "richtext",
        "tags": ["test"],
        "template_id": 1,
        "messenger": "email"
    }
}

PUT /api/campaigns/:campaign_id/status

Modifies a campaign status to start, pause, cancel, or schedule a campaign.

Parameters
Name Parameter Type Data Type Required/Optional Description
campaign_id Path Parameter Number Required The id value of the campaign whose status is to be modified.
status Request Body String Required scheduled, running, paused, cancelled.
Note:
  • Only "scheduled" campaigns can be saved as "draft".
  • Only "draft" campaigns can be "scheduled".
  • Only "paused" campaigns and "draft" campaigns can be started.
  • Only "running" campaigns can be "cancelled" and "paused".
Example Request
curl -u "username:password" -X PUT 'http://localhost:9000/api/campaigns/1/status' \
--header 'Content-Type: multipart/form-data; boundary=--------------------------047372886665819311890787' \
--form 'status=scheduled'
Example Response
{
    "data": {
        "id": 1,
        "created_at": "2020-03-14T17:36:41.29451+01:00",
        "updated_at": "2020-04-08T19:35:17.331867+01:00",
        "CampaignID": 0,
        "views": 0,
        "clicks": 0,
        "lists": [
            {
                "id": 1,
                "name": "Default list"
            }
        ],
        "started_at": null,
        "to_send": 0,
        "sent": 0,
        "uuid": "57702beb-6fae-4355-a324-c2fd5b59a549",
        "type": "regular",
        "name": "Test campaign",
        "subject": "Welcome to listmonk",
        "from_email": "No Reply <[email protected]>",
        "body": "<h3>Hi {{ .Subscriber.FirstName }}!</h3>\n\t\t\tThis is a test e-mail campaign. Your second name is {{ .Subscriber.LastName }} and you are from {{ .Subscriber.Attribs.city }}.",
        "send_at": "2020-03-15T17:36:41.293233+01:00",
        "status": "scheduled",
        "content_type": "richtext",
        "tags": [
            "test-campaign"
        ],
        "template_id": 1,
        "messenger": "email"
    }
}

DELETE /api/campaigns/:campaign_id

Deletes a campaign, only scheduled campaigns that have not yet been started can be deleted.

Parameters
Name Parameter Type Data Type Required/Optional Description
campaign_id Path Parameter Number Required The id value of the campaign you want to delete.
Example Request
curl -u "username:password" -X DELETE 'http://localhost:9000/api/campaigns/34'
Example Response
{
    "data": true
}