Suggest Edits

Indroduction

 

Sendloop's full featured API will give you enough flexibility and integration opportunities.
With the help of our API, you can integrate your Sendloop account into your own system or extend functionalities easily.

Sendloop's API uses basic HTTP GET and POST methods to receive and send data. You can do almost everything that you can do on the user interface.

API command syntax

You can access to your account API with the following format:

http://youraccount.sendloop.com/api/v3/command/format

youraccount
Replace this with your own Sendloop account sub-domain
command
Replace this with the API command you are going to call
format
Specify how you wish to receive the response from API.
Available format options are "json", "xml", "php"

Heads up!

Whenever you are going to make an API connection, you must pass your API key as post data.
Otherwise, API error response will be returned. In order to pass your API key, first generate it in your account and then pass it with "APIKey" post data.

Generating API key

You can generate unlimited API keys for each application you are going to integrate. In this way, you can isolate security risks. In order to generate an API key, simply login to your Sendloop account, click "Settings" on the top right menu. Then click "API Settings" tab. On top right, you will see "Create new API key" button. Click on it. A new IP key will be generated for you.

You will need this key when connecting to Sendloop's API.

Example API call

Below, you can find an example curl command line connecting to Sendloop's API and getting the system time. In this example, we assume that API key is a dummy string.

curl -d APIKey=xxxx-xxxxx-xxxxx-xxxxx-xxxxx \
http://youraccount.sendloop.com/api/v3/System.SystemDate.Get/json

The response will be:

{
	"Success": true,
	"SystemDate": "2012-06-18 23:50:50",
	"SystemTimeZone": "Europe\/London"
}

PHP library for Sendloop API

We prepared a small PHP library for you to make it even easier to connect to Sendloop API inside your PHP libraries.

This API class gives you opportunity to do anything you can do via API connection. With the new powerful API, you can build your own re-branded iPhone/iPad application or build a re-branded reporting/email marketing platform on your own server.

To download PHP wrapper class for Sendloop API, please visit the Sendloop PHP API library on Github.

Suggest Edits

Error Codes

 

Whenever an error occurs during API connection, system will return failure data just like the one below:

{
	"Success":false,
	"ErrorCode":105,
	"ErrorMessage":"Some parameters are missing",
	"ErrorFields":["EmailAddress"]
}

Below, you can find API error codes and descriptions:

100
Invalid response format
101
Invalid API command
102
API command module not found
103
IP address is not authorized to the API connection
104
Invalid API key
105
Required parameter(s) missing
106
Requested data not found
107
Invalid sender email address domain
108
Provided domain has been already authenticated
109
Entered email address has been already registered for another customer
110
Entered username has been already registered for another customer
111
Invalid email address format
112
No customer account for the provided ID number
113
Invalid username
114
Invalid email address
115
Invalid password
116
Invalid parameter value provided. Please check the related API documentation and pass parameter values correctly
117
There are currently campaigns sending to the selected list. Please wait until the delivery gets finished
118
Invalid List ID. List not found.
119
BounceType value should be "hard" or "soft".
120
Website integration settings not found for the requested list ID
121
Invalid segment ID
122
RemoveType must be set as "all", "segment" or "specific"
123
This API command has been disabled
124
Invalid email address format
125
Email address already exists in the list
126
Invalid email address
127
No subscriber record found for the provided email address and list ID
128
Invalid email address format
129
Invalid custom field type
130
Invalid custom field data type
131
FieldOptions field is missing
132
The provided FieldOption values and format is incorrect
133
Invalid segment operator
134
Segment rules are missing or incorrectly formatted
135
Custom field not found
136
Segment not found
137
Email address can not sent from from/reply-to name fields
138
At least TargetListIDs or TargetSegmentIDs (or both) must be sent
139
One of the provided subscriber lists not found
140
One of the provided segments not found
141
Invalid customer ID
142
Subject is too long. Keep it shorter.
143
Subject contains illegal words or too short
144
Unsubscription link is missing in email content
145
The HTML content of your email campaign contains script, flash or java.
146
Unsubscription link text must be longer than 3 characters
147
Trial period expired. Please upgrade your account to access API.
148
Invalid login credentials.
149
User is not active.
150
Too many signup attempts. Wait for a while.

Suggest Edits

Update Account Info

Update your Sendloop account information

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/account.info.update/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/account.info.update/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/account.info.update/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/account.info.update/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/account.info.update/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/account.info.update/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true
}

Form Data

Username
string

Username for the Sendloop account

NewPassword
string

New password for the Sendloop account

FirstName
string

First name of the account owner

LastName
string

Last name of the account owner

Email
string

Email address of the account owner

TimeZone
string

Time zone of the account owner. The time zone should be one of the Sendloop's available timezones. You can gather a list of timezones via System.TimeZones.Get API call

Street
string

Street of the account owner

City
string

City of the account owner

State
string

State of the account owner

Zip
string

Zip/postal code of the account owner

Country
string

Country of the account owner

CompanyName
string

Name of the account owner company

Website
string

Website URL

Phone
string

Phone number

Fax
string

Fax number

 
Suggest Edits

Get Account Info

Returns your Sendloop account information

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/account.info.get/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/account.info.get/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/account.info.get/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/account.info.get/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/account.info.get/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/account.info.get/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"AccountInfo": {
		"Username": "testuser",
		"Subdomain": "testdomain",
		"MemberSince": "2008-01-15 15:26:52",
		"FirstName": "Test",
		"LastName": "User",
		"Email": "test@test.com",
		"CompanyName": "Acme Inc.",
		"Website": "http:\/\/test.com",
		"Street": "Test address",
		"City": "New York City",
		"State": "NY",
		"Country": "US",
		"Phone": "2121234567",
		"Fax": "2121234567",
		"TimeZone": "Europe\/Istanbul",
		"SignUpIP": "84.29.123.39",
		"LastActivityDateTime": "2011-01-13 11:12:12",
		"LastAccountUpdateDate": "2010-05-11 15:19:09",
		"EmailVerificationStatus": "Confirmed"
	}
}
 
Suggest Edits

Create a List

Creates a new subscriber list in your Sendloop account

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/list.create/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/list.create/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/list.create/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/list.create/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/list.create/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/list.create/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"ListID": 23
}

Form Data

Name
string
required

Name of the new subscriber list

OptInMode
string
required

Set the subscription type. It can be opt-in (no email confirmation will be sent) or double opt-in (confirmation email will be sent - recommended). Pass "Single" or "Double"

 
Suggest Edits

Update a List

Update information of a subscriber list

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/list.update/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/list.update/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/list.update/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/list.update/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/list.update/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/list.update/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true
}

Form Data

ListID
int32
required

ID number of the target subscriber list

Name
string

Name of the subscriber list

OptInMode
string

Set the subscription type. It can be opt-in (no email confirmation will be sent) or double opt-in (confirmation email will be sent - recommended). Pass "Single" or "Double"

 
Suggest Edits

Get a List

Retrieve details of a specific subscriber list

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/list.get/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/list.get/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/list.get/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/list.get/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/list.get/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/list.get/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"List": {
		"ListID": "34",
		"Name": "Test List",
		"OptInMode": "Double",
		"OptOutScope": "This list",
		"CreatedOn": "2008-01-15 15:27:40"
	}
}

Form Data

ListID
int32
required

ID number of the target subscriber list

GetCustomFields
int32
required

If it's set to 1, API call will return the list of created custom fields for the target list. To disable this feature, set it to 0 (zero)

 
Suggest Edits

Get Lists

This API call will return back your subscriber lists. The response will include subscription activity for the last few days as well as total active subscribers for each list.

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/list.getlist/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/list.getlist/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/list.getlist/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/list.getlist/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/list.getlist/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/list.getlist/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Lists": [{
		"ListID": "41",
		"Name": "Test List #1",
		"OptInMode": "Single",
		"OptOutScope": "This list",
		"CreatedOn": "2008-07-03 12:10:32",
		"SubscriptionActivity": {
			"2011-01-06": 0,
			"2011-01-07": 0,
			"2011-01-08": 0,
			"2011-01-09": 0,
			"2011-01-10": 0,
			"2011-01-11": 0,
			"2011-01-12": 0,
			"2011-01-13": 0
		},
		"ActiveSubscribers": "20293"
	}, {
		"ListID": "76",
		"Name": "Test List #2",
		"OptInMode": "Double",
		"OptOutScope": "This list",
		"CreatedOn": "2009-12-23 10:56:33",
		"SubscriptionActivity": {
			"2011-01-06": 0,
			"2011-01-07": 0,
			"2011-01-08": 0,
			"2011-01-09": 0,
			"2011-01-10": 0,
			"2011-01-11": 0,
			"2011-01-12": 0,
			"2011-01-13": 0
		},
		"ActiveSubscribers": "1929"
	}]
}
 
Suggest Edits

Get List Settings

Returns the settings of the target subscriber list including opt-in confirmation email

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/list.settings.get/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/list.settings.get/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/list.settings.get/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/list.settings.get/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/list.settings.get/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/list.settings.get/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"ListSettings": {
		"SubscriptionOptInFromName": "",
		"SubscriptionOptInFromEmail": "",
		"SubscriptionOptInSubject": "",
		"SubscriptionOptInPlainBody": "",
		"SubscriptionFinalAction": "",
		"SubscriptionFinalFromName": "",
		"SubscriptionFinalFromEmail": "",
		"SubscriptionFinalSubject": "",
		"SubscriptionFinalHTMLBody": "",
		"SubscriptionFinalPlainBody": "",
		"WebServiceSubscriptionURL": "",
		"WebServiceUnsubscriptionURL": ""
	}
}

Form Data

ListID
int32
required

ID number of the target subscriber list

 
Suggest Edits

Update List Settings

Updates the subscriber list settings including opt-in confirmation and welcome email contents

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/list.settings.update/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/list.settings.update/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/list.settings.update/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/list.settings.update/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/list.settings.update/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/list.settings.update/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true
}

Form Data

ListID
int32
required

ID number of the target subscriber list

WebServiceSubscriptionURL
string

Webhook URL to post subscriber data once the subscription is confirmed

WebServiceUnsubscriptionURL
string

Webhook URL to post subscriber data once the unsubscription request is processed

SubscriptionOptInFromName
string

Sender name for opt-in confirmation email

SubscriptionOptInFromEmail
string

Sender email address for opt-in confirmation email

SubscriptionOptInSubject
string

Subject of the opt-in confirmation email

SubscriptionOptInPlainBody
string

Text content of the opt-in confirmation email

SubscriptionFinalFromName
string

Welcome email sender name

SubscriptionFinalFromEmail
string

Welcome email sender email address

SubscriptionFinalSubject
string

Subject of the welcome email

SubscriptionFinalHTMLBody
string

HTML email content of the welcome email

SubscriptionFinalPlainBody
string

Text email content of the welcome email

SubscriptionFinalAction
string

What to do once subscription is confirmed: "Nothing" or "Send Email". If "Send Email" is set, Sendloop will send the welcome email once subscription is confirmed

 

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

$.get('http://yoursite.com/test/' + id, function(data) {
    console.log(data);
});
Suggest Edits

List Subscribers

Returns the list of subscribers for a specific list and segment

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/subscriber.browse/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/subscriber.browse/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/subscriber.browse/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/subscriber.browse/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/subscriber.browse/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/subscriber.browse/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Subscribers": [{
		"SubscriberID": "380",
		"EmailAddress": "test1@test.com",
		"BounceType": "Not Bounced",
		"SubscriptionStatus": "Subscribed",
		"SubscriptionDate": "2010-04-05",
		"SubscriptionIP": "127.0.0.1",
		"UnsubscriptionDate": "0000-00-00",
		"UnsubscriptionIP": "0.0.0.0",
		"OptInDate": "0000-00-00",
		"CustomField188": "Test 2",
		"CustomField189": "5086"
	}, {
		"SubscriberID": "128",
		"EmailAddress": "test2@test.com",
		"BounceType": "Not Bounced",
		"SubscriptionStatus": "Subscribed",
		"SubscriptionDate": "2010-04-05",
		"SubscriptionIP": "192.168.1.10",
		"UnsubscriptionDate": "0000-00-00",
		"UnsubscriptionIP": "0.0.0.0",
		"OptInDate": "0000-00-00",
		"CustomField188": "Test User",
		"CustomField189": "5622"
	}
}

Form Data

ListID
int32
required

ID of the target list to get subscribers

SegmentID
int32

ID of the segment in the target list to get subscribers

StartIndex
int32

Page index to get subscribers from. Each call returns 100 records. Default is 0

 
Suggest Edits

Get a Subscriber

Returns the subscriber information

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/subscriber.get/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/subscriber.get/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/subscriber.get/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/subscriber.get/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/subscriber.get/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/subscriber.get/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Subscriber": {
		"SubscriberID": "32",
		"EmailAddress": "test@test.com",
		"BounceType": "Not Bounced",
		"SubscriptionStatus": "Subscribed",
		"SubscriptionDate": "2008-08-23",
		"SubscriptionIP": "127.0.0.1",
		"UnsubscriptionDate": "0000-00-00",
		"UnsubscriptionIP": "0.0.0.0",
		"OptInDate": "0000-00-00",
		"Score": "1",
		"ScoreLastUpdate": "2011-03-17 16:37:09"
	}
}

Form Data

ListID
int32
required

ID of the target list to get subscribers

SubscriberID
int32

ID number of the target subscriber

EmailAddress
string

Email address of the subscriber

 

Heads up! You can pass either one of the SubscriberID or EmailAddress fields to get the subscriber information

Suggest Edits

Import Subscribers

Import multiple email addresses to the target subscriber list

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/subscriber.import/json
curl http://{your-sub-domain}.sendloop.com/api/v3/Subscriber.Import/json \
	-d "APIKey={api-key-here}" \
	-d "ListID=158" \
	-d "Subscribers[0][EmailAddress]=test11@test.com" \
	-d "Subscribers[0][CustomField330]=Test11" \
	-d "Subscribers[1][EmailAddress]=test22@test.com" \
	-d "Subscribers[1][CustomField330]=Test22" \
	-d "Subscribers[2][EmailAddress]=test33@test.com" \
	-d "Subscribers[2][CustomField330]=Test33" \
	-d "Subscribers[3][EmailAddress]=test44@test.com" \
	-d "Subscribers[3][CustomField330]=Test44"
A binary file was returned
{
	"Success": true,
	"TotalImported": 4,
	"TotalDuplicate": 0,
	"TotalFailed": 0
}

Form Data

ListID
int32
required

ID of the target list to import subscribers

Subscribers[]
string

List of subscribers with their email address and any other available custom field information. This data should be passed in array format

 
Suggest Edits

Search Subscribers

Makes a search on your subscriber lists for a specific email address

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/subscriber.search/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/subscriber.search/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/subscriber.search/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/subscriber.search/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/subscriber.search/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/subscriber.search/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"SearchResults": [{
		"ListID": 81,
		"ListName": "Test List",
		"Subscribers": {
			"173": "test@test.com"
		}
	}, {
		"ListID": 75,
		"ListName": "Test List #2",
		"Subscribers": {
			"32": "test@hotmail.com"
		}
	}
}

Form Data

EmailAddress
string
required

Enter the exact or partial email address you wish to make a search for

 
Suggest Edits

Subscribe an Email Address

Subscribe an email address to one of your lists

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/subscriber.subscribe/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/subscriber.subscribe/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/subscriber.subscribe/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/subscriber.subscribe/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/subscriber.subscribe/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/subscriber.subscribe/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"SubscriberID": "27",
	"SubscriptionStatus": "Confirmation Pending",
	"RedirectURL": "http:\/\/{your-sub-domain}.sendloop-1.com\/optin_success.php"
}

Form Data

EmailAddress
string
required

The email address which is going to be subscribed

ListID
int32
required

ID of the target subscriber list

SubscriptionIP
string
required

IP address of the subscriber

Fields
string

If you are going to pass custom fields such as name or age, pass them in array here. Example: Fields[CustomFieldX]=John. X represents the ID number of the corresponding custom field.

 
Suggest Edits

Unsubscribe a Subscriber

Unsubscribe an email address from your lists

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/subscriber.unsubscribe/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/subscriber.unsubscribe/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/subscriber.unsubscribe/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/subscriber.unsubscribe/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/subscriber.unsubscribe/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/subscriber.unsubscribe/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true
}

Form Data

EmailAddress
string
required

The email address which is going to be unsubscribed

 
Suggest Edits

Update a Subscriber

Update subscriber information

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/subscriber.update/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/subscriber.update/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/subscriber.update/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/subscriber.update/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/subscriber.update/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/subscriber.update/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true
}

Form Data

ListID
int32
required

ID of the target list to get subscribers

SubscriberID
int32

ID number of the target subscriber

EmailAddress
string

Email address of the subscriber

Fields
string

Custom fields to be updated. This parameter should be set as array. Example: Fields[CustomField23]=value

 
Suggest Edits

Get Suppression List

Returns list of suppression entries

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/suppression.list.getlist/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/suppression.list.getlist/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/suppression.list.getlist/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/suppression.list.getlist/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/suppression.list.getlist/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/suppression.list.getlist/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"SuppressionList": [{
		"SuppressionID": "2",
		"Type": "FBL Report",
		"EmailAddress": "test@yahoo.com"
	}, {
		"SuppressionID": "3",
		"Type": "FBL Report",
		"EmailAddress": "test2yahoo.com"
	}, {
		"SuppressionID": "18",
		"Type": "FBL Report",
		"EmailAddress": "test3@yahoo.com.au"
	}, {
		"SuppressionID": "19",
		"Type": "FBL Report",
		"EmailAddress": "test4@yahoo.fr"
	}]
}

Form Data

ListID
int32
required

ID number of the target list. If you set this to 0, it will return all globally set suppression list entries

 
Suggest Edits

Get Details of Suppression List Entry

Returns the suppression list entry of a specific email address

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/suppression.list.get/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/suppression.list.get/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/suppression.list.get/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/suppression.list.get/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/suppression.list.get/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/suppression.list.get/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"SuppressionItem": [{
		"SuppressionID": "2",
		"Type": "FBL Report",
		"ListID": "26"
	}]
}

Form Data

EmailAddress
string
required

Email address to search

 
Suggest Edits

Add to Suppression List

Add email addresses to the suppression list

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/suppression.list.add/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/suppression.list.add/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/suppression.list.add/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/suppression.list.add/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/suppression.list.add/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/suppression.list.add/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"NewSuppressionID": 820
}

Form Data

ListID
int32
required

Target list ID. Set this parameter zero (0) to suppress globally on your account

EmailAddress
string
required

Email address to search

 
Suggest Edits

Create a Campaign

Creates a new email campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3
curl --request POST \
  --url http://app.sendloop.com/api/v3
var request = require("request");

var options = { method: 'POST', url: 'http://app.sendloop.com/api/v3' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"CampaignID": 456,
	"Success": true
}

Form Data

CampaignName
string
required

Name of your campaign

FromName
string
required

The name which will in "from" email header

FromEmail
string
required

Sender email address

ReplyToName
string
required

The name which will shown in "reply-to" email header

ReplyToEmail
string
required

Email address to receive replies

TargetListIDs[]
string

ID numbers of recipient lists. This parameter should be sent in array format

TargetSegmentIDs[]
string

ID numbers of recipient segments. This parameter should be sent in array format

GoogleAnalyticsDomainsToTrack
string

List of domains to track in your Google Analytics. This parameter should be sent in array format

CustomerIDs[]
string

ID numbers of customer accounts you want to give access for reporting. This parameter should be sent in array format

Subject
string
required

Subject of your email campaign

PlainContent
string

Text content of your email campaign

HTMLContent
string

HTML content of your email campaign

 

Heads up! Notice: At least one of PlainContent or HTMLContent parameter must be sent. Notice: At least one of the TargetListIDs or TargetSegmentIDs must be sent.

Suggest Edits

Update details of a Campaign

Updates the preferences of the target campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/campaign.update/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/campaign.update/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/campaign.update/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/campaign.update/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/campaign.update/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/campaign.update/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
  "Success": true
}

Form Data

CampaignID
int32
required

ID number of the target campaign

CampaignName
string

Name of your campaign

FromName
string

The name which will in "from" email header

FromEmail
string

Sender email address

ReplyToName
string

The name which will shown in "reply-to" email header

ReplyToEmail
string

Email address to receive replies

TargetListIDs[]
string

ID numbers of recipient lists. This parameter should be sent in array format

TargetSegmentIDs[]
string

ID numbers of recipient segments. This parameter should be sent in array format

CustomerIDs
string

ID numbers of customer accounts you want to give access for reporting. This parameter should be sent in array format

Subject
string

Subject of your email campaign

 
Suggest Edits

Send a Campaign

Set a ready campaign to be sent immediately or in the future

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/campaign.send/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/campaign.send/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/campaign.send/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/campaign.send/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/campaign.send/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/campaign.send/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true
}

Form Data

CampaignID
int32
required

ID number of the target campaign

SendDate
string
required

Date to send the campaign. Date should be formatted as YYYY-MM-DD HH:ii:SS. If you want to send the campaign now, simply set this parameter to "NOW"

 

Notice: The campaign will be updated to Draft status.

Suggest Edits

Pause a Campaign

Pause a sending campaign. It can be resumed at a later time.

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/campaign.pause/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/campaign.pause/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/campaign.pause/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/campaign.pause/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/campaign.pause/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/campaign.pause/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true
}

Form Data

CampaignID
int32
required

ID number of the target campaign

 
Suggest Edits

Resume Sending of a Campaign

Resume a paused campaign. It can be paused at a later time.

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/campaign.resume/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/campaign.resume/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/campaign.resume/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/campaign.resume/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/campaign.resume/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/campaign.resume/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true
}

Form Data

CampaignID
int32
required

ID number of the target campaign

 
Suggest Edits

Cancel Schedule of a Campaign

Cancel a campaign's schedule

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/campaign.cancelschedule/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/campaign.cancelschedule/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/campaign.cancelschedule/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/campaign.cancelschedule/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/campaign.cancelschedule/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/campaign.cancelschedule/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true
}

Form Data

CampaignID
int32
required

ID number of the target campaign

 

Notice: The SendDate parameter should be set by considering the time-zone set in your Sendloop account. Please be sure that you have set the correct time-zone.

Suggest Edits

Get Campaign List By Status

Returns campaigns based on status

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/campaign.getlistbystatus/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/campaign.getlistbystatus/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/campaign.getlistbystatus/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/campaign.getlistbystatus/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/campaign.getlistbystatus/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/campaign.getlistbystatus/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Campaigns": [{....},
	{....},
	{....}]
}

Form Data

CampaignStatus
string
required

Set the target campaign status. Available values: "Draft", "Scheduled", "Outbox", "Sent"

Limit
int32

Number of records to return

Page
int32

Set the page to return

OrderByField
string

Target field to sort rows. Available values: "CampaignID", "CampaignName", "SendTime"

OrderBySort
string

Sorting type. Available values: "ASC" for ascending, "DESC" for descending

TargetListID
int32

If you provide a list ID, only campaigns sent to the target list will be returned

 
Suggest Edits

Get Campaign List

Returns the list of email campaigns you have in your Sendloop account

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/campaign.getlist/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/campaign.getlist/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/campaign.getlist/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/campaign.getlist/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/campaign.getlist/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/campaign.getlist/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Campaigns": [{
		"CampaignID": "426",
		"CampaignStatus": "Ready",
		"CampaignName": "Test Campaign #1",
		"FromName": "Sender Name",
		"FromEmail": "test@test.com",
		"ReplyToName": "Reply-To Name",
		"ReplyToEmail": "test@test.com",
		"FetchURL": "",
		"Subject": "Test subject",
		"PlainContent": "xxxxxxxx",
		"HTMLContent": "xxxxxxx",
		"ScheduleType": "Not Scheduled",
		"SendDate": "2011-05-31",
		"SendTime": "14:00:00",
		"SendTimeZone": "",
		"TotalRecipients": "0",
		"TotalSent": "0",
		"TotalFailed": "0",
		"TotalOpens": "0",
		"UniqueOpens": "0",
		"TotalClicks": "0",
		"UniqueClicks": "0",
		"TotalForwards": "0",
		"UniqueForwards": "0",
		"TotalViewsOnBrowser": "0",
		"UniqueViewsOnBrowser": "0",
		"TotalUnsubscriptions": "0",
		"TotalHardBounces": "0",
		"TotalSoftBounces": "0",
		"GoogleAnalyticsEnable": "Enabled",
		"GoogleAnalyticsDomains": "",
		"PublicTinyContentLink": ""
	}, {
		"CampaignID": "427",
		"CampaignStatus": "Ready",
		"CampaignName": "Test Campaign #2",
		"FromName": "Sender Name",
		"FromEmail": "test@test.com",
		"ReplyToName": "Reply-To Name",
		"ReplyToEmail": "test@test.com",
		"FetchURL": "",
		"Subject": "Test subject",
		"PlainContent": "xxxxxxxxxx",
		"HTMLContent": "xxxxxxxxx",
		"ScheduleType": "Not Scheduled",
		"SendDate": "2011-05-31",
		"SendTime": "14:00:00",
		"SendTimeZone": "",
		"TotalRecipients": "0",
		"TotalSent": "0",
		"TotalFailed": "0",
		"TotalOpens": "0",
		"UniqueOpens": "0",
		"TotalClicks": "0",
		"UniqueClicks": "0",
		"TotalForwards": "0",
		"UniqueForwards": "0",
		"TotalViewsOnBrowser": "0",
		"UniqueViewsOnBrowser": "0",
		"TotalUnsubscriptions": "0",
		"TotalHardBounces": "0",
		"TotalSoftBounces": "0",
		"GoogleAnalyticsEnable": "Enabled",
		"GoogleAnalyticsDomains": "",
		"PublicTinyContentLink": ""
	}]
}

Form Data

IgnoreDrafts
int32

Set this field to 1 if you want to exclude drafts. Otherwise, set to zero (0).

IgnoreSending
int32

Set this field to 1 if you want to exclude currently sending campaigns. Otherwise, set to zero (0).

IgnorePaused
int32

Set this field to 1 if you want to exclude paused campaigns. Otherwise, set to zero (0).

IgnoreSent
int32

Set this field to 1 if you want to exclude sent campaigns. Otherwise, set to zero (0).

IgnoreFailed
int32

Set this field to 1 if you want to exclude failed campaigns. Otherwise, set to zero (0).

IgnoreApproval
int32

Set this field to 1 if you want to exclude approval pending campaigns. Otherwise, set to zero (0).

 
Suggest Edits

Get a Campaign

Returns the settings of the target email campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/campaign.get/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/campaign.get/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/campaign.get/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/campaign.get/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/campaign.get/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/campaign.get/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Campaign": {
		"CampaignID": "428",
		"CampaignStatus": "Draft",
		"CampaignName": "Test Campaign",
		"FromName": "Sender Name",
		"FromEmail": "test@test.com",
		"ReplyToName": "Reply-To Name",
		"ReplyToEmail": "test2@test.com",
		"FetchURL": "",
		"Subject": "",
		"PlainContent": "",
		"HTMLContent": "",
		"ScheduleType": "Not Scheduled",
		"SendDate": "0000-00-00",
		"SendTime": "00:00:00",
		"SendTimeZone": "",
		"TotalRecipients": "0",
		"TotalSent": "0",
		"TotalFailed": "0",
		"TotalOpens": "0",
		"UniqueOpens": "0",
		"TotalClicks": "0",
		"UniqueClicks": "0",
		"TotalForwards": "0",
		"UniqueForwards": "0",
		"TotalViewsOnBrowser": "0",
		"UniqueViewsOnBrowser": "0",
		"TotalUnsubscriptions": "0",
		"TotalHardBounces": "0",
		"TotalSoftBounces": "0",
		"GoogleAnalyticsEnable": "Disabled",
		"GoogleAnalyticsDomains": "",
		"PublicTinyContentLink": ""
	}
}

Form Data

CampaignID
int32
required

ID number of the target campaign

 
Suggest Edits

Delete a Campaign

Delete the target campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/campaign.delete/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/campaign.delete/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/campaign.delete/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/campaign.delete/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/campaign.delete/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/campaign.delete/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true
}

Form Data

CampaignID
int32
required

ID number of the target campaign

 
Suggest Edits

Export Unsubscriptions

Export list of unsubscribed email addresses

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/export.unsubscriptions/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/export.unsubscriptions/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/export.unsubscriptions/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/export.unsubscriptions/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/export.unsubscriptions/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/export.unsubscriptions/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Unsubscriptions": [
    {
			"CampaignID": "108",
			"ListID": "23",
			"SubscriberID": "14306",
			"EmailAddress": "test1@test.com",
			"UnsubscriptionDate": "2008-02-09 16:44:17",
			"UnsubscriptionIP:"127.0.0.1"
    },
    {
      "CampaignID": "108",
      "ListID": "23",
      "SubscriberID": "14362",
      "EmailAddress": "test2@test.com",
      "UnsubscriptionDate": "2008-02-09 16:45:09",
      "UnsubscriptionIP: "127.0.0.1"
		}
  ]
}

Form Data

ListID
int32

If ListID is provided, unsubscriptions of the target list is returned. If this parameter is not set, all unsubscribed email addresses will be returned

 
Suggest Edits

Export Suppression List

Export your account suppression list

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/export.suppressionlist/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/export.suppressionlist/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/export.suppressionlist/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/export.suppressionlist/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/export.suppressionlist/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/export.suppressionlist/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"SuppressionList": [
		["test@test.com", "FBL Report"],
		["test2@test.com", "FBL Report"]
	]
}
 
Suggest Edits

Export SPAM Complaints

Export your account spam complaints

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/export.spamcomplaints/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/export.spamcomplaints/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/export.spamcomplaints/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/export.spamcomplaints/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/export.spamcomplaints/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/export.spamcomplaints/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"SpamComplaints": [
		["test@test.com", "2010-11-10 10:33:20"],
		["test1@test.com", "2010-12-10 10:33:20"]
	]
}
 
Suggest Edits

Export Bounces

Export hard or soft bounced email addresses

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/export.bounces/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/export.bounces/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/export.bounces/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/export.bounces/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/export.bounces/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/export.bounces/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"BounceData": [{
		"CampaignID": "108",
		"ListID": "23",
		"SubscriberID": "14115",
		"EmailAddress": "test1@test.com",
		"BounceType": "Hard",
		"DetectionDate": "2008-02-09 16:42:27"
	}, {
		"CampaignID": "108",
		"ListID": "23",
		"SubscriberID": "14207",
		"EmailAddress": "test2@test.com",
		"BounceType": "Hard",
		"DetectionDate": "2008-02-09 16:42:44"
	}]
}

Form Data

BounceType
string
required

This parameter can be "hard" or "soft". Set the bounce type for your export data

 
Suggest Edits

Get Report for a List

Returns overall statistics of the target list

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/report.list.overall/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/report.list.overall/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/report.list.overall/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/report.list.overall/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/report.list.overall/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/report.list.overall/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Statistics": {
		"OpenPerformance": "19",
		"OpenAvg": "20",
		"OpenPerformanceRate": -1,
		"LinkPerformance": "4",
		"LinkAvg": "5",
		"LinkPerformanceRate": -1,
		"HighestOpenRateDay": "Tuesday",
		"HighestLinkRateDay": "Tuesday",
		"TotalSPAMComplaints": "60"
	}
}

Form Data

ListID
int32
required

Target subscriber list ID

 
Suggest Edits

Get Web Browser View Report of a Campaign

Returns web browser view statistics of the target campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/report.campaign.webbrowserviews/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/report.campaign.webbrowserviews/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/report.campaign.webbrowserviews/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/report.campaign.webbrowserviews/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/report.campaign.webbrowserviews/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/report.campaign.webbrowserviews/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Statistics": {
		"2008-02-10": {
			"Total": "20",
			"Unique": "18"
		},
		"2008-02-11": {
			"Total": "13",
			"Unique": "12"
		},
		"2008-02-12": {
			"Total": "3",
			"Unique": "3"
		},
		"2008-02-18": {
			"Total": "1",
			"Unique": "1"
		},
		"2008-02-19": {
			"Total": "1",
			"Unique": "1"
		},
		"2008-02-25": {
			"Total": "1",
			"Unique": "1"
		},
		"2008-02-28": {
			"Total": "2",
			"Unique": "1"
		},
		"2008-05-16": {
			"Total": "1",
			"Unique": "1"
		},
		"2008-07-15": {
			"Total": "1",
			"Unique": "1"
		},
		"2008-09-15": {
			"Total": "1",
			"Unique": "1"
		},
		"2009-01-05": {
			"Total": "1",
			"Unique": "1"
		},
		"2009-06-05": {
			"Total": "1",
			"Unique": "1"
		},
		"2009-06-15": {
			"Total": "1",
			"Unique": "1"
		},
		"2010-10-26": {
			"Total": "1",
			"Unique": "1"
		}
	}
}

Form Data

CampaignID
int32
required

Target campaign ID

 
Suggest Edits

Get Unsubscription Report of a Campaign

Returns unsubscription statistics of the target campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/report.campaign.unsubscriptions/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/report.campaign.unsubscriptions/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/report.campaign.unsubscriptions/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/report.campaign.unsubscriptions/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/report.campaign.unsubscriptions/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/report.campaign.unsubscriptions/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Statistics": {
		"2011-04-15": {
			"Unique": "1"
		}
	}
}

Form Data

CampaignID
int32
required

Target campaign ID

 
Suggest Edits

Get SPAM Complaint Report of a Campaign

Returns SPAM complaint statistics of the target campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/report.campaign.spamcomplaints/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/report.campaign.spamcomplaints/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/report.campaign.spamcomplaints/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/report.campaign.spamcomplaints/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/report.campaign.spamcomplaints/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/report.campaign.spamcomplaints/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
Try the API to see results

Form Data

CampaignID
int32
required

Target campaign ID

 

This API command returns the first 20 days from the campaign delivery date

Suggest Edits

Get Report for a Campaign

Returns overall statistics of the target campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/report.campaign.overall/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/report.campaign.overall/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/report.campaign.overall/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/report.campaign.overall/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/report.campaign.overall/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/report.campaign.overall/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Statistics": {
		"HighestOpenRateDay": "Thu, 14 Apr '11",
		"HighestLinkRateDay": "Thu, 14 Apr '11",
		"TotalRecipients": "204",
		"TotalDelivered": "190",
		"TotalDeliveredRatio": "93.14",
		"UniqueOpens": "53",
		"UniqueOpensRatio": "27.89",
		"UniqueClicks": "4",
		"UniqueClicksRatio": "7.55",
		"LinkAvg": "4.72",
		"OpenAvg": "20.11",
		"OpenPerformanceRate": "7.79",
		"LinkPerformanceRate": "2.83",
		"DeliveredAvg": "92.93",
		"DeliveredRate": "0.21",
		"TotalSPAMComplaints": "0"
	}
}

Form Data

CampaignID
int32
required

Target campaign ID

 
Suggest Edits

Get Opens Report of a Campaign

Returns email open statistics of the target campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/report.campaign.opens/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/report.campaign.opens/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/report.campaign.opens/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/report.campaign.opens/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/report.campaign.opens/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/report.campaign.opens/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Statistics": {
		"2011-04-15": {
			"Total": "13",
			"Unique": "6"
		},
		"2011-04-16": {
			"Total": "2",
			"Unique": "1"
		},
		"2011-04-17": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-04-18": {
			"Total": "2",
			"Unique": "2"
		},
		"2011-04-21": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-04-23": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-04-26": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-04-28": {
			"Total": "2",
			"Unique": "1"
		},
		"2011-04-29": {
			"Total": "10",
			"Unique": "2"
		},
		"2011-04-30": {
			"Total": "4",
			"Unique": "1"
		},
		"2011-05-03": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-05-10": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-05-12": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-05-18": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-05-20": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-05-25": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-05-27": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-05-28": {
			"Total": "2",
			"Unique": "1"
		},
		"2011-06-06": {
			"Total": "1",
			"Unique": "1"
		},
		"2011-06-15": {
			"Total": "1",
			"Unique": "1"
		}
	}
}

Form Data

CampaignID
int32
required

Target campaign ID

 

This API command returns the first 20 days from the campaign delivery date

Suggest Edits

Get Open Locations of a Campaign

Returns email open location statistics of the target campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/report.campaign.openlocations/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/report.campaign.openlocations/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/report.campaign.openlocations/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/report.campaign.openlocations/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/report.campaign.openlocations/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/report.campaign.openlocations/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Statistics": {
		"PL": {
			"Janikowo": "16",
			"Slupca": "2",
			"Wrzesnia": "1"
		},
		"ES": {
			"Madrid": "15"
		},
		"GB": {
			"Gateshead": "8",
			"Letchworth": "3",
			"Bristol": "3",
			"Chatham": "2",
			"Redhill": "1",
			"Milton Keynes": "1"
		},
		"DE": {
			"N\/A": "5",
			"Aue": "1",
			"Troisdorf": "1"
		},
		"PK": {
			"Karachi": "5"
		},
		"NL": {
			"Schiedam": "4",
			"Rotterdam": "1"
		},
		"CH": {
			null: "4",
			"Regensdorf": "2",
			"Aesch": "1"
		},
		"US": {
			"Elizabethtown": "3",
			"Washington": "3",
			"Rancho Cucamonga": "3",
			"Fernandina Beach": "2",
			"N\/A": "2",
			"Aurora": "1",
			"Lancaster": "1",
			"Sykesville": "1",
			"Salt Lake City": "1",
			"San Antonio": "1",
			"North Hollywood": "1"
		},
		"ZA": {
			"Alberton": "3",
			"Johannesburg": "1"
		},
		"RO": {
			"Cluj-napoca": "2",
			"Bucharest": "1"
		},
		"BR": {
			"Rio De Janeiro": "2"
		},
		"AU": {
			"Sydney": "2"
		},
		"CN": {
			"N\/A": "2",
			"Beijing": "1"
		},
		"CA": {
			"Brampton": "2",
			"Montreal": "1",
			"Vancouver": "1",
			"Toronto": "1"
		},
		"FR": {
			"Paris": "2"
		},
		"HU": {
			null: "2",
			null: "2",
			null: "1",
			"Budapest": "1"
		},
		"VN": {
			"Hanoi": "2"
		},
		"TR": {
			"Istanbul": "1"
		},
		"IT": {
			"Imola": "1",
			"Antegnate": "1"
		},
		"BG": {
			"Plovdiv": "1"
		},
		"AT": {
			"Spitz": "1",
			"N\/A": "1"
		},
		"BE": {
			"Puurs": "1",
			"Berchem": "1"
		},
		"SG": {
			"Singapore": "1"
		},
		"CR": {
			null: "1"
		}
	}
}

Form Data

CampaignID
int32
required

Target campaign ID

 

This API command returns the first 20 days from the campaign delivery date

Suggest Edits

Get Forwards Report of a Campaign

Returns email forward statistics of the target campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/report.campaign.forwards/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/report.campaign.forwards/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/report.campaign.forwards/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/report.campaign.forwards/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/report.campaign.forwards/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/report.campaign.forwards/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Statistics": {
		"2008-08-02": {
			"Total": "2",
			"Unique": "1"
		}
	}
}

Form Data

CampaignID
int32
required

Target campaign ID

 

This API command returns the first 20 days from the campaign delivery date

Suggest Edits

Get Email Clients Report of a Campaign

Returns email client usage statistics of the target campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/report.campaign.emailclients/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/report.campaign.emailclients/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/report.campaign.emailclients/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/report.campaign.emailclients/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/report.campaign.emailclients/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/report.campaign.emailclients/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Statistics": {
		"Other": {
			"": "73"
		},
		"Outlook": {
			"2007": "33",
			"2010": "6"
		},
		"Gmail": {
			"": "7"
		},
		"iPhone": {
			"4_3_1": "2",
			"3_1_3": "1",
			"4_1": "1",
			"4_0_1": "1"
		},
		"Thunderbird": {
			"3.1.9": "2"
		},
		"iPad": {
			"4_2_1": "2",
			"4_3_1": "1",
			"3_2_1": "1"
		},
		"Opera": {
			"9.8": "1"
		}
	}
}

Form Data

CampaignID
int32
required

Target campaign ID

 

This API command returns the first 20 days from the campaign delivery date

Suggest Edits

Get Bounces Report of a Campaign

Returns bounce detection statistics of the target campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/report.campaign.bounces/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/report.campaign.bounces/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/report.campaign.bounces/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/report.campaign.bounces/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/report.campaign.bounces/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/report.campaign.bounces/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Statistics": {
		"Hard": 0,
		"Soft": "5",
		"Not Bounced": 0
	}
}

Form Data

CampaignID
int32
required

Target campaign ID

 

This API command returns the first 20 days from the campaign delivery date

Suggest Edits

Tracking a Person

You can track a new person or update an existing once with this API call.

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v4/person.json
curl --request POST \
  --url http://app.sendloop.com/api/v4/person.json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v4/person.json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v4/person.json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v4/person.json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v4/person.json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
  "Status":"Okay"
}

Form Data

user_id
string
required

Identifier of the user in your system

email
string
required

Email address of the user

extrainfo
string

Any extra information you want to pass in

 
Suggest Edits

Retrieving Person's Profile

 

Header Auth

 Authentication is required for this endpoint.
gethttp://app.sendloop.com/api/v3/person.json
curl --request GET \
  --url 'http://app.sendloop.com/api/v3/person.json?user_id=user_id'
var request = require("request");

var options = { method: 'GET',
  url: 'http://app.sendloop.com/api/v3/person.json',
  qs: { user_id: 'user_id' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/person.json?user_id=user_id")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "http://app.sendloop.com/api/v3/person.json?user_id=user_id");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/person.json"

querystring = {"user_id":"user_id"}

response = requests.request("GET", url, params=querystring)

print(response.text)
A binary file was returned
{
	"Status": "Okay",
	"Person": {
		"User ID": "0",
		"Email Address": "test@test.com",
		"Entry Date": "2013-07-26 00:03:14",
		"Last Seen Date": "2013-07-26 00:46:47",
		"IP Address": "10.0.0.1",
		"City": "",
		"Country": "",
		"Sessions": "1",
		"signedup_date": "2008-01-15 15:26:52",
		"name": "Test User",
		"plan": "plan_premium"
	}
}

Query Params

user_id
string
required

Identifer of the user in your system

 
Suggest Edits

Deleting a Person's Profile

To remove a person data from Sendloop Engage, simply use this API call.

 

Header Auth

 Authentication is required for this endpoint.
gethttp://app.sendloop.com/api/v3/person.json/?user_id
curl --request GET \
  --url 'http://app.sendloop.com/api/v3/person.json/?user_id='
var request = require("request");

var options = { method: 'GET',
  url: 'http://app.sendloop.com/api/v3/person.json/',
  qs: { user_id: '' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/person.json/?user_id=")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "http://app.sendloop.com/api/v3/person.json/?user_id=");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/person.json/"

querystring = {"user_id":""}

response = requests.request("GET", url, params=querystring)

print(response.text)
A binary file was returned
{
  "Status":"Okay"
}

Query Params

user_id
string
required

Identifer of the user in your system

 
Suggest Edits

Get Unsubscriptions Data of a Campaign

Retrieve the list of unsubscriptions for a campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/data.campaign.unsubscriptions/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/data.campaign.unsubscriptions/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/data.campaign.unsubscriptions/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/data.campaign.unsubscriptions/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/data.campaign.unsubscriptions/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/data.campaign.unsubscriptions/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Data": [{
		"SubscriberID": "60",
		"ListID": "81",
		"UnsubscriptionDate": "2011-01-01 20:30:15",
		"Channel": ""
	}, {
		"SubscriberID": "408",
		"ListID": "81",
		"UnsubscriptionDate": "2010-12-13 17:41:58",
		"Channel": ""
	}, {
		"SubscriberID": "394",
		"ListID": "81",
		"UnsubscriptionDate": "2010-12-13 15:59:06",
		"Channel": ""
	}, {
		"SubscriberID": "171",
		"ListID": "81",
		"UnsubscriptionDate": "2010-12-13 15:52:29",
		"Channel": ""
	}]
}

Form Data

CampaignID
int32
required

ID number of the target campaign

Limit
int32

Define the number of records to return. The default value is 10. Maximum is 50.

Page
int32

The page you wish to retrieve. The default value is 1.

 
Suggest Edits

Get Open Locations Data of a Campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/data.campaign.openlocations/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/data.campaign.openlocations/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/data.campaign.openlocations/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/data.campaign.openlocations/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/data.campaign.openlocations/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/data.campaign.openlocations/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Data": [{
		"SubscriberID": "244",
		"DetectionDate": "2011-05-20 15:30:54",
		"CountryCode": "AR",
		"City": "Buenos Aires",
		"Latitude": "-34.5875",
		"Longtitude": "-58.6725",
		"ContentCode": "SA"
	}, {
		"SubscriberID": "46",
		"DetectionDate": "2011-05-18 03:34:03",
		"CountryCode": "MX",
		"City": "Monterrey",
		"Latitude": "25.6667",
		"Longtitude": "-100.3167",
		"ContentCode": "NA"
	}, {
		"SubscriberID": "334",
		"DetectionDate": "2011-05-17 18:45:36",
		"CountryCode": "AR",
		"City": "Buenos Aires",
		"Latitude": "-34.5875",
		"Longtitude": "-58.6725",
		"ContentCode": "SA"
	}, {
		"SubscriberID": "78",
		"DetectionDate": "2011-05-14 10:24:17",
		"CountryCode": "ZA",
		"City": "Cape Town",
		"Latitude": "-33.9167",
		"Longtitude": "18.4167",
		"ContentCode": "AF"
	}, {
		"SubscriberID": "334",
		"DetectionDate": "2011-05-09 20:49:38",
		"CountryCode": "AR",
		"City": "Buenos Aires",
		"Latitude": "-34.5875",
		"Longtitude": "-58.6725",
		"ContentCode": "SA"
	}]
}

Form Data

CampaignID
int32
required

ID number of the target campaign

Limit
int32

Define the number of records to return. The default value is 10. Maximum is 50.

Page
int32

The page you wish to retrieve. The default value is 1.

 
Suggest Edits

Get Forwards Data of a Campaign

Retrieve the list of email forwards for a campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/data.campaign.forwards/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/data.campaign.forwards/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/data.campaign.forwards/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/data.campaign.forwards/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/data.campaign.forwards/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/data.campaign.forwards/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Data": [{
		"SubscriberID": "14097",
		"ListID": "23",
		"ForwardDate": "2008-02-09 17:39:51"
	}, {
		"SubscriberID": "14097",
		"ListID": "23",
		"ForwardDate": "2008-02-09 16:41:18"
	}]
}

Form Data

CampaignID
int32
required

ID number of the target campaign

Limit
int32

Define the number of records to return. The default value is 10. Maximum is 50.

Page
int32

The page you wish to retrieve. The default value is 1.

 
Suggest Edits

Get Browser Views Data of a Campaign

Retrieve the list of browser views for a campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/data.campaign.browserviews/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/data.campaign.browserviews/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/data.campaign.browserviews/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/data.campaign.browserviews/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/data.campaign.browserviews/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/data.campaign.browserviews/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Data": [{
		"SubscriberID": "21790",
		"ListID": "23",
		"ViewDate": "2010-10-26 01:41:39"
	}, {
		"SubscriberID": "15713",
		"ListID": "23",
		"ViewDate": "2009-06-15 17:31:25"
	}, {
		"SubscriberID": "14732",
		"ListID": "23",
		"ViewDate": "2009-06-05 09:09:43"
	}, {
		"SubscriberID": "18177",
		"ListID": "23",
		"ViewDate": "2009-01-05 23:19:00"
	}, {
		"SubscriberID": "17170",
		"ListID": "23",
		"ViewDate": "2008-09-15 15:00:17"
	}]
}

Form Data

CampaignID
int32
required

ID number of the target campaign

Limit
int32

Define the number of records to return. The default value is 10. Maximum is 50.

Page
int32

The page you wish to retrieve. The default value is 1.

 
Suggest Edits

Get Bounces Data of a Campaign

Retrieve the list of bounce detections for a campaign

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/data.campaign.bounces/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/data.campaign.bounces/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/data.campaign.bounces/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/data.campaign.bounces/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/data.campaign.bounces/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/data.campaign.bounces/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Data": [{
		"SubscriberID": "536",
		"ListID": "81",
		"BounceType": "Hard",
		"BounceDate": "2010-12-17 17:42:02"
	}, {
		"SubscriberID": "628",
		"ListID": "81",
		"BounceType": "Hard",
		"BounceDate": "2010-12-14 16:00:02"
	}, {
		"SubscriberID": "583",
		"ListID": "81",
		"BounceType": "Hard",
		"BounceDate": "2010-12-14 15:56:01"
	}, {
		"SubscriberID": "386",
		"ListID": "81",
		"BounceType": "Hard",
		"BounceDate": "2010-12-14 15:56:01"
	}, {
		"SubscriberID": "170",
		"ListID": "81",
		"BounceType": "Hard",
		"BounceDate": "2010-12-14 15:56:01"
	}]
}

Form Data

CampaignID
int32
required

ID number of the target campaign

Limit
int32

Define the number of records to return. The default value is 10. Maximum is 50.

Page
int32

The page you wish to retrieve. The default value is 1.

 
Suggest Edits

Get Available Timezones

Returns the list of time zones defined on the system

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/system.timezones.Get/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/system.timezones.Get/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/system.timezones.Get/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/system.timezones.Get/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/system.timezones.Get/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/system.timezones.Get/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
  "Success": true,
  "Countries": [
    "Africa/Abidjan",
    "Africa/Accra",
    "Africa/Addis_Ababa",
    "Africa/Algiers",
		....
    "US/Pacific-New",
    "US/Samoa"
  ]
}
 
Suggest Edits

Get System Date

Returns the current date and time zone set on Sendloop servers

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/system.systemdate.get/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/system.systemdate.get/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/system.systemdate.get/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/system.systemdate.get/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/system.systemdate.get/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/system.systemdate.get/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"SystemDate": "2011-01-13 13:15:15",
	"SystemTimeZone": "Europe\/Helsinki"
}
 
Suggest Edits

Get System Countries

Returns the list of countries defined on the system

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/system.countries.get/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/system.countries.get/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/system.countries.get/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/system.countries.get/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/system.countries.get/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/system.countries.get/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"Countries": {
		"AD": "Andorra",
		"AE": "United Arab Emirates",
		"AF": "Afghanistan",
		"AG": "Antigua & Barbuda",
		"AI": "Anguilla",
		"AL": "Albania",
		"AM": "Armenia",
		"AN": "Netherlands Antilles",
		"AO": "Angola",
		"AQ": "Antarctica",
		"AR": "Argentina",
		"AS": "American Samoa",
		"AT": "Austria",
		"AU": "Australia",
		"AW": "Aruba",
		"AZ": "Azerbaijan",
		"BA": "Bosnia and Herzegovina",
		"BB": "Barbados",
		"BD": "Bangladesh",
		"BE": "Belgium",
		"BF": "Burkina Faso",
		"BG": "Bulgaria",
		"BH": "Bahrain",
		"BI": "Burundi",
		"BJ": "Benin",
		"BM": "Bermuda",
		"BN": "Brunei Darussalam",
		"BO": "Bolivia",
		"BR": "Brazil",
		"BS": "Bahama",
		"BT": "Bhutan",
		"BV": "Bouvet Island",
		"BW": "Botswana",
		"BY": "Belarus",
		"BZ": "Belize",
		"CA": "Canada",
		"CC": "Cocos (Keeling) Islands",
		"CF": "Central African Republic",
		"CG": "Congo",
		"CH": "Switzerland",
		...
		...
		"YU": "Yugoslavia",
		"ZA": "South Africa",
		"ZM": "Zambia",
		"ZR": "Zaire",
		"ZW": "Zimbabwe"
	}
}
 
Suggest Edits

Get Account Date

Returns the current date and time zone set in the user account settings

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v3/system.accountdate.get/json
curl --request POST \
  --url http://app.sendloop.com/api/v3/system.accountdate.get/json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v3/system.accountdate.get/json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v3/system.accountdate.get/json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v3/system.accountdate.get/json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v3/system.accountdate.get/json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"Success": true,
	"AccountDate": "2011-01-13 13:17:38",
	"AccountTimeZone": "Europe\/Istanbul"
}
 
Suggest Edits

API Libraries

 

We have only PHP and PHP Composer libraries at the moment. More libraries will be added at a later time.

Suggest Edits

Send Transaction Email

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v4/mta.json
curl --request POST \
  --url http://app.sendloop.com/api/v4/mta.json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v4/mta.json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v4/mta.json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v4/mta.json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v4/mta.json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
    "Status" : "Email recieved and scheduled for delivery",
    "MessageID" : "TEG-ab40-rt-xx"
}

Form Data

From
string
required

Sender email address

FromName
string
required

Sender name

ReplyTo
string
required

Reply-to email address. Replies will be sent to this address

ReplyToName
string
required

Name of the reply-to email address

To
string
required

Recipient email address

ToName
string

Recipient name

Subject
string
required

Subject of the email

TextBody
string
required

Plain text body of the email. This parameter is optional if you have defined a HTMLBody parameter.

HTMLBody
string
required

HTML body of the email. This parameter is optional if you have defined the TextBody parameter.

CustomArgs
string

Custom arguments you want to store for this message. These custom arguments will be sent back to you with web hooks upon request. Custom arguments must be in a key/value pair, example: {'key1':'val1', 'key2':'val2'}

MergeVars
string

Merge variables are used to personalize the email being sent. These custom arguments will be sent back to you with web hooks upon request. Merge variables must be in key/value pair, Example: {"firstname":"John", "lastname":"Doe", "%my_variable%": "MyValue"}

Tags
string

Tags are used to categorize the email being sent. These custom tags, can be used for grouping statistics and analyze further. Example: ["password_reset_email", "welcome_email"]

TrackOpens
string

Enable Open Tracking. Values can be, "1", "true", "on" and "yes" to enable, "0", "false", "off" and "no" to disable. Open Tracking is disabled by default. See [Tracking] section for further information.

TrackClicks
string

Enable Link Tracking. Values can be, "1", "true", "on" and "yes" to enable, "0", "false", "off" and "no" to disable. Link / Click Tracking is disabled by default. See [Tracking] section for further information.

TrackGA
string

Enable Google Analytics Tracking. Values can be, "1", "true", "on" and "yes" to enable, "0", "false", "off" and "no" to disable. Google Analytics Tracking is disabled by default. [Tracking] section for further information.

attachments[]
string

Define files to be attached to your emails

embeds[]
string

Define files and images to be embedded into your email content

 
Suggest Edits

Delivery Status Check

 

Header Auth

 Authentication is required for this endpoint.
posthttp://app.sendloop.com/api/v4/mtamessages.json
curl --request POST \
  --url http://app.sendloop.com/api/v4/mtamessages.json
var request = require("request");

var options = { method: 'POST',
  url: 'http://app.sendloop.com/api/v4/mtamessages.json' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("http://app.sendloop.com/api/v4/mtamessages.json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "http://app.sendloop.com/api/v4/mtamessages.json");

xhr.send(data);
import requests

url = "http://app.sendloop.com/api/v4/mtamessages.json"

response = requests.request("POST", url)

print(response.text)
A binary file was returned
{
	"MessageID":"TEG-ab40-rt-xx",
	"ReceiveDate":"2015-02-07 15:51:32",
	"DeliveryDate":"2015-02-07 15:52:44",
	"DeliveryStatus":"delivered",
	"DeliveryStatusMessage":"Delivered",
	"Subject":"Test Email Subject",
	"From":"Test Sender ",
	"To":"Test Recipient ",
	"Opened": true,
	"Clicked": false,
	"HttpCode":200
}

Path Params

id
string
required

Message ID

 

Delivery Status Codes

queued
Queued for Delivery.
pending-payment
Message was not sent due to insufficient funds.
delivered
Message is delivered
suppressed-hard-bounce
Message is not sent as recipient address was previously hard bounced.
suppressed-spam-complaint
Message is not sent as recipient complaint about SPAM.
hard-bounced
Message is sent but not delivered, remote server indicated there is no user using this email address.
soft-bounced
Message is sent but not delivered, remote server indicated there is problem when delivering. This could be due to quote issues or remote mail server problems

Suggest Edits

Personalization and Conditional Content

 

There are two types of personalization tags

1) %KEY% : will be replaced completely with the value given in the MergeVars attribute as "%KEY%": "MYALUE"
2) {{VARIABLE_NAME}} : will be replaced completely with the value given in the MergeVars attribute as "VARIABLE_NAME": "MYALUE"

Notice that usage of {{ }} in the template only requires the name of the variable given in the template

Personalization & Conditional Content module uses a template engine that is fully compatible well known Mustache templates.

Please note that all variables are HTML escaped by default, if you would like to skip escaping use {{{VARIABLE_NAME}}}

{{#firstname}}
Hi {{firstname}},
{{/firstname}}
{{^firstname}}
Dear customer,
{{/firstname}}
{{#product_in_shopping_cart}}
Your {{product_name}} is waiting in your shopping cart.


Click here to complete your purchase.


{{/product_in_shopping_cart}}
{{#purchased}}
Congratulations on your purchase {{product_name}}


{{/purchased}}
{{product_name}}

Kind Regards

Given the following MergeVars parameter via API (Scenario: User purchased the product& first name is given)

MergeVars: {
  "firstname": "John",
  "product_name": "XTZ Smart Phone",
  "product_sku" : "SKU982AH98",
  "price": 50,
  "purchased": true,
  "product_in_shopping_cart": false,
  "product_image_url": "http://mysite.com/images/product/SKU982AH98",
  "checkout_url": "http://mysite.com/checkout/as8d80003mmsd"
}

will produce the following:

Hi John,
Congratulations on your purchase XTZ Smart Phone


XTZ Smart Phone
Kind Regards

Given the following MergeVars parameter via API (Scenario: User left the item in shopping cart & first name is not given)

MergeVars: {
  "product_name": "XTZ Smart Phone",
  "product_sku" : "SKU982AH98",
  "price": 50,
  "purchased": false,
  "product_in_shopping_cart": true,
  "product_image_url": "http://mysite.com/images/product/SKU982AH98",
  "checkout_url": "http://mysite.com/checkout/as8d80003mmsd"
}

Will produce the following:

Dear customer,

Your XTZ Smart Phone is waiting in your shopping cart.


Click here to complete your purchase.


XTZ Smart Phone
Kind Regards

For more information about the method, please check Mustache Documentation.

Mustache template rendering live demo page: https://mustache.github.io/#demo

Suggest Edits

SMTP Reference

 

SMTP is enabled on smtp.sendloop.com on ports 25 and 587.

You can find your SMTP username and password with following steps.

1) Click [Sender Addresses] tab
2) Below the sender address you have authorized, click the [Email Delivery Settings] link
3) In this page you will find SMTP Host / Port / Username / Password

Custom Headers

X-SL-Custom-Args [optional, string]
Custom arguments you want to store for this message.
These custom arguments will be sent back to you with web hooks upon request.
Custom arguments must be in a key/value pair, example: {'key1':'val1', 'key2':'val2'}

X-SL-Merge-Vars [optional, string]
Merge variables are used to personalize the email being sent.
These custom arguments will be sent back to you with web hooks upon request.
Merge variables must be in key/value pair,
Example: {"firstname":"John", "lastname":"Doe", "%my_variable%": "MyValue"}

See [Personalization] section for further information.

X-SL-Tags [optional, string]
Tags are used to categorize the email being sent. These custom tags, can be used for grouping statistics and analyze further.
Example: ["password_reset_email", "welcome_email"]

X-SL-Track-Opens [optional, string]
Enable Open Tracking.
Values can be, "1", "true", "on" and "yes" to enable, "0", "false", "off" and "no" to disable.
Open Tracking is disabled by default.

See [Tracking] section for further information.

X-SL-Track-Clicks [optional, string]
Enable Link Tracking.
Values can be, "1", "true", "on" and "yes" to enable, "0", "false", "off" and "no" to disable.
Link / Click Tracking is disabled by default.

See [Tracking] section for further information.

X-SL-Track-GA [optional, string]
Enable Google Analytics Tracking.
Values can be, "1", "true", "on" and "yes" to enable, "0", "false", "off" and "no" to disable.
Google Analytics Tracking is disabled by default.