Our API

The Campaign Monitor API opens up a world of possibilities for integrating our platform with your favorite CMS, blog, or other third party software.

Journeys

Covers some journey functionality including viewing all journeys, journey summary, detailed journey reporting, and copy a journey. Note: Users cannot retrieve journey reporting data older than 1 year via the API.

Getting journeys

Get https://api.createsend.com/api/v3.3/clients/{clientid}/journeys.{xml|json}

Contains a list of all journeys belonging to a particular client. The results include journey ID, status, name, and the ID of the list the journey is attached to.

  • clientid The ID of the client for which journeys should be retrieved.
Expected response: JSONXML
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[
    {
        "ListID": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a",
        "JourneyID": "b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b",
        "Name": "Journey One",
        "Status": "Not started"
    },
    {
        "ListID": "c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c",
        "JourneyID": "d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d",
        "Name": "Journey Two",
        "Status": "Active"
    },
    {
        "ListID": "c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c",
        "JourneyID": "e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e",
        "Name": "Journey Three",
        "Status": "Paused"
    }
]
Error responses:

Please see our response status codes documentation for details of potential error responses for any API request.

Getting journey summary

Get https://api.createsend.com/api/v3.3/journeys/{journeyid}.{xml|json}

Get a full summary of a journey, including the journey’s ID, name, trigger type and status as well as individual email statistics.

  • journeyid The ID of the journey you want the summary for.
Expected response: JSONXML
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "JourneyID": "a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1",
    "Name": "New journey",
    "TriggerType": "On Subscription",
    "Status": "Active",
    "Emails": [
        {
            "EmailID": "b1b1b1b1b1b1b1b1b1b1",
            "Name": "New Email",
            "Bounced": 0,
            "Clicked": 0,
            "Opened": 3,
            "Sent": 1,
            "UniqueOpened": 1,
            "Unsubscribed": 0
        }
    ]
}
Error responses:

Please see our response status codes documentation for details of potential error responses for any API request.

If you receive a 400 Bad Request response for this request, these are the possible errors which may be included in the body of the response:

  • 3000: Invalid Journey ID The journey ID is not valid.

Journey email recipients

Get https://api.createsend.com/api/v3.3/journeys/email/{emailId}/recipients.{xml|json}?date={YYYY-MM-DD HH:MM}&page={pagenumber}&pagesize={pagesize}&orderdirection={asc|desc}

Retrieves a paged result representing all subscribers who have been sent a particular email within a journey, including email address and sent date. Results are ordered by date the email was sent to the recipient. You can control how results should be returned using page size, and sort direction.

  • emailid The ID of the journey email you want data for. Get the ID by getting the journey summary.
  • date Recipients for emails sent on or after the date value specified will be returned. Must be in the format YYYY-MM-DD HH:MM. Default: last 30 days.
  • page The results page to retrieve. Default: 1.
  • pageSize The number of records to retrieve per results page. Default: 1000.
  • orderDirection The direction in which results should be ordered. Results will be ordered by date sent. Default: asc.
Expected response: JSONXML
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "Results": [
        {
            "EmailAddress": "[email protected]",
            "SentDate": "2019-07-12 09:45:00",
        },
        {
            "EmailAddress": "[email protected]",
            "SentDate": "2019-07-12 10:45:00",
        },
        {
            "EmailAddress": "[email protected]",
            "SentDate": "2019-07-13 09:00:00",
        },
        {
            "EmailAddress": "[email protected]",
            "SentDate": "2019-07-16 11:45:00",
        }
    ],
    "ResultsOrderedBy": "SentDate",
    "OrderDirection": "ASC",
    "PageNumber": 2,
    "PageSize": 10,
    "RecordsOnThisPage": 4,
    "TotalNumberOfRecords": 14,
    "NumberOfPages": 2
}
Error responses:

Please see our response status codes documentation for details of potential error responses for any API request.

If you receive a 400 Bad Request response for this request, these are the possible errors which may be included in the body of the response:

  • 5: Invalid Date The Send Date provided was invalid.
  • 800: Invalid page number The page number you have provided is invalid.
  • 801: Invalid page size The page size must be between 10 and 1000.
  • 803: Invalid order direction The order direction must be either asc or desc.
  • 3002: Invalid Journey Email ID The journey email ID is not valid.

Journey email opens

Get https://api.createsend.com/api/v3.3/journeys/email/{emailId}/opens.{json|xml}?date={YYYY-MM-DD HH:MM}&page={pagenumber}&pagesize={pagesize}&orderdirection={asc|desc}

Retrieves a paged result representing all subscribers who opened a given journey email, including the date/time and IP address from which they opened the campaign. When possible, the latitude, longitude, city, region, country code, and country name as geocoded from the IP address, are also returned. Results are ordered by date opened. You can control how results should be returned using page size, and sort direction.

  • emailId The ID of the journey email you want data for. Get the ID by getting the journey summary.
  • date Opens on or after the date value specified will be returned. Must be in the format YYYY-MM-DD HH:MM. Default: last 30 days.
  • page The results page to retrieve. Default: 1.
  • pageSize The number of records to retrieve per results page. Default: 1000.
  • orderDirection The direction in which results should be ordered. Results will be ordered by date opened. Default: asc.
Expected response: JSONXML
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "Results": [
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:33:00",
            "IPAddress": "192.168.0.3",
            "Latitude": -33.8683,
            "Longitude": 151.2086,
            "City": "Sydney",
            "Region": "New South Wales",
            "CountryCode": "AU",
            "CountryName": "Australia"
        },
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:35:00",
            "IPAddress": "192.168.0.3",
            "Latitude": -33.8683,
            "Longitude": 151.2086,
            "City": "Sydney",
            "Region": "New South Wales",
            "CountryCode": "AU",
            "CountryName": "Australia"
        },
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:35:00",
            "IPAddress": "192.168.0.3",
            "Latitude": -33.8683,
            "Longitude": 151.2086,
            "City": "Sydney",
            "Region": "New South Wales",
            "CountryCode": "AU",
            "CountryName": "Australia"
        },
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:35:00",
            "IPAddress": "192.168.0.3",
            "Latitude": -33.8683,
            "Longitude": 151.2086,
            "City": "Sydney",
            "Region": "New South Wales",
            "CountryCode": "AU",
            "CountryName": "Australia"
        }
    ],
    "ResultsOrderedBy": "Date",
    "OrderDirection": "ASC",
    "PageNumber": 1,
    "PageSize": 1000,
    "RecordsOnThisPage": 4,
    "TotalNumberOfRecords": 4,
    "NumberOfPages": 1
}
Error responses:

Please see our response status codes documentation for details of potential error responses for any API request.

If you receive a 400 Bad Request response for this request, these are the possible errors which may be included in the body of the response:

  • 5: Invalid Date The Send Date provided was invalid.
  • 800: Invalid page number The page number you have provided is invalid.
  • 801: Invalid page size The page size must be between 10 and 1000.
  • 803: Invalid order direction The order direction must be either asc or desc.
  • 3002: Invalid Journey Email ID The journey email ID is not valid.

Journey email clicks

Get https://api.createsend.com/api/v3.3/journeys/email/{emailId}/clicks.{json|xml}?date={YYYY-MM-DD HH:MM}&page={pagenumber}&pagesize={pagesize}&orderdirection={asc|desc}

Retrieves a paged result representing all subscribers who clicked a link in a given journey email, including the date/time and IP address from which they clicked the link. When possible, the latitude, longitude, city, region, country code, and country name as geocoded from the IP address, are also returned. Results are ordered by date clicked. You can control how results should be returned using page size, and sort direction.

  • emailId The ID of the journey email you want data for. Get the ID by getting the journey summary.
  • date Clicks on or after the date value specified will be returned. Must be in the format YYYY-MM-DD HH:MM. Default: last 30 days.
  • page The results page to retrieve. Default: 1.
  • pageSize The number of records to retrieve per results page. Default: 1000.
  • orderDirection The direction in which results should be ordered. Results will be ordered by date clicked. Default: asc.
Expected response: JSONXML
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "Results": [
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:33:00",
            "URL": "https://test.com",
            "IPAddress": "192.168.0.3",
            "Latitude": -33.8683,
            "Longitude": 151.2086,
            "City": "Sydney",
            "Region": "New South Wales",
            "CountryCode": "AU",
            "CountryName": "Australia"
        },
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:35:00",
            "URL": "https://test.com",
            "IPAddress": "192.168.0.3",
            "Latitude": -33.8683,
            "Longitude": 151.2086,
            "City": "Sydney",
            "Region": "New South Wales",
            "CountryCode": "AU",
            "CountryName": "Australia"
        },
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:35:00",
            "URL": "https://test.com",
            "IPAddress": "192.168.0.3",
            "Latitude": -33.8683,
            "Longitude": 151.2086,
            "City": "Sydney",
            "Region": "New South Wales",
            "CountryCode": "AU",
            "CountryName": "Australia"
        },
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:35:00",
            "URL": "https://test.com",
            "IPAddress": "192.168.0.3",
            "Latitude": -33.8683,
            "Longitude": 151.2086,
            "City": "Sydney",
            "Region": "New South Wales",
            "CountryCode": "AU",
            "CountryName": "Australia"
        }
    ],
    "ResultsOrderedBy": "Date",
    "OrderDirection": "ASC",
    "PageNumber": 1,
    "PageSize": 1000,
    "RecordsOnThisPage": 4,
    "TotalNumberOfRecords": 4,
    "NumberOfPages": 1
}
Error responses:

Please see our response status codes documentation for details of potential error responses for any API request.

If you receive a 400 Bad Request response for this request, these are the possible errors which may be included in the body of the response:

  • 5: Invalid Date The Send Date provided was invalid.
  • 800: Invalid page number The page number you have provided is invalid.
  • 801: Invalid page size The page size must be between 10 and 1000.
  • 803: Invalid order direction The order direction must be either asc or desc.
  • 3002: Invalid Journey Email ID The journey email ID is not valid.

Journey email bounces

Get https://api.createsend.com/api/v3.3/journeys/email/{emailId}/bounces.{json|xml}?date={YYYY-MM-DD HH:MM}&page={pagenumber}&pagesize={pagesize}&orderdirection={asc|desc}

Retrieves a paged result representing all emails that were bounced, including the date/time and reason for the bounce. Results are ordered by date bounced. You can control how results should be returned using page size, and sort direction.

  • emailId The ID of the journey email you want data for. Get the ID by getting the journey summary.
  • date Bounces on or after the date value specified will be returned. Must be in the format YYYY-MM-DD HH:MM. Default: last 30 days.
  • page The results page to retrieve. Default: 1.
  • pageSize The number of records to retrieve per results page. Default: 1000.
  • orderDirection The direction in which results should be ordered. Results will be ordered by date bounced. Default: asc.
Expected response: JSONXML
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "Results": [
        {
            "EmailAddress": "[email protected]",
            "BounceType": "Hard",
            "Date": "2019-08-08 00:47:00",
            "Reason": "Hard Bounce"
        },
        {
            "EmailAddress": "[email protected]",
            "BounceType": "Soft",
            "Date": "2019-08-08 00:54:00",
            "Reason": "Soft Bounce - Mailbox Full"
        },
        {
            "EmailAddress": "[email protected]",
            "BounceType": "Hard",
            "Date": "2019-08-08 22:09:00",
            "Reason": "Hard Bounce"
        },
        {
            "EmailAddress": "[email protected]",
            "BounceType": "Soft",
            "Date": "2019-08-08 22:24:00",
            "Reason": "Soft Bounce - Dns Failure"
        }
    ],
    "ResultsOrderedBy": "Date",
    "OrderDirection": "ASC",
    "PageNumber": 1,
    "PageSize": 1000,
    "RecordsOnThisPage": 4,
    "TotalNumberOfRecords": 4,
    "NumberOfPages": 1
}
Error responses:

Please see our response status codes documentation for details of potential error responses for any API request.

If you receive a 400 Bad Request response for this request, these are the possible errors which may be included in the body of the response:

  • 5: Invalid Date The Send Date provided was invalid.
  • 800: Invalid page number The page number you have provided is invalid.
  • 801: Invalid page size The page size must be between 10 and 1000.
  • 803: Invalid order direction The order direction must be either asc or desc.
  • 3002: Invalid Journey Email ID The journey email ID is not valid.

Journey email unsubscribes

Get https://api.createsend.com/api/v3.3/journeys/email/{emailId}/unsubscribes.{json|xml}?date={YYYY-MM-DD HH:MM}&page={pagenumber}&pagesize={pagesize}&orderdirection={asc|desc}

Retrieves a paged result representing all subscribers who unsubscribed from a journey email, including the date/time and IP address they unsubscribed from. Results are ordered by date unsubscribed. You can control how results should be returned using page size, and sort direction.

  • emailId The ID of the journey email you want data for. Get the ID by getting the journey summary.
  • date Unsubscribes on or after the date value specified will be returned. Must be in the format YYYY-MM-DD HH:MM. Default: last 30 days.
  • page The results page to retrieve. Default: 1.
  • pageSize The number of records to retrieve per results page. Default: 1000.
  • orderDirection The direction in which results should be ordered. Results will be ordered by date unsubscribed. Default: asc.
Expected response: JSONXML
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "Results": [
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:33:00",
            "IPAddress": "192.168.0.3"
        },
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:35:00",
            "IPAddress": "192.168.0.3"
        },
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:35:00",
            "IPAddress": "192.168.0.3"
        },
        {
            "EmailAddress": "[email protected]",
            "Date": "2019-07-29 10:35:00",
            "IPAddress": "192.168.0.3"
        }
    ],
    "ResultsOrderedBy": "Date",
    "OrderDirection": "ASC",
    "PageNumber": 1,
    "PageSize": 1000,
    "RecordsOnThisPage": 4,
    "TotalNumberOfRecords": 4,
    "NumberOfPages": 1
}
Error responses:

Please see our response status codes documentation for details of potential error responses for any API request.

If you receive a 400 Bad Request response for this request, these are the possible errors which may be included in the body of the response:

  • 5: Invalid Date The Send Date provided was invalid.
  • 800: Invalid page number The page number you have provided is invalid.
  • 801: Invalid page size The page size must be between 10 and 1000.
  • 803: Invalid order direction The order direction must be either asc or desc.
  • 3002: Invalid Journey Email ID The journey email ID is not valid.

Copy a journey

Post https://api.createsend.com/api/v3.3/journeys/{journeyid}/copy.{xml|json}

Copies an existing journey to a nominated client in the account. Not every element of every journey can be copied, and some elements require the relevant entities to be copied beforehand. It is the responsibility of the implementer to be aware of these limitations and use the copy function appropriately. Refer to Copy a journey help documentation.

  • JOURNEYID The ID of the journey to be copied
Expected request: JSONXML
{"DestinationClientID":"b3ffa40c7c6a58f63486ed85c1c94d31","DestinationListID":"9704be7956e25465b7e217faeb898155","Name":"New Journey Name"}
  • DESTINATIONCLIENTID Required. The client you would like to copy the journey to. Can be the client the journey is currently in, or a different client. The authenticated caller must have access to this client.
  • DESTINATIONLISTID Required. The subscriber list in the destination client you would like to copy the journey to. Can be the list the journey is currently in, or a different list.
  • NAME Optional. The name of the copied journey. Journey names cannot be empty and have a maximum length of 50 characters. When a journey name is not provided, the original journey name will be used, and suffixed if it already exists in the destination client per UI copy journey behavior.
Response

Does not contain the ID of the journey that has been created. Duplication occurs asynchronously. Once created, the new journey ID can be obtained when Getting journeys belonging to the destination client.

Expected response: (Same for all languages)
HTTP/1.1 202 Accepted
Error responses:

Please see our response status codes documentation for details of potential error responses for any API request.

If you receive a 400 Bad Request response for this request, these are the possible errors which may be included in the body of the response:

  • 60: You do not have the required permission to access this resource When using OAuth, permission scope of Automation is required to copy templates.
  • 125: Invalid DestinationClientID A valid Destination Client ID is required.
  • 126: Invalid DestinationListID A valid Destination List ID is required.
  • 3000: Invalid JourneyID A valid Journey ID is required.
  • 3003: Invalid journey name. Journey names cannot be empty and have a maximum length of 50 characters. Please reduce the journey name to 50 characters or less, or do not provide a name.

Subscriber Activity Journeys

Post https://api.createsend.com/api/v3.3/events/publish/{clientId}

Publishes an event to initiate a Subscriber Activity journey.

  • clientid The ID of the client that a Subscriber Activity journey will be initiated for.
Expected request:
{
    "ContactID": {
        "Email": "[email protected]"
    },
    "EventName": "Purchased",
    "Data": {
        "Name": "New Subscriber",
        "Item": "Chocolate",
        "Price": "$12.95",
    }
}
  • Email When you set up the Subscriber Activity journey, it will be tied to a list. The email address here must be in that list, otherwise the event will be discarded and there will be no emails sent to that email address.
  • EventName The name of the event that will initiate an instance of the Subscriber Activity journey. Note: The first time a new event name is sent to this endpoint, it will add this new event name in the dropdown at the Create New Journey step within the app. Once the event is added, all subsequent sends will initiate the journey with that event name.
  • Data This is optional and can be any free form JSON representation of data to be sent along with events. Emails built using the Email builder for Subscriber Activity journeys have the ability to display data using the Liquid templating language.
Expected response:
HTTP/1.1 200 OK

{
    "EventID": "5da8a8e0-9b7e-48fe-b951-4c18035919e7"
}
Error responses:

Please see our response status codes documentation for details of potential error responses for any API request.

If you receive a 400 Bad Request response for this request, these are the possible errors which may be included in the body of the response:

  • 84401 Request entity is too large, event payload can't be larger than 32 kb The event payload size is unsupported.
  • 84402 Invalid request body, EventName is mandatory The EventName property is missing from the request.
  • 84403 Invalid request body, Identity is mandatory A ContactID with an Email property is missing from the request
  • 84404 Request entity is too large, EventName field can't be longer than 1000 bytes The event name must not be more than 1000 bytes in size.