iPost Enterprise

The iPost Enterprise Developer Hub

Welcome to the iPost Enterprise developer hub. You'll find comprehensive guides and documentation to help you start working with iPost Enterprise as quickly as possible, as well as support if you get stuck. Let's jump right in!

THE IPOST ENTERPRISE DEVELOPER HUB

 

Welcome to the iPost Enterprise developer hub!

Here you can find a comprehensive guide and documentation to help you start working with iPost Enterprise API as quickly as possible.

Let's jump right in!

How to Use the API

 

Endpoints

Contact the REST API using the following endpoint:
https://g001.enterprise.ipost.com/api/v1/

Please verify your iPost Enterprise instance. The endpoint URL should include the same instance as your iPost Enterprise account. You can verify what instance you are on by looking at the url in your browser when you are logged into your iPost Enterprise account.

If your iPost Enterprise account uses the g001 instance, use the following endpoint::
https://g001.enterprise.ipost.com/api/v1/

If your iPost Enterprise account uses the g002 instance, use the following endpoint:
https://g002.enterprise.ipost.com/api/v1/

Authentication

To use the iPost Enterprise REST API, you will need to authenticate using your email and password by using the Authentication method below.
Subsequent calls will need your ClientToken as a URL parameter, which can be found here:
https://g001.enterprise.ipost.com/settings/client

Limitations

The API call should stay below 16KB per request in order to avoid being truncated.

Headers

 

Accept
You can set header "Accept" to: /

Content-Type
Header Content-Type requires: application/json

X-Auth-Token
Any call after authentication will need the token, received from the authentication call, as the value for X-Auth-Token in the request header.

Example:
Accept: /
Content-Type: application/json
X-Auth-Token: abcdefg123456WXYZ

Dates

 

Dates should use format:
YYYY-MM-DD HH:mm:SS

If the time portion is missing, it will be saved as:
YYYY-MM-DD 00:00:00

Properties

 

The list of standard and custom properties for the account can be found in General Settings > Database.

How to Test the API

 

This website allows for testing from within the documentation.

Give it a try by inserting your own information in the input box for each API call on this page!

Authentication

Retrieve the Authentication token to perform API calls to the account

 
posthttps://g001.enterprise.ipost.com/api/v1/login/
{
	"client_id": "api_user@example.com",
	"client_secret": "qwertyuiopasdfghjklzxcvbnm"
}
A binary file was returned

You couldn't be authenticated

{
  "data":{
    "token":"AUTH_TOKEN",
    "valid_for":3600,
    "expires":UNIX_TIMESTAMP
  },
  "status":"success"
}

Body Params

client_id
string
required

The client’s unique username/email used to access the web platform.

client_secret
string
required

The client's password.

 

Authentication is required in order to perform any API call to your account.

A token will be created and will have a fixed validity in time.
When it is expired, you will be required to authenticate again.

Contacts

 

A Contact is a single record containing all the information related to a single subscriber.
It is composed of an Email Address, a Contact_ID and Properties, both standard and custom.

In this section you can manage all the Contacts in the account.

You can find methods to add a new contact; retrieve, update or remove one; change the status for the contact at a global or at a list level.

Add Contact

Add a contact to the account

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/contacts/add/
{
  "Email": "test@example.com",
  "Mobile": "303-555-1212",
  "GlobalEmailStatus": true,
  "GlobalMobileStatus": true,
  "Properties": {
    "first_name": "First Name",
    "last_name": "Last Name"
  }
}
A binary file was returned

You couldn't be authenticated

{
  "data": {
    "ContactID": "1234"
  },
  "status": "success"
}

Path Params

ClientToken
string
required

Client-specific Identification String

Body Params

Email
string
required

Either this or Mobile is requred

Mobile
string
required

Either this or Email is required

GlobalEmailStatus
boolean

Requires "Email". TRUE for opt-in; FALSE for opt-out

GlobalMobileStatus
boolean

Requires "Mobile". TRUE for opt-in; FALSE for opt-out

Properties
object
 

Headers

X-Auth-Token
string

Auth_token

 

Note regarding GlobalEmailStatus and GlobalMobileStatus parameters

These parameters are assumed true if absent but corresponding Email or Mobile fields are present; they are ignored if present but corresponding Email or Mobile fields are absent.

Retrieve Contact by ID

Retrieve a contact based on iPost internal contact_id

 

Header Auth

 Authentication is required for this endpoint.
gethttps://g001.enterprise.ipost.com/api/v1/ClientToken/contacts/ContactID/retrieve/
https://g001.enterprise.ipost.com/api/v1/MyToken/contacts/123456/retrieve/
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "ContactID": "123456",
    "Properties": {
      "city": null,
      "country": null,
      "last_name": "Last Name",
      "first_name": "First Name",
      "mobile_phone": null,
      "variable_1": null
    },
    "Email": "test@example.com",
    "GlobalEmailStatus": true
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

ContactID
int32
required

iPost internal ContactID

Headers

X-Auth-Token
string

Auth_token

 

Search Contact by Email or Mobile

Retrieve information for a Contact matching a supplied set of search parameters

 
gethttps://g001.enterprise.ipost.com/api/v1/ClientToken/contacts/search/
https://g001.enterprise.ipost.com/api/v1/MyToken/contacts/search/
A binary file was returned

You couldn't be authenticated

{
   "data": {
      "contact": [
         {
            "ContactID": "123456",
            "Email": "test@example.com",
            "Properties": {
               "city": null,
               "country": null,
               "last_name": "Last Name",
               "first_name": "First Name",
               "mobile_phone": null,
               "variable_1": null
            }
         }
      ]
   },
   "status": "success",
   "metadata": {
      "results": {
         "first": 1,
         "last": 1
      },
      "total_results": "1"
   }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Query Params

Email
string

optional if Mobile is present

Mobile
string

optional if Email is present; look up by mobile phone number

Headers

X-Auth-Token
string

Auth_token

 

Search Contact by Property

Retrieve information for a Contact matching a supplied set of search parameters

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/contacts/search/
{
   "SearchFields": {
      "first_name": "first name"
   },
   "ResultFields": [
      "first_name",
      "last_name",
      "country"
   ],
   "start": 1
}
A binary file was returned

You couldn't be authenticated

{
   "status": "success",
   "metadata": {
      "results": {
         "first": 2,
         "last": 4
      },
      "total_results": "4"
   },
   "data": {
      "contact": [
         {
            "ContactID": "123456",
            "Properties": {
               "country": null,
               "first_name": "First Name",
               "last_name": "Last NameX"
            }
         },
         {
            "ContactID": "234567",
            "Properties": {
               "country": null,
               "first_name": "First Name",
               "last_name": "Last Name2"
            }
         },
         {
            "ContactID": "345678",
            "Properties": {
               "country": null,
               "first_name": "First Name",
               "last_name": "Last Name3"
            }
         }
      ]
   }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Body Params

SearchFields
object

List of Properties to filter with

 
ResultFields
array of strings

Array of Properties to return

Start
int32

Optional. It will not include the first N records in the response.

Headers

X-Auth-Token
string

Auth_token

 

Update Contact by ContactID

Update the information for a Contact

 
puthttps://g001.enterprise.ipost.com/api/v1/ClientToken/contacts/ContactID/update/
{
  "Properties": {
    "first_name": "First Name v2",
    "last_name": "Last Name v2"
  }
}
A binary file was returned

You couldn't be authenticated

{
   "status": "success",
   "data": {}
}

Path Params

ClientToken
string
required

Client-specific Identification String

ContactID
int32
required

iPost internal ContactID

Body Params

Email
string

Either this or Mobile is required

Mobile
string

Either this or Email is required

Properties
object

Optional.

 
GlobalEmailStatus
boolean

Requires "Email". TRUE for opt-in; FALSE for opt-out

GlobalMobileStatus
boolean

Requires "Mobile". TRUE for opt-in; FALSE for opt-out

Headers

X-Auth-Token
string

Auth_token

 

Note regarding GlobalEmailStatus and GlobalMobileStatus

These parameters are assumed true if absent but corresponding Email or Mobile fields are present; they are ignored if present but corresponding Email or Mobile fields are absent.

Get Contact Status on Lists

Retrieve Contact Status on all Lists

 
gethttps://g001.enterprise.ipost.com/api/v1/ClientToken/contacts/ContactID/statusAll/
https://g001.enterprise.ipost.com/api/v1/MyToken/contacts/123456/statusAll/
A binary file was returned

You couldn't be authenticated

{
  "data": {
    "Lists": [
      {
        "ListID": "1234",
        "ListName": "Test List 1",
        "ListEmailStatus": false
      },
      {
        "ListID": "5678",
        "ListName": "Test List 2",
        "ListEmailStatus": true
      }
    ],
    "Email": "test@example.com",
    "ContactID": "123456",
    "Topics": [
      {
        "TopicStatus": false,
        "TopicID": "12",
        "TopicName": "Test Topic 1"
      }
    ],
    "GlobalEmailStatus": true
  },
  "status": "success"
}

Path Params

ClientToken
string
required

Client-specific Identification String

ContactID
int32
required

iPost internal ContactID

Headers

X-Auth-Token
string

Auth_token

 

Lists

 

A List is a collection of Contacts.

In this section you can find methods to create, update or delete Lists.
You can retrieve the List information.

You can also add, update or remove Contacts from a specific List.

Create List

Create a new List

 
posthttps://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/create/
{
  "ListName": "Test List 1",
  "ListType": "static",
  "Description" : "This is a list",
  "FolderID" : "21",
  "Permissions" : "private"
}
A binary file was returned

You couldn't be authenticated

{
  "data": {
    "ListID": "1234"
  },
  "status": "success"
}

Body Params

ListName
string
required
ListType
string

The type of list being created. Currently "static" and "suppression" are allowed

Description
string
FolderID
int32

The list will be created in this folder. If not specified then it will be created in the root folder.

Permissions
string

It can be "private" or "public". If not present, it will be set to "private".

Headers

X-Auth-Token
string

Auth_token

 

Update List

Update an existing List

 
puthttps://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/ListID/update/
{
	"ListName": "Test List 2",
  "ListType": "static",
  "Description" : "This is a list v2",
  "FolderID" : "22",
  "Permissions" : "public"
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "Response": "SUCCESS"
  }
}

Path Params

ListID
int32
required

Body Params

ListName
string
ListType
string

The type of list being created. Currently only "static" is allowed

Description
string
FolderID
int32

The list will be created in this folder. If not specified then it will be created in the root folder.

Permissions
string

It can be "private" or "public". If not present, it will be set to "private".

Headers

X-Auth-Token
string

Auth_token

 

Search for Lists

Retrieve List information

 
gethttps://g001.enterprise.ipost.com/api/v1/ClientToken/lists/search/
https://g001.enterprise.ipost.com/api/v1/MyToken/lists/search/
A binary file was returned

You couldn't be authenticated

{
   "data": {
      "list": [
         {
            "ListID": "1234",
            "Public": true,
            "ListDescription": null,
            "ListName": "My_test",
            "ListCreationTime": "2017-02-23 20:02:49",
            "ListFolderID": "123",
            "ListType": "Dynamic"
         }
      ]
   },
   "metadata": {
      "total_results": "1",
      "results": {
         "last": 1,
         "first": 1
      }
   },
   "status": "success"
}

Path Params

ClientToken
string
required

Client-specific Identification String

Query Params

ListName
string

Full or substring of ListName; Optional if no other query parameters specified

ListType
string

"Static", "Test", "Dynamic"; Optional if no other query parameters specified

ListDescription
string

Full or substring match of ListDescription; Optional if no other query parameters specified

ListCreationTimeBefore
date

Lists created before a specified DateTime; Optional if no other query parameters specified

ListCreateTimeAfter
date

Lists created after a specified DateTime; Optional if no other query parameters specified

ListFolderID
int32

ListFolderID of parent List folder; optional if other query parameters are present

Public
boolean

Is the List public or private? Optional if other query parameters are specified

Headers

X-Auth-Token
string

Auth_token

 

Add/Update Contact to Multiple Lists

Add or update Contact to specific Lists

 
posthttps://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/add/
{
  "Email": "test@example.com",
  "ListIDs": [
      123,
      456,
      789
    ]
}
A binary file was returned

You couldn't be authenticated

{
  "data":{},
  "status":"success"
}

Body Params

ListIDs
array of integers
required
ContactID
string

optional if Email is present

Email
string

optional if Contact_ID is present

Headers

X-Auth-Token
string

Auth_token

 

Note regarding GlobalEmailStatus and GlobalMobileStatus parameters

These parameters are assumed true if absent but corresponding Email or Mobile fields are present; they are ignored if present but corresponding Email or Mobile fields are absent.

Get List Contacts

Retrieve contacts on a specific list by listID

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/lists/ListID/contacts/
{
  "SearchFields": {
    "column1": "value1"
  },
  "Start": 5
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "metadata": {
    "results": {
      "last": 2,
      "first": 1
    },
    "total_results": "2"
  },
  "data": {
    "ListName": "Test_ListName",
    "ListID": "1234",
    "contacts": [
	    {contactObject},
	    {contactObject}
	]
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

ListID
int32
required

required

Body Params

SearchFields
array of strings

List of colto filter with. If not present, all records will be returned.

Start
int32

Optional. It will not include the first N records in the response.

Headers

X-Auth-Token
string

Auth_token

 

Limits

Please note that the call will return a maximum amount of 10,000 records per call.

Add Contacts to List

Add one or more Contacts to a List

 
posthttps://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/ListID/add/
{
	"ContactStatus": [
    {
			"Email": "test@example.com",
			"Status": "Active"
    },
    { 
      "ContactID": 124,
      "Status": "Unsubscribed"
    },    
    {
			"Email": "test2@example.com",
			"Status": "Unsubscribed"
    }    
  ]
}
A binary file was returned

You couldn't be authenticated

{
"data": [
  {
    "contact_id": 123,
    "status": "success"
  },
  {
    "status": "success",
    "contact_id": 124,
  },
  {
    "contact_id": 125,
    "status": "success"
  }
],
"status": "success"
}

Path Params

ListID
int32
required

Body Params

ContactStatus
array of mixed types
required

Status within the array elements is required. If ContactID and Email are both present in the request, but they don't correspond to the same contact, priority will be given to ContactID. Use only Email to add Contacts that don't exist yet in the account.

Headers

X-Auth-Token
string

Auth_token

 

Add Contacts to MD5 List

Add one or more Contacts to a MD5 Suppression List

 
posthttps://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/ListID/md5add/
{
  "Emails": [
    "test1@example.com",
    "test2@example.com",
    "test3@example.com"
    ]
}
A binary file was returned

You couldn't be authenticated

{
  "data": {
    "Response": "success"
  },
  "status": "success"
}

Path Params

ListID
int32
required

Body Params

Emails
array of strings
required

Headers

X-Auth-Token
string

Auth_token

 

Empty List

Remove all Contacts from a List

 
posthttps://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/ListID/clean/
{
  "ContactType": "optouts"
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "Response": "SUCCESS"
  }
}

Path Params

ListID
int32
required

Body Params

ContactType
string
required

Possible values of ContactType are 'all' and 'optouts'.

Headers

X-Auth-Token
string

Auth_token

 

Delete List

Remove a List from your account

 
deletehttps://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/ListID/delete/
curl --request DELETE \
  --url https://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/ListID/delete/
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/ListID/delete/' };

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

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

url = URI("https://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/ListID/delete/")

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

request = Net::HTTP::Delete.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("DELETE", "https://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/ListID/delete/");

xhr.send(data);
import requests

url = "https://g001.enterprise.ipost.com/api/v1/:ClientToken/lists/ListID/delete/"

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

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "Response": "SUCCESS"
  }
}

Path Params

ListID
int32
required

Headers

X-Auth-Token
string

Auth_token

 

Retrieve Journey Automations

Search for a Journey Automation

 
posthttps://g001.enterprise.ipost.com/api/v1/:ClientToken/automations/journeys/
{
  "Automation_Name" : "test",
  "AutomationCreationTimeBefore":"2017-04-30 00:00:00",
  "AutomationCreationTimeAfter":"2017-01-31 00:00:00",
  "Automation_Status": "Active"
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "metadata": {
    "total_results": "2",
    "results": {
      "last": 2,
      "first": 1
    },
  },
  "data": [
     {
      "id": "101",
      "Automation_Name": "Test API 1",
      "Automation_Description": "",
      "Automation_FolderId": 1,
      "Automation_Status": "Active",
      "created": "2017-02-25 20:50:56",
    },
    {
      "id": "102", 
      "Automation_Name": "Test API 2",
      "Automation_Description": "",
      "Automation_FolderId": 2,
      "Automation_Status": "Paused",
      "created": "2017-02-26 23:51:34",
    }	
  ]
}

Body Params

Automation_Name
string
AutomationCreationTimeBefore
date

Automation created before a specified DateTime

AutomationCreationTimeAfter
date

Automation created after a specified DateTime

Automation_Status
string

Retrieve an automation based on its status ("Active", "Paused" or "Stopped")

Headers

X-Auth-Token
string

Auth_token

 

Add Contacts to Journey Automation

Send an Email to Multiple Contacts

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/automations/journey/Journey_ID/addContacts/
{
  "Recipients": [
    {
      "Email": "test1@example.com",
      "Properties": {
        "first_name": "Name1",
        "temporary_string": "string1"
      }
    },
    {
      "Email": "test2@example.com",
      "Properties": {
        "first_name": "Name2",
        "temporary_string": "string2"
      }
    }
  ]
}
A binary file was returned

You couldn't be authenticated

{
  "data":{
    "Recipients":[
      {
        "status": "success"
      },
      {
        "status": "success"
      }ù
    ]
  },
  "status": "success"
}

Path Params

Journey_ID
int32
required
ClientToken
string
required

Body Params

Recipients
array

Each object has a Contact_ID or Email (address) and optional Properties array

Headers

X-Auth-Token
string

Auth_token

 

Fields of Recipients objects

Contact_ID (int) (optional) - internal ID of existing contact to start on this journey
Email (string) (optional) - Email address of new/non-existing contact to start on this journey
Properties (object) (optional) - names correspond to iTL references in any email objects used by the journey; values are the strings to be substituted into the assembled message.

For example, if the Properties object contains {"book_title":"The Girl on the Train"} then the email document may contain the iTL reference {\var:book_title}

In the event that the names in the Properties object are the same as names in the database contact profile, the values from this Properties object are used the message assembly instead of the contact profile values.

New Contacts created by this API call

Whenever a Contact_ID field is not present in a Recipients object, the Email and Properties fields are implicitly to be passed through the "Add Contacts" API to generate a new Contact_ID. If the Email matches that of an existing Contact_ID or there is a match for a unique contact profile key in the Properties then the corresponding existing Contact_ID is used instead of creating a new one.

if you pass HTML content in a variable, in the email you will need to set that variable to accept it with the "encode" option:
{\var:temporary_string \encode=no}

Create Journey Automation

Create a Journey Automation

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/automations/journey/create/
{
  "Automation_Name": "Test API 1",
  "Automation_Description": "",
    "Automation_FolderId": 1,
    "Automation_UpdateContactInfo": false,
    "Automation_Status": "Active",
    "Automation_Entry_Mode" : "only-once",
    "Automation_Activities": [{
    	"type": "email",
    	"name": "Created with API Call",
    	"from_name" : "iPost Test",
    	"preheader" : "demo preheader",
    	"campaign_tags" : 11,
    	"report_folder_id" : 413,
    	"from_address" : "test@example.com",
    	"subject": "API Journey test",
    	"email_id": 1001,
    	"track_opens" : true,
    	"track_links" : true,
    	"optout_override" : false,
    	"fail_dns_timeouts" : false,
    	"fail_mx_rejections" : false,
    	"email_frequency_limit" : 3,
    	"send_time_optimization" : 0,
    	"throttle_enabled" : true,
    	"throttle_count" : 13,
    	"throttle_hours" : 1,
    	"send_only_once" : false,
      "deduplicate_emails":true,
      "include_deliverability_test":false,
      "do_opt_out":false,
      "sender_domain": "My Custom Settings",
      "children": [1]
    },
	{
		"type": "delay_Control",
		"name": "Delay",
		"delay_type": "delay_until",
		"unit": {
		  "value": "minutes"
		},
		"until_time": {
		  "value": "11:00"
		},
		"until_time_meridian": {
		  "value": "AM"
		},
		"until_time_zone": {
		  "value": "Central Time (US & Canada)",
		  "label": "(UTC-06:00) Central Time (US & Canada)"
		},
		"value": 2,
		"children": [2]
	}
	],
	"Automation_Triggers": [
	  {
		  "type": "api-on-demand"
	  }
	]
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "journey": "1234"
  }
}

Path Params

ClientToken
string
required

Body Params

Automation_Name
string
required
Automation_Description
string
Automation_FolderId
int32
Automation_UpdateContactInfo
boolean
required
Automation_Status
string
required

"Active", "Paused" or "Stopped"

Automation_Entry_Mode
string

It can be "only-once", "never-same-time" or "multiple-instances"

Automation_Activities
object
required
 
Automation_Activities.type
string
Automation_Activities.name
string
Automation_Activities.from_name
array of mixed
Automation_Activities.preheader
string
Automation_Activities.campaign_tags
integer
Automation_Activities.from_address
string
Automation_Activities.subject
string
Automation_Activities.email_id
integer
Automation_Activities.track_opens
boolean
Automation_Activities.track_links
boolean
Automation_Activities.report_folder_id
integer
Automation_Activities.destination
array of objects

Only for Process Automations.

Automation_Activities.optout_override
boolean
Automation_Activities.fail_dns_timeouts
boolean
Automation_Activities.fail_mx_rejections
boolean
Automation_Activities.email_frequency_limit
integer
Automation_Activities.send_time_optimization
integer

[0] for no personalized send time, [1] for "Same Time Sending", [2] for "Send Time Optimization"

Automation_Activities.throttle_enabled
boolean
Automation_Activities.throttle_count
integer
Automation_Activities.throttle_hours
integer
Automation_Activities.send_only_once
boolean
Automation_Activities.deduplicate_emails
boolean
Automation_Activities.include_deliverability_test
boolean
Automation_Activities.do_opt_out
boolean

Set to "true" for a "Commercial" Send Classification, "false" for "Transactional"

Automation_Triggers
object
required
 
Automation_Triggers.type
string
required

"list"

Automation_Triggers.source_id
integer

For type "list": the List ID

Automation_Triggers.mode
string

For type "list": "existing-and-new-contacts", "new-contacts-only" or "existing-contacts-only"

Headers

X-Auth-Token
string

Auth_token

 

When creating automations with multiple steps, you need to use the "children" array in the Automation_Activities.

Fields of Recipients objects

Contact_ID (int) (optional) - internal ID of existing contact to start on this journey
Email (string) (optional) - Email address of new/non-existing contact to start on this journey
Properties (object) (optional) - names correspond to iTL references in any email objects used by the journey; values are the strings to be substituted into the assembled message.

For example, if the Properties object contains {"book_title":"The Girl on the Train"} then the email document may contain the iTL reference {\var:book_title}

In the event that the names in the Properties object are the same as names in the database contact profile, the values from this Properties object are used the message assembly instead of the contact profile values.

New Contacts created by this API call

Whenever a Contact_ID field is not present in a Recipients object, the Email and Properties fields are implicitly to be passed through the "Add Contacts" API to generate a new Contact_ID. If the Email matches that of an existing Contact_ID or there is a match for a unique contact profile key in the Properties then the corresponding existing Contact_ID is used instead of creating a new one.

Update Journey Automation

Update a Journey Automation

 
puthttps://g001.enterprise.ipost.com/api/v1/ClientToken/automations/journey/journeyID/update
{
  "Automation_Status": "Active"
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "journey": "1234"
  }
}

Path Params

ClientToken
string
required
journeyID
int32
required

Body Params

Automation_Name
string
Automation_Description
string
Automation_FolderId
int32
Automation_UpdateContactInfo
boolean
required
Automation_Status
string

"Active", "Paused" or "Stopped"

Automation_Entry_Mode
string

It can be "only-once", "never-same-time" or "multiple-instances"

Automation_Activities
object
 
Automation_Activities.type
string
Automation_Activities.name
string
Automation_Activities.from_name
array of mixed
Automation_Activities.preheader
string
Automation_Activities.campaign_tags
integer
Automation_Activities.from_address
string
Automation_Activities.subject
string
Automation_Activities.email_id
integer
Automation_Activities.track_opens
boolean
Automation_Activities.track_links
boolean
Automation_Activities.report_folder_id
integer
Automation_Activities.destination
array of objects

Only for Process Automations.

Automation_Activities.optout_override
boolean
Automation_Activities.fail_dns_timeouts
boolean
Automation_Activities.fail_mx_rejections
boolean
Automation_Activities.email_frequency_limit
integer
Automation_Activities.send_time_optimization
integer

[0] for no personalized send time, [1] for "Same Time Sending", [2] for "Send Time Optimization"

Automation_Activities.throttle_enabled
boolean
Automation_Activities.throttle_count
integer
Automation_Activities.throttle_hours
integer
Automation_Activities.send_only_once
boolean
Automation_Activities.deduplicate_emails
boolean
Automation_Activities.include_deliverability_test
boolean
Automation_Activities.do_opt_out
boolean

Set to "true" for a "Commercial" Send Classification, "false" for "Transactional"

Automation_Triggers
object
 
Automation_Triggers.type
string
required

"list"

Automation_Triggers.source_id
integer

For type "list": the List ID

Automation_Triggers.mode
string

For type "list": "existing-and-new-contacts", "new-contacts-only" or "existing-contacts-only"

Headers

X-Auth-Token
string

Auth_token

 

Fields of Recipients objects

Contact_ID (int) (optional) - internal ID of existing contact to start on this journey
Email (string) (optional) - Email address of new/non-existing contact to start on this journey
Properties (object) (optional) - names correspond to iTL references in any email objects used by the journey; values are the strings to be substituted into the assembled message.

For example, if the Properties object contains {"book_title":"The Girl on the Train"} then the email document may contain the iTL reference {\var:book_title}

In the event that the names in the Properties object are the same as names in the database contact profile, the values from this Properties object are used the message assembly instead of the contact profile values.

New Contacts created by this API call

Whenever a Contact_ID field is not present in a Recipients object, the Email and Properties fields are implicitly to be passed through the "Add Contacts" API to generate a new Contact_ID. If the Email matches that of an existing Contact_ID or there is a match for a unique contact profile key in the Properties then the corresponding existing Contact_ID is used instead of creating a new one.

Create Process Automation

Create a Process Automation

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/automations/process/create
{
  "Automation_Name": "Test API 1",
  "Automation_Description": "",
  "Automation_FolderId": 1,
  "Automation_Status": "Active",
  "Automation_Activities": [
    {
      "type": "email",
      "name": "Created with API Call",
      "from_name": "iPost Test",
      "preheader": "demo preheader",
      "campaign_tags": "11",
      "report_folder_id": 413,
      "from_address": "test@example.com",
      "subject": "API Journey test",
      "destination" : [
        {
          "destination_type": "list",
          "destination_ids": [104,47] 
        },
        {
          "destination_type": "cdt",
          "destination_ids": [4,8]
        }
      ],
      "email_id": 1001,
      "track_opens": true,
      "track_links": true,
      "optout_override": false,
      "fail_dns_timeouts": false,
      "fail_mx_rejections": false,
      "email_frequency_limit": 3,
      "send_time_optimization": 0,
      "throttle_enabled": true,
      "throttle_count": 13,
      "throttle_hours": 1,
      "send_only_once": false,
      "deduplicate_emails": true,
      "include_deliverability_test": false,
      "do_opt_out": false,
      "sender_domain": "My Custom Settings"
    },
    {
      "type": "email",
      "name": "Created with API Call",
      "from_name": "iPost Test",
      "preheader": "demo preheader",
      "campaign_tags": "11",
      "report_folder_id": 413,
      "from_address": "test@example.com",
      "subject": "API Journey test",
      "destination" : [
        {
          "destination_type": "list",
          "destination_ids": [104,47] 
        },
        {
          "destination_type": "cdt",
          "destination_ids": [4,8]
        }
      ],
      "email_id": 1001,
      "track_opens": true,
      "track_links": true,
      "optout_override": false,
      "fail_dns_timeouts": false,
      "fail_mx_rejections": false,
      "email_frequency_limit": 3,
      "send_time_optimization": 0,
      "throttle_enabled": true,
      "throttle_count": 13,
      "throttle_hours": 1,
      "send_only_once": false,
      "deduplicate_emails": true,
      "include_deliverability_test": false,
      "do_opt_out": false,
      "sender_domain": "My Custom Settings"
    }
  ],
  "Automation_Schedule": [
    {
      "schedule_date": "2021-12-31 23:45:00",
      "schedule_time_zone": "(UTC-06:00) Central Time (US & Canada)"
    }
  ]
}
A binary file was returned

You couldn't be authenticated

{
  "data": {
    "Automation_ID": "123",
    "Automation_Name": "Test API 1"
  },
  "status": "success"
}

Path Params

ClientToken
string
required

Body Params

Automation_Name
string
required
Automation_Description
string
Automation_FolderId
int32
Automation_UpdateContactInfo
boolean
required
Automation_Status
string
required

"Active", "Paused" or "Stopped"

Automation_Activities
object
required
 
Automation_Activities.type
string
Automation_Activities.name
string
Automation_Activities.from_name
array of mixed
Automation_Activities.preheader
string
Automation_Activities.campaign_tags
integer
Automation_Activities.from_address
string
Automation_Activities.subject
string
Automation_Activities.email_id
integer
Automation_Activities.track_opens
boolean
Automation_Activities.track_links
boolean
Automation_Activities.report_folder_id
integer
Automation_Activities.destination
array of objects

Only for Process Automations.

Automation_Activities.optout_override
boolean
Automation_Activities.fail_dns_timeouts
boolean
Automation_Activities.fail_mx_rejections
boolean
Automation_Activities.email_frequency_limit
integer
Automation_Activities.send_time_optimization
integer

[0] for no personalized send time, [1] for "Same Time Sending", [2] for "Send Time Optimization"

Automation_Activities.throttle_enabled
boolean
Automation_Activities.throttle_count
integer
Automation_Activities.throttle_hours
integer
Automation_Activities.send_only_once
boolean
Automation_Activities.deduplicate_emails
boolean
Automation_Activities.include_deliverability_test
boolean
Automation_Activities.do_opt_out
boolean

Set to "true" for a "Commercial" Send Classification, "false" for "Transactional"

Automation_Schedule
object
 
Automation_Schedule.schedule_date
datetime

Just like in the UI, only 15 minutes fractions of an hour can be used. If a different time is passed, the system will automatically round it up to the next 15 minutes interval.

Automation_Schedule.schedule_time_zone
string

Complete name for the Time Zone as present in the main UI

Headers

X-Auth-Token
string

Auth_token

 

Fields of Recipients objects

Contact_ID (int) (optional) - internal ID of existing contact to start on this journey
Email (string) (optional) - Email address of new/non-existing contact to start on this journey
Properties (object) (optional) - names correspond to iTL references in any email objects used by the journey; values are the strings to be substituted into the assembled message.

For example, if the Properties object contains {"book_title":"The Girl on the Train"} then the email document may contain the iTL reference {\var:book_title}

In the event that the names in the Properties object are the same as names in the database contact profile, the values from this Properties object are used the message assembly instead of the contact profile values.

New Contacts created by this API call

Whenever a Contact_ID field is not present in a Recipients object, the Email and Properties fields are implicitly to be passed through the "Add Contacts" API to generate a new Contact_ID. If the Email matches that of an existing Contact_ID or there is a match for a unique contact profile key in the Properties then the corresponding existing Contact_ID is used instead of creating a new one.

Start Process Automation

Send an Email to a specific Contact

 
gethttps://g001.enterprise.ipost.com/api/v1/:ClientToken/automations/Automation_ID/startProcess/
curl --request GET \
  --url https://g001.enterprise.ipost.com/api/v1/:ClientToken/automations/Automation_ID/startProcess/
var request = require("request");

var options = { method: 'GET',
  url: 'https://g001.enterprise.ipost.com/api/v1/:ClientToken/automations/Automation_ID/startProcess/' };

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

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

url = URI("https://g001.enterprise.ipost.com/api/v1/:ClientToken/automations/Automation_ID/startProcess/")

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

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", "https://g001.enterprise.ipost.com/api/v1/:ClientToken/automations/Automation_ID/startProcess/");

xhr.send(data);
import requests

url = "https://g001.enterprise.ipost.com/api/v1/:ClientToken/automations/Automation_ID/startProcess/"

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

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "Response": "SUCCESS"
  }
}

Path Params

Automation_ID
int32
required

Headers

X-Auth-Token
string

Auth_token

 

Retrieve Process Automations

Search for Process Automations

 
posthttps://g001.enterprise.ipost.com/api/v1/:ClientToken/automations/processes/
{
  "Automation_Name" : "test",
  "AutomationCreationTimeBefore":"2017-04-30 00:00:00",
  "AutomationCreationTimeAfter":"2017-01-31 00:00:00",
  "Automation_Status": "Active"
}
A binary file was returned

You couldn't be authenticated

{
  "data": [
    {
      "Automation_FolderId": 0,
      "id": 303,
      "Automation_Description": "",
      "created": "2017-02-01 23:47:19",
      "Automation_Status": "active",
      "Automation_Name": "test-process"
    },
    {
      "Automation_Status": "active",
      "Automation_Name": "my_test_process - Wed Feb 01 2017 16:51:43 GMT-0700 (Mountain Standard Time)",
      "id": 304,
      "Automation_FolderId": 0,
      "Automation_Description": "",
      "created": "2017-02-01 23:51:45"
    }
  ],
  "status": "success",
  "metadata": {
    "total_results": 2,
    "results": {
      "first": 1,
      "last": 2
    }
  }
}

Body Params

Automation_Name
string
AutomationCreationTimeBefore
date

Automation created before a specified DateTime

AutomationCreationTimeAfter
date

Automation created after a specified DateTime

Automation_Status
string

Retrieve an automation based on its status ("Active", "Paused" or "Stopped")

Start
int32

Optional. It will not include the first N records in the response.

Headers

X-Auth-Token
string

Auth_token

 

Retrieve Records from DataTable

Retrieve Records from a DataTable

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/DataTables/DataTableID/retrieve/
{
  "SearchFields": {
    "field1": "value1"
  },
  "Start": 1
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "metadata": {
    "results": {
      "last": 2,
      "first": 1
    },
    "total_results": "2"
  },
  "data": [
    {
      "notes": "A note",
      "email": "test1@example.com"
    },
    {
      "notes": "Another note",
      "email": "test2@example.com"
    }
  ]
}

Path Params

ClientToken
string
required

Client-specific Identification String

DataTableID
int32
required

Required

Body Params

SearchFields
array of s
required

List of Properties to filter with. If not present, all records will be returned.

Start
int32

It will not include the first N records in the response.

Headers

X-Auth-Token
string

Auth_token

 

Pagination

Please note that each call will return a maximum of 1000 records.
In order to retrieve all data, use the "Start" parameter to indicate the offset and perform pagination.

Search for DataTable

Search for DataTable

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/DataTables/search/
{
  "DataTableName" : "test",
  "DataTableCreationTimeBefore":"2017-04-30 00:00:00",
  "DataTableCreationTimeAfter":"2017-01-31 00:00:00"
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "metadata": {
    "total_results": "2",
    "results": {
      "last": 2,
      "first": 1
    },
  },
  "data": [
    {
      "id": "12",
      "row_count": "5",
      "name": "Table_test_1",
      "created": "2017-02-25 20:50:56",
      "last_updated": "2017-02-25 20:50:56",
      "description": null
    },
    {
      "id": "34",
      "row_count": "0",
      "name": "FTP_Test",
      "created": "2017-04-14 13:55:45",
      "last_updated": "2017-04-14 13:55:45",
      "description": null
    }
  ]
}

Path Params

ClientToken
string
required

Client-specific Identification String

Query Params

Start
int32

Optional. It will not include the first N records in the response.

Body Params

DataTableName
string

Optional. Full or substring of DataTable name.

DataTableCreationTimeBefore
date

Optional. DataTable created before a specified DateTime

DataTableCreationTimeAfter
date

Optional. DataTable created after a specified DateTime

Headers

X-Auth-Token
string

Auth_token

 

Add or Update Records to a DataTable

Add or Update Records to a DataTable

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/DataTables/DataTableID/addupdate/
{
  "Records": [
    {
      "email": "test@example.com",
      "some_field": "value 1"
    },
    {
      "email": "test2@example.com",
      "some_field": "value 2"
    }
  ]
}
A binary file was returned

You couldn't be authenticated

{
  "data": [
    {
      "status": "success",
      "operation": "update"
    },
    {
      "status": "success",
      "operation": "add"
    }
  ],
  "status": "success"
}

Path Params

ClientToken
string
required

Client-specific Identification String

DataTableID
int32
required

Required

Body Params

Records
array of s
required

Array of Records to add or update with the specified values

Headers

X-Auth-Token
string

Auth_token

 

Create DataTable

Create a DataTable

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/DataTables/create/
{
  "DataTableName": "New_Data_Table",
  "Description" : "This is my data table",
  "ContentType" : "Custom",
  "ParentFolderID" : 0,
  "Sendable" : true,
  "SendableType" : 1,
  "Testing" : false,
  "Attributes" :[
    {
      "Name": "email",
      "DataType" : "Email",
      "DefaultValue" : "",
      "Required": true,
      "PrimaryKey" : true,
      "Sendable" : true
    },
    {
      "Name" : "first_name",
      "DataType" : "Short Text",
      "Required" : true
    },
    {
      "Name" : "id",
      "DataType" : "Integer",
      "Required" : false
    },
    {
      "Name" : "birthday",
      "DataType" : "Date & Time",
      "Required" : false
    },
    {
      "Name" : "interests",
      "DataType" : "Long Text",
      "Required" : false
    },
    {
      "Name" : "my_score",
      "DataType" : "Decimal",
      "Required" : false
    },
    {
      "Name" : "total_spent",
      "DataType" : "Monetary",
      "Required" : false
    },
    {
      "Name" : "html_content",
      "DataType" : "Large Text",
      "Required" : false
    },
    {
      "Name" : "purchased",
      "DataType" : "Boolean",
      "Required" : false
    }
  ]
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "data_table_id": "264"
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Body Params

DataTableName
string
ContentType
string
ParentFolderID
int32
Sendable
boolean
SendableType
int32
Testing
boolean
Attributes
object
 
Attributes.Name
string
Attributes.DataType
string
Attributes.DefaultValue
string
Attributes.Required
boolean
Attributes.PrimaryKey
boolean
Attributes.Sendable
boolean

Headers

X-Auth-Token
string

Auth_token

 

Empty Data Table

Remove all rows from a Data Table

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/DataTables/DataTableID/clean/
curl --request POST \
  --url https://g001.enterprise.ipost.com/api/v1/ClientToken/DataTables/DataTableID/clean/
var request = require("request");

var options = { method: 'POST',
  url: 'https://g001.enterprise.ipost.com/api/v1/ClientToken/DataTables/DataTableID/clean/' };

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

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

url = URI("https://g001.enterprise.ipost.com/api/v1/ClientToken/DataTables/DataTableID/clean/")

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

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", "https://g001.enterprise.ipost.com/api/v1/ClientToken/DataTables/DataTableID/clean/");

xhr.send(data);
import requests

url = "https://g001.enterprise.ipost.com/api/v1/ClientToken/DataTables/DataTableID/clean/"

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

print(response.text)
A binary file was returned

You couldn't be authenticated

{
    "status": "success",
    "data": {
        "Response": "Successfully cleaned the table My_Data_Table."
    }
}

Path Params

ClientToken
string
required

Client-specific Identification String

DataTableID
int32
required

Headers

X-Auth-Token
string

Auth_token

 

Search for Emails

Retrieve Email information

 
gethttps://g001.enterprise.ipost.com/api/v1/ClientToken/emails/search/
https://g001.enterprise.ipost.com/api/v1/MyToken/emails/search/
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "metadata": {
    "results": {
      "last": 22,
      "first": 21
    },
    "total_results": "22"
  },
  "data": {
    "email": [
      {
        "EmailSubject": "tbd",
        "EmailID": "5678",
        "EmailFolderID": "987",
        "EmailName": "address_test Copy",
        "EmailType": "PasteHTML",
        "EmailStatus": "Pending",
        "EmailCreationTime": "2017-02-23 03:00:58"
      },
      {
        "EmailCreationTime": "2017-03-17 17:18:49",
        "EmailName": "example_email",
        "EmailStatus": "Pending",
        "EmailType": "DragAndDrop",
        "EmailFolderID": "11",
        "EmailID": "1234",
        "EmailSubject": "This is a test"
      }
    ]
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Query Params

EmailName
string

Full or substring of Email Name. Optional

EmailType
string

Optional. EmailType must be one of 'PasteHTML','DragAndDrop','Text','Template'

EmailPreheader
string

Optional

EmailCreationTimeBefore
date

Emails created before a specified DateTime. Optional.

EmailCreationTimeAfter
date

Emails created after a specified DateTime. Optional.

EmailFolderID
int32

EmailFolderID of parent Email folder. Optional

EmailStatus
string

Status must be one of "Ready", "Pending", "Error". Optional

Start
int32

Optional. It will not include the first N records in the response.

SortBy
string

Optional. SortBy must be one of 'EmailName', 'EmailSubject', 'EmailCreateTime'

SortOrder
string

SortOrder must be a one of ASC or DESC. Optional

Headers

X-Auth-Token
string

Auth_token

 

Retrieve Email

 
gethttps://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/retrieve/
curl --request GET \
  --url https://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/retrieve/
var request = require("request");

var options = { method: 'GET',
  url: 'https://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/retrieve/' };

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

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

url = URI("https://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/retrieve/")

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

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", "https://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/retrieve/");

xhr.send(data);
import requests

url = "https://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/retrieve/"

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

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "FooterID": 1,
    "FolderID": 11,
    "HTML_Body": "<a>Hello {\\var:first_name}!</a>\n",
    "Subject": "My Email Subject",
    "Email_Name": "My_Email",
    "Email_Content_ID": "1234",
    "HeaderID": 4,
    "Language": "UTF-8",
    "Preheader": "",
    "Text_Body": "",
    "Type": "pastehtml"
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Email_Content_ID
int32
required

Headers

X-Auth-Token
string

Auth_token

 

Create Email

Create a new Email

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/emails/create
{
  "Subject": "Welcome to the account",
  "Email_Name": "API created Email",
  "HTML_Body": "<a href=\"http://www.example.com\">Hello!</a><span style='color:blue'>Hi</span>",
  "Preheader": "This is a preheader",
  "HeaderID": "11",
  "FooterID": "12",
  "FolderID": "2",
  "Language": "UTF-8"
}
A binary file was returned

You couldn't be authenticated

{
    "data": {
        "Email_Content_ID": "1234"
    },
    "status": "success"
}

Path Params

ClientToken
string
required

Client-specific Identification String

Body Params

Subject
string
required
Email_Name
string
required
HTML_Body
string

Optional. If present, the email will be saved as type "Paste HTML". If not, it will be of type "Text"

Preheader
string
HeaderID
int32
FooterID
int32
FolderID
int32
Language
string

Optional. Default is UTF-8. Values are the same as in the UI drop-down menu.

Text_Body
string

Headers

X-Auth-Token
string

Auth_token

 

Update Email

Update an existing Email

 
puthttps://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/update
{
  "Subject": "Welcome to the account!",
  "Email_Name": "API created Email - v2",
  "HTML_Body": "<a href=\"http://www.example.com\">Hello!</a><span style='color:red'>Hello</span>",
  "Preheader": "This is a new preheader",
  "HeaderID": "21",
  "FooterID": "22",
  "FolderID": "12",
  "Language": "UTF-8"
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "Response": "SUCCESS"
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Email_Content_ID
int32
required

ID of the email to be updated. To locate the Email_Content_ID, locate the email within the Email Manager. Once located, open the email and the ID can be found as the number at the end of the URL for that page.

Body Params

Subject
string
Email_Name
string

It cannot be changed to the name of another existing email

HTML_Body
string
Preheader
string
HeaderID
int32
FooterID
int32
FolderID
int32
Language
string

Values are the same as in the UI drop-down menu.

Text_Body
string

Headers

X-Auth-Token
string

Auth_token

 

Delete Email

Delete an existing Email

 
deletehttps://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/delete
curl --request DELETE \
  --url https://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/delete
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/delete' };

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

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

url = URI("https://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/delete")

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

request = Net::HTTP::Delete.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("DELETE", "https://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/delete");

xhr.send(data);
import requests

url = "https://g001.enterprise.ipost.com/api/v1/ClientToken/emails/Email_Content_ID/delete"

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

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "Response": "SUCCESS"
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Email_Content_ID
int32
required

ID of the email to be deleted. To locate the Email_Content_ID, locate the email within the Email Manager. Once located, open the email and the ID can be found as the number at the end of the URL for that page.

Headers

X-Auth-Token
string

Auth_token

 

Create Folders

Create new Folder

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/FolderType/folder/add
{
    "ParentFolderID": 1,
    "FolderName": "API test"
}
A binary file was returned

You couldn't be authenticated

{
  "data": {
    "FolderID": "10"
  },
  "status": "success"
}

Path Params

ClientToken
string
required

Client-specific Identification String

FolderType
string
required

One of the following: "Automations", "ContentTemplates", "DataTables", "EmailLists", "Emails", "HeadersFooters", "ImportTemplates", "ListFilters", "SendTemplates", "Snippets"

Body Params

ParentFolderID
int32

If missing, the Folder will be created at the root level.

FolderName
string
required

Headers

X-Auth-Token
string

Auth_token

 

Retrieve Folders

Retrieves the objects of a folder

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/FolderType/folder/retrieve
{
    "ParentFolderID": 1,
    "GetAllFolders": "false"
}
A binary file was returned

You couldn't be authenticated

{
  "data": {
    "FolderID": "1",
    "FolderObjs": [
      {
        "ObjectName": "API test",
        "ObjectType": "folder",
        "ObjectID": "10"
      },
      {
        "ObjectID": "123",
        "ObjectType": "email",
        "Properties": {
          "read_only": 0,
          "content_type": "process",
          "status": null,
          "owner": "test@example.com",
          "modified_date": "2015-05-24T13:52:11+00:00",
          "created_date": "2015-05-24T13:52:11+00:00"
        },
        "ObjectName": "Test Automation"
      }
    ]
  },
  "status": "success"
}

Path Params

ClientToken
string
required

Client-specific Identification String

FolderType
string
required

One of the following: "Automations", "EmailLists", "Emails"

Body Params

ParentFolderID
int32

If not present, the root folder will be considered.

GetAllFolders
string
required

If "true" all folders below the parentFolderID are returned (only folder objects)

Start
int32

Optional. It will not include the first N records in the response.

Headers

X-Auth-Token
string

Auth_token

 

Bulk Import

Import a file

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/bulkimport
{
  "FileLocation": "ftp://username:password@hostname/filelocation/:port",
  "FileType": "csv",
  "FileDestinationObjType": "list",
  "FileDestinationLabel": "List_for_bulk_import",
  "Configuration": "overwrite",
  "ConfirmationEmail": "test@example.com",
  "ConfirmationURL": "",
  "ColumnMapping": [
    "ignore",
    "email_address",
    "ignore",
    "ignore"
  ],
  "IncludeColumnHeaders": true,
  "SkipRows": true,
  "DoubleQuotes": false,
  "FolderId": "5",
  "Separator": ",",
  "ReportEmail": "test@example.com"
 }
A binary file was returned

You couldn't be authenticated

{
  "data": {
    "Status": "Success",
    "import_id": "88"
  },
  "status": "success"
}

Path Params

ClientToken
string
required

Client-specific Identification String

Body Params

FileLocation
string

The URL where the file to be imported is. It supports any of these: [HTTP][HTTPS][FTP][FTPS][SFTP]. Only alphanumeric characters, spaces, dashes ("-") and underscores ("_") are allowed.

FileType
string
FileDestinationObjType
string

Allowed values: "list" or "cdt".

FileDestinationLabel
string

The name of the target List. If not specified, the data will be imported to the All Contacts List.

Configuration
string

Allowed values for Lists: "add-only", "update-only", "add-update" or "overwrite". Allowed Values for CDTs: "add-only", "add-update".

ConfirmationEmail
string
ConfirmationURL
string
ColumnMapping
array of strings

For each field in the target List, indicate whether to "ignore" it for this import or indicate the name of the file column to import data from.

IncludeColumnHeaders
boolean

Pass "true" if the file to import has a header on the first row.

SkipRows
boolean

Passing "true" will skip invalid rows and continue importing the following ones. A value of "false" will stop the import at the first error encounter.

DoubleQuotes
boolean

Indicate whether or not to respect double quotes as a text qualifier

FolderId
int32
Separator
string

One between "," (comma) and "\t" (tab).

ReportEmail
string

Headers

X-Auth-Token
string

Auth_token

 

Bulk Import Status

Check status of a Bulk Import, that can be one of: 'new','inprogress','completed','error'.

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/bulkimportstatus
{
  "ImportId": "123",
  "ImportType": "list"
}
A binary file was returned

You couldn't be authenticated

{
  "data": {
    "task_type": "listupload",
    "status": "completed",
    "id": 88,
    "end_time": "2016-4-24 14:58:23",
    "description": "upload to list List_for_bulk_import",
    "percent": 100,
    "start_time": "2016-4-24 14:58:23"
  },
  "status": "success"
}

Path Params

ClientToken
string
required

Client-specific Identification String

Body Params

ImportId
int32
required

The ID of the Import to check, as per the response of the Bulk Import method

ImportType
string
required

Currently, only "list" is supported.

Headers

X-Auth-Token
string

Auth_token

 

Retrieve Snippets

Retrieve Snippets

 
gethttps://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/search
curl --request GET \
  --url https://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/search
var request = require("request");

var options = { method: 'GET',
  url: 'https://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/search' };

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

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

url = URI("https://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/search")

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

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", "https://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/search");

xhr.send(data);
import requests

url = "https://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/search"

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

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "metadata": {
    "results": {
      "first": 1,
      "last": 2
    },
    "total_results": "2"
  },
  "data": {
    "snippet": [
      {
        "Snippet_ID": 1234,
        "Snippet_Name": "Snippet for welcome emails",
        "HTML_Body": "<p>Welcome to iPost!</p>",
        "FolderID": 5,
      },
      {
        "Snippet_ID": 5678,
        "Snippet_Name": "Another snippet",
        "HTML_Body": "<p>Welcome again to iPost!</p>",
        "FolderID": 10,
      }
    ]
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Query Params

Snippet_Name
string

The name (or part of the name) to perform the search on

Start
int32

Optional. It will not include the first N records in the response.

Headers

X-Auth-Token
string

Auth_token

 

Create Snippet

Create a new Snippet

 
posthttps://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/create
{
	"Snippet_Name": "Snippet for welcome emails",
	"HTML_Body": "<p>Welcome to iPost!</p>",
	"FolderID": 5
}
A binary file was returned

You couldn't be authenticated

{
    "data": {
        "Snippet_ID": "1234"
    },
    "status": "success"
}

Path Params

ClientToken
string
required

Client-specific Identification String

Body Params

Snippet_Name
string
required
HTML_Body
string
required
FolderID
int32

Optional. Default is Root folder

Headers

X-Auth-Token
string

Auth_token

 

Update Snippet

Update an existing Snippet

 
puthttps://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/Snippet_ID/update
{
	"Snippet_Name": "Snippet for welcome emails",
	"HTML_Body": "<p>Welcome again to iPost!</p>",
	"FolderID": 10
}
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "Response": "SUCCESS"
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Snippet_ID
int32
required

Body Params

Snippet_Name
string
HTML_Body
string
FolderID
int32

Headers

X-Auth-Token
string

Auth_token

 

Delete Snippet

Delete an existing Snippet

 
deletehttps://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/Snippet_ID/delete
curl --request DELETE \
  --url https://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/Snippet_ID/delete
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/Snippet_ID/delete' };

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

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

url = URI("https://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/Snippet_ID/delete")

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

request = Net::HTTP::Delete.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("DELETE", "https://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/Snippet_ID/delete");

xhr.send(data);
import requests

url = "https://g001.enterprise.ipost.com/api/v1/ClientToken/snippets/Snippet_ID/delete"

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

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "status": "success",
  "data": {
    "Response": "SUCCESS"
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Snippet_ID
int32
required

ID of the snippet to be deleted

Headers

X-Auth-Token
string

Auth_token

 

Retrieve Mailing Statistics by Mailing ID

 
gethttps://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summary/
curl --request GET \
  --url https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summary/
var request = require("request");

var options = { method: 'GET',
  url: 'https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summary/' };

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

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

url = URI("https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summary/")

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

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", "https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summary/");

xhr.send(data);
import requests

url = "https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summary/"

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

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "Mailing_ID": 1234567,
  "status": "Completed",
  "clientName": "YourCorp, Inc.",
  "reportTime": "2016-09-03 16:30:00",
  "mailing_time_zone": "Pacific Time (US & Canada)",
  "content": {
    "emailId": 6374,
    "emailSubject": "Sample Mailing",
    "emailType": "pastehtml",
    "preheader": "",
  },
  "mailingResults": {
    "sent": 100,
	"delivered": 100,
	"opens": 60,
	"clicks": 35,
	"conversions": 10,
    "bounces": {
        "total": 2,
        "hard": 1,
        "soft": 1
    },
	"optouts": 1
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Mailing_ID
int32
required

Headers

X-Auth-Token
string

Auth_token

 

Retrieve Mailing Statistics by date/time

 
gethttps://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/summary/
curl --request GET \
  --url 'https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/summary/?Type=Type&Value=Value'
var request = require("request");

var options = { method: 'GET',
  url: 'https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/summary/',
  qs: 
   { Type: 'Type',
     Value: 'Value' } };

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

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

url = URI("https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/summary/?Type=Type&Value=Value")

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

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", "https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/summary/?Type=Type&Value=Value");

xhr.send(data);
import requests

url = "https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/summary/"

querystring = {"Type":"Type","Value":"Value"}

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

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "data": {
    {
	  "Mailings": [
		{
		  "Mailing_ID": 1234567,
		  "status": "Completed",
		  "clientName": "YourCorp, Inc.",
		  "reportTime": "2016-09-03 16:30:00",
		  "content": {
			"emailId": 6374,
			"emailSubject": "Sample Mailing",
			"emailType": "pastehtml",
			"preheader": "",
		  },
		  "mailingResults": {
			"sent": 100,
			"delivered": 100,
			"opens": 60,
			"clicks": 35,
			"conversions": 10,
			"bounces": {
				"total": 2,
				"hard": 1,
				"soft": 1
			},
			"optouts": 1
		  }
		},
		{
		  "Mailing_ID": 98765,
		  "status": "Completed",
		  "clientName": "YourCorp, Inc.",
		  "reportTime": "2018-12-31 23:30:00",
		  "content": {
			"emailId": 8384,
			"emailSubject": "Another Mailing",
			"emailType": "pastehtml",
			"preheader": "",
		  },
		  "mailingResults": {
			"sent": 10,
			"delivered": 10,
			"opens": 6,
			"clicks": 3,
			"conversions": 1,
			"bounces": {
				"total": 2,
				"hard": 1,
				"soft": 1
			},
			"optouts": 1
		  }
		}
	  ]
	},
	"metadata": {
      "total_results": "2",
      "results": {
         "last": 2,
         "first": 1
      }
   },
  "status": "success"
}

Path Params

ClientToken
string
required

Client-specific Identification String

Query Params

Type
string
required

Allowed values: "day", "hour".

Value
int32
required
Start
int32

Optional. It will not include the first N records in the response.

Headers

X-Auth-Token
string

Auth_token

 

Retrieve Full Mailing Statistics by Mailing ID

 
gethttps://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summaryFull/
curl --request GET \
  --url https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summaryFull/
var request = require("request");

var options = { method: 'GET',
  url: 'https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summaryFull/' };

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

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

url = URI("https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summaryFull/")

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

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", "https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summaryFull/");

xhr.send(data);
import requests

url = "https://g001.enterprise.ipost.com/api/v1/ClientToken/reporting/Mailing_ID/summaryFull/"

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

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "Mailing_ID": 1234567,
  "status": "Completed",
  "clientName": "YourCorp, Inc.",
  "reportTime": "2016-09-03 16:30:00",
  "mailing_time_zone": "Pacific Time (US & Canada)",
  "content": {
    "emailId": 6374,
    "emailSubject": "Sample Mailing",
    "emailType": "pastehtml",
    "preheader": "",
  },
  "mailingResults": {
    "sent": 100,
	"delivered": 100,
	"opens": 60,
	"clicks": 36,
	"conversions": 10,
    "bounces": {
        "total": 3,
        "hard": 2,
        "soft": 1
    },
	"optouts": 1
  },
  "ispDelivery": {
    {
		"domain": "gmail.com",
		"sent": 50,
		"delivered": 50,
		"opens": 30,
		"clicks": 18,
		"conversions": 5,
		"bounces": 2,
		"optouts": 1
	},
	{
		"domain": "hotmail.com",
		"sent": 50,
		"delivered": 50,
		"opens": 30,
		"clicks": 18,
		"conversions": 5,
		"bounces": 1,
		"optouts": 0
	},
	"links": {
		"url_ID": 9876,
		"url": "https://example.com"
	},
	"details": {
        "campaigns": [],
        "preheader": "",
        "sendMessageOnce": false,
        "ipAddresses": [],
        "sendableDataTable": [],
        "addressDeduplication": true,
        "measurementInterval": null,
        "subjectsForTesting": [
          "my subject"
        ],
        "fromName": "Demo",
        "doOptOut": true,
        "failMxRejections": false,
        "trackOpens": true,
        "name": "my test send",
        "trackLinks": true,
        "fromAddress": "test@example.com",
        "suppressionList": [],
        "subject1": "my subject",
        "emailId": 1234,
        "makeSegments": true,
        "list": [
          {
            "deleted": 0,
            "label": "Target_List",
            "id": 888344
          }
        ],
        "asrSubscriberPreference": 0,
        "emailListsForSuppression": [],
        "testMailing": false,
        "optOutOverride": 0,
        "emailFrequencyLimit": 0,
        "suppressionSendableDataTables": [],
        "throttle": {
          "enabled": false
        },
        "failDnsTimeout": false
    },
	"conversions": {
      "topItemConRevenue": {
        "title": "Climbing Shoes - Men - 6 / Blue",
        "totalRevenue": "204.50",
        "totalQuantityPurchased": 2,
        "brand": "",
        "name": "Climbing Shoes - Men - 6 / Blue",
        "sku": 11
      },
      "averageOrder": "603.83",
      "conversionRate": "10.0%",
      "totalConversion": 10,
      "topItemConCount": {
        "sku": 100005,
        "totalQuantityPurchased": 4,
        "title": "Flashlight - Green",
        "totalRevenue": "599.8",
        "name": "Flashlight - Green",
        "brand": ""
      },
      "itemsCount": 8,
      "totalRevenue": "811.5"
    }
  }
}

Path Params

ClientToken
string
required

Client-specific Identification String

Mailing_ID
int32
required

Headers

X-Auth-Token
string

Auth_token