Campaign management resource#

Required API Scopes: account_management

List campaigns#

The resource results can be filtered using the optional querystring parameters:

  • filter: - all, campaign, transactional default all

  • state_filter all, new, scheduled, sending, sent, cancelled default all

  • contact_list_filter: all, $contactlist_id default all

  • orderby: name, cdate, total, opened, openedratio, clicked, clickedratio default cdate

  • offset default:0

  • limit default:20

Request

GET /campaigns

Response

{
    "campaign": [
        {
            "campaign_id": 0,
            "name": "Campaign Name",
            "cdate": "2023-01-01T00:00:00Z",
            "mdate": "2023-01-01T00:00:00Z",
            "autocreated": false,
            "state": "new",
            "body_html": "<p>Hello, this is a test campaign.</p>",
            "schedule": "2023-01-01T00:00:00Z",
            "archived": false
        }
    ],
  "total": 2,
}

Create campaign#

Request

POST /create campaign

Request Body

{
    "name": "Campaign name",
    "subject": "Campaign subject",
    "sender_email": "sender@example.com",
    "sender_name": "Sender Name",
    "replyto": "replyto@example.com",
    "contactlist_id": 123,
    "segment_id": 0,
    "ga_tracking": false,
    "personalize_to": "",
    "body_html": "<p>Hello, this is a test campaign.</p>",
    "template_id": 0
}

Response

{
   "status",
   "id"
}

Get campaign by id#

Request

GET /campaigns/{campaign_id}

Response

{
    "campaign": {
        "campaign_id": 0,
        "name": "Campaign Name",
        "cdate": "2023-01-01T00:00:00Z",
        "mdate": "2023-01-01T00:00:00Z",
        "autocreated": false,
        "subject": "Campaign Subject",
        "sender_name": "Sender Name",
        "replyto": "replyto@example.com",
        "schedule": "2023-01-01T00:00:00Z",
        "state": "new",
        "archived": false,
        "contactlist_id": 123,
        "segment_id": 0,
        "ga_tracking": false,
        "personalize_to": "",
        "contactlist_name": "Contact List Name",
        "sender_email": "sender@example.com"
    }
}

Update campaign#

Request

POST /campaigns/{campaign_id}

Request Body

{
    "name": "Campaign Name",
    "subject": "Campaign Subject",
    "sender_email": "sender@example.com",
    "sender_name": "Sender Name",
    "replyto": "replyto@example.com",
    "contactlist_id": 123,
    "segment_id": 0,
    "ga_tracking": false,
    "personalize_to": "",
    "body_html": "<p>Hello, this is a test campaign.</p>",
    "template_id": 0
}

Note

  • A campaign can be updated ONLY IF it’s status is ‘new’ (meaning that the requested campaign wasn’t started)

Response

{
    "status"
}

Schedule campaign#

Request

POST /campaigns/schedule/{campaign_id}

Request Body

{
    "date": "2023-01-01T00:00:00Z"
}

Response

{
    "status"
}

Unschedule previously scheduled campaign#

Request

DELETE: /campaigns/schedule/{campaign_id}

Response

{
    "status"
}

Send campaign test email#

Request

POST: /campaigns/test/{campaign_id}

Request Body

{
    "addresses": "address1@example.com,address2@example.com"
}

Response

{
    "status"
}

Send campaign#

Request

POST: /campaigns/send/{campaign_id}

Response

{
    "status"
}

Archive campaign#

Request

POST: /campaigns/archive/{campaign_id}

Response

{
    "status"
}

Unarchive campaign#

Request

DELETE: /campaigns/archive/{campaign_id}

Response

{
    "status"
}

Ready to send campaign#

Request

GET: /campaigns/ready/{campaign_id}

Response

{
    "status"
}
Status::
  • ok

  • editing_no_longer_allowed

  • campaign_no_unsublink

  • campaign_bad_rating

  • campaign_sending_disabled

  • not_enough_credits

  • zero_contacts

Duplicate campaign#

Request

POST: /campaigns/duplicate/{campaign_id}

Response

{
    "status",
    "new_id"
}

Get campaign content#

Request

GET: /campaigns/content/{campaign_id}

Response

{
    "body_text",
    "body_html"
}

Errors:#

  • denied (401) - you do not have access to that resource

  • error (500) - server error

  • bad_request (400) - required data was not sent

  • not_found (404) - resource not found

Error codes:#

  • 200: success

  • 201: request has ben fulfilled, new resource created

  • 400: request cannot be fulfilled due to bad syntax (one ore more arguments are missing or midpelling)

  • 401: not alowed here

  • 403: the server understood the request, but is refusing to fulfill it (reason in response status)

  • 404: Resource not found

  • 500: Server error