Developers

Example Usage of
campaign_list

View one or many campaigns.

Description: View campaign settings and information.
Endpoint: /admin/api.php?api_action=campaign_list
HTTP method: GET
Supported output formats: xml, json, serialize
Requires authentication: true
Parameters:
* indicates requirement. Underlined params include in URL, otherwise as part of the post body. POST data must be formatted as
Content-Type: application/x-www-form-urlencoded
. We don't accept any other input formats like JSON.
Variable Description
api_action*campaign_list
api_outputxml, json, or serialize (default is XML)
ids*A comma-separated list of campaign IDs you wish to view. (not required if filters are added)
filters[id_greater]Campaign ID: only include campaigns with an ID greater than some integer
filters[id_less]Campaign ID: only include campaigns with an ID less than some integer
filters[name]Filter: Perform a pattern match (LIKE) for Campaign Name.
filters[type]Type of campaign. ('single', 'recurring', 'split', 'responder', 'reminder', 'activerss', 'text')
filters[cdate_since_datetime]Campaigns created since a certain date.
filters[sdate_since_datetime]Campaigns that started sending since a certain date.
filters[ldate_since_datetime]Campaigns that last sent since a certain date.
filters[groupids]Campaigns sent by users of a certain group.
fullWhether or not to return ALL data, or an abbreviated portion (set to 1 for ALL data, and 0 for abbreviated, default is 1).
sortField to sort on (possible values: id (campaign id), cdate, default is id).
sort_directionDirection of sort (possible values: ASC or DESC, default is DESC).
pagePagination: results are limited to 10 per page, so specify what page to view (default is 1).
Example response:
Variable Description
idID of the campaign.
typeType of campaign. Possible values: 'single', 'recurring', 'responder', 'reminder', 'split', 'activerss', 'text'
useridUser ID who created the campaign.
segmentidSegment ID used for the campaign.
seriesidAutomation ID that this campaign is associated with.
formidForm ID used for the campaign.
basetemplateidTemplate used to create the campaign.
basemessageidInternal message ID used for the campaign.
addressidAddress ID used for the campaign.
sourceHow the campaign was created. Possible value: 'web', 'api', 'copy', 'recurr', 'system'
nameInternal name of the campaign.
cdateDate the campaign was initially created. Example: 2015-11-01 15:34:28
mdateDate the campaign was last modified. Example: 2015-11-01 15:38:28
sdateDate the campaign started sending. Example: 2015-11-01 15:45:28
ldateDate the campaign last sent to a contact (essentially the end date). Example: 2015-11-01 16:01:55
send_amtTotal amount of contacts actually sent this campaign.
total_amtTotal amount of contacts determined to receive this campaign.
opensTotal amount of opens for this campaign (including multiple opens by the same contact).
uniqueopensTotal amount of distinct (unique) contacts that opened this campaign.
linkclicksTotal amount of link clicks for this campaign (including multiple link clicks by the same contact).
uniquelinkclicksTotal amount of distinct (unique) links clicked for this campaign.
subscriberclicksTotal amount of distinct (unique) contacts that clicked a link for this campaign.
forwardsTotal amount of forwards (via the %FORWARD2FRIEND% personalization link only) for this campaign (including multiple forwards initiated by the same contact).
uniqueforwardsTotal amount of distinct (unique) contacts that forwarded this campaign (via the %FORWARD2FRIEND% personalization link only).
hardbouncesTotal number of hard bounces for this campaign.
softbouncesTotal number of soft bounces for this campaign.
unsubscribesTotal number of unsubscribes for this campaign.
unsubreasonsTotal number of unsubscribe reasons provided for unsubscriptions for this campaign.
updatesTotal number of contacts that updated their profile via this campaign (using the %UPDATELINK% personalization tag).
socialsharesTotal number of social shares conducted for this campaign.
repliesTotal number of replies for this campaign (including multiple replies by the same contact).
uniquerepliesTotal number of distinct (unique) contacts that replied to this campaign.
statusStatus of this campaign. Possible values: 0 = Draft, 1 = Scheduled, 2 = Sending, 3 = Paused, 4 = Stopped, 5 = Completed, 6 = Disabled, 7 = Pending Approval
tracklinksType of link tracking enabled for the campaign. Possible values: 'all', 'mime', 'html', 'text', 'none'
tracklinksanalyticsWhether or not Google Analytics link tracking is enabled. Possible values: 1 = Yes, 0 = No
trackreadsWhether or not read/open tracking is enabled for this campaign. Possible values: 1 = Yes, 0 = No
trackreadsanalyticsWhether or not Google Analytics read tracking is enabled. Possible values: 1 = Yes, 0 = No
analytics_campaign_nameThe Google Analytics campaign name (used for organizing within Google Analytics).
tweetWhether or not this campaign auto-posted to Twitter. Possible values: 1 = Yes, 0 = No
facebookWhether or not this campaign auto-posted to Facebook. Possible values: 1 = Yes, 0 = No
surveyThe unique ID from the SurveyMonkey personalization tag, which is the URL ID for the survey.
recurringIf this is a recurring campaign, how often it repeats. Possible values: day1, day2, week1, week2, month1, month2, quarter1, quarter2, year1, year2. Values ending with 1 mean "every", and ending with 2 mean "every other"
split_typeIf this is a split-type campaign, the type of split mailing. Example: 'even' (send each message to even number of contacts). Possible values: 'even', 'read', 'click'. If 'read' or 'click' is used, 'split_offset' and 'split_offset_type' need to be present. In that case it will use a "winner" scenario.
split_offsetIf this is a split-type campaign, the number of units to wait before determining the winner. Example: 2
split_offset_typeIf this is a split-type campaign, the type of unit to wait before determining the winner. Possible values: 'hour', 'day', 'week', 'month'
split_winner_messageidThe winning message ID.
split_winner_awaitingWhether or not a winner is still being determined. Possible values: 1 = Yes, 0 = No
responder_offsetIf this is an auto-responder type campaign, how many hours after subscription to send it. Example: 2
reminder_fieldIf this is an auto-reminder (subscriber date-based) type campaign, what contact field to look at. Possible values: 'cdate', 'sdate', 'udate', or an ID of a Date-type custom field.
reminder_formatIf this is an auto-reminder (subscriber date-based) type campaign, the format in which the date is represented in above contact field. Example: 'yyyy-mm-dd'
reminder_typeIf this is an auto-reminder (subscriber date-based) type campaign, match just a month and the day (yearly), or match year as well. Possible values: 'month_day', 'year_month_day'
reminder_offsetIf this is an auto-reminder (subscriber date-based) type campaign, how many days/weeks/months/years from that date should it trigger. Example: 5
reminder_offset_typeIf this is an auto-reminder (subscriber date-based) type campaign. Possible values: 'day', 'week', 'month', 'year'
reminder_offset_signIf this is an auto-reminder (subscriber date-based) type campaign. Possible values: + and -
activerss_intervalIf this is an activerss-type campaign, how often it checks for new feed items. Same options as for recurring mailings. Example: 'day1'
activerss_urlThe RSS URL used to check for new feed items that get inserted into the campaign.
activerss_itemsThe number of RSS items to display in the campaign.
laststepThe last step of the campaign process saved. Example: 'summary'
scheduleWhether or not this campaign is scheduled to send at a later date/time.
scheduleddateThe date the campaign is scheduled to send.
replysysWhether or not reply tracking is enabled for this campaign. Possible values: 1 = Yes, 0 = No
fake_ldateCampaigns that have not attempted to be sent before are given a fake ldate to be used for sorting.
listsArray of lists.
sdate_isotimestamp for testing purposes
ldate_isotimestamp for testing purposes
listslistString of comma-separated list ID's.
messagesArray of email messages used for the campaign.
messageslistString of comma-separated message ID's used for the campaign.
seriesnameName of the automation that this campaign is associated with.
result_code1
result_messageSuccess: Something is returned
result_outputserialize

PHP Example

This is an example of using the campaign_list call with PHP. You can replicate the same idea in virtually any other programming language. The example shown is using serialize as the output format. You can change that to XML or JSON if you would like.

<?php

// By default, this sample code is designed to get the result from your ActiveCampaign installation and print out the result
$url = 'https://account.api-us1.com';

// the API Key can be found on the "Your Settings" page under the "API" tab.
// replace this with your API Key
$api_key = 'YOUR_API_KEY';

$params = array(

	// this is the action that fetches campaign info based on the ID you provide
	'api_action'   					=> 'campaign_list',

	// define the type of output you wish to get back
	// possible values:
	// - 'xml'  :      you have to write your own XML parser
	// - 'json' :      data is returned in JSON format and can be decoded with
	//                 json_decode() function (included in PHP since 5.2.0)
	// - 'serialize' : data is returned in a serialized format and can be decoded with
	//                 a native unserialize() function
	'api_output'   					=> 'serialize',

	// a comma-separated list of IDs of campaigns you wish to fetch
	'ids'          					=> '1,2,3,4,5',

	// filters: supply filters that will narrow down the results

	// Campaign ID: only include campaigns with an ID greater than some integer
	// 'filters[id_greater]' 			=> '44',

	// Campaign ID: only include campaigns with an ID less than some integer
	// 'filters[id_less]'       		=> '44',

	// perform a pattern match (LIKE) for Campaign Name
	// 'filters[name]'          		=> 'General',

	// campaign type
	// 'filters[type]'          		=> 'single',
	// possible values:
	// - 'single'
	// - 'recurring'
	// - 'split'
	// - 'responder'
	// - 'reminder'
	// - 'activerss'
	// - 'text'

	// Campaigns sent to certain lists: exact match - provide single list ID, or comma-separated list ID's
	// 'filters[listid]'        		=> '4',

	// Campaigns created *since* a specified date in the past: exact match - provide MySQL-formatted date/time string
	// 'filters[cdate_since_datetime]'	=> '2009-10-22 00:00:00',

	// Campaigns that started sending *since* a specified date in the past: exact match - provide MySQL-formatted
	// date/time string
	// 'filters[sdate_since_datetime]' 	=> '2009-10-22 00:00:00',

	// Campaigns that last sent *since* a specified date in the past: exact match - provide MySQL-formatted date/time
	// string
	// 'filters[ldate_since_datetime]' 	=> '2009-10-22 00:00:00',

	// Campaigns created by users of specific group(s). Please note your API user must be in the "Admin" Group to
	// retrieve different group data
	// 'filters[groupids]' 				=> '5,7,9',

	// whether or not to return ALL data, or an abbreviated portion (set to 0 for abbreviated)
	'full'         					=> 1,

	// optional: change how results are sorted (default is below)
	// 'sort'                   		=> 'id'
	// possible values:
	// - 'id' (campaign id)
	// - 'cdate'

	// 'sort_direction'         		=> 'DESC'
	// possible values:
	// - 'ASC'
	// - 'DESC'

	// pagination - results are limited to 10 per page, so specify what page to view (default is 1)
	// 'page'							=> 2,
);

// This section takes the input fields and converts them to the proper format
$query = "";
foreach( $params as $key => $value ) $query .= urlencode($key) . '=' . urlencode($value) . '&';
$query = rtrim($query, '& ');

// clean up the url
$url = rtrim($url, '/ ');

// This sample code uses the CURL library for php to establish a connection,
// submit your request, and show (print out) the response.
if ( !function_exists('curl_init') ) die('CURL not supported. (introduced in PHP 4.0.2)');

// If JSON is used, check if json_decode is present (PHP 5.2.0+)
if ( $params['api_output'] == 'json' && !function_exists('json_decode') ) {
	die('JSON not supported. (introduced in PHP 5.2.0)');
}

// define a final API request - GET
$api = $url . '/admin/api.php?' . $query;

$request = curl_init($api); // initiate curl object
curl_setopt($request, CURLOPT_HTTPHEADER, array('API-TOKEN: ' . $api_key));  //  Provide the API Token via the API-TOKEN header
curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response
curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1)
//curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment if you get no gateway response and are using HTTPS
curl_setopt($request, CURLOPT_FOLLOWLOCATION, true);

$response = (string)curl_exec($request); // execute curl fetch and store results in $response

// additional options may be required depending upon your server configuration
// you can find documentation on curl options at http://www.php.net/curl_setopt
curl_close($request); // close curl object

if ( !$response ) {
	die('Nothing was returned. Do you have a connection to Email Marketing server?');
}

// This line takes the response and breaks it into an array using:
// JSON decoder
//$result = json_decode($response);
// unserializer
$result = unserialize($response);
// XML parser...
// ...

// Result info that is always returned
echo 'Result: ' . ( $result['result_code'] ? 'SUCCESS' : 'FAILED' ) . '<br />';
echo 'Message: ' . $result['result_message'] . '<br />';

// The entire result printed out
echo 'The entire result printed out:<br />';
echo '<pre>';
print_r($result);
echo '</pre>';

// Raw response printed out
echo 'Raw response printed out:<br />';
echo '<pre>';
print_r($response);
echo '</pre>';

// API URL that returned the result
echo 'API URL that returned the result:<br />';
echo $api;?>

Questions? Discuss this API call in our developer forum