YNOT Mail API

Table of Contents

1. Public API Reference

1.1. API Overview

API URL: https://www.ynotmail.com/clients/remote-api.php

API call is a valid XML document sent as HTTP POST body.

The root element is xmlrequest. Request MUST contain following elements:

  • username
  • usertoken
  • requesttype
  • requestmethod
  • details

The details element contains parameteres for the method being called. This element may be repeated multiple times in a single request to call same API method with different parameters.

A sample request may look like this:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>YOUR USERNAME GOES HERE</username>
    <usertoken>YOUR API KEY GOES HERE</usertoken>
    <requesttype>someApiSection</requesttype>
    <requestmethod>someApiMethod</requestmethod>
    <details>
        <someScalarParam>scalarValue</someScalarParam>
        <someComplexParam>
            <someField>fieldValue</someField>
            <otherField>otherValue</otherValue>
        </someComplexParam>
    </details>
</xmlrequest>

Assuming a xml request is stored in variable $XML the API may be tested using curl command line tool

curl --request POST --url https://www.ynotmail.com/clients/remote-api.php --data "$XML"

Server response's root element is response. Then for each details section in request there are a status element. Possible status values are FAILED and SUCCESS. Each status element is then followed by either data or errormessage element. Contents of the errormessage element is always a string with failure reause. Contents of the data element will depend on method called.

A sample success response may look like this:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>123</data>
</response>

A sample error response may look like this:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
<status>FAILED</status>
<errormessage>The XML you provided is not valid. Please check your XML document and try again.</errormessage>
</response>

1.2. Mailing

1.2.1. createList

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>createList</requestmethod>
    <details>
        <list>
            <name>Test List</name>
            <ownerEmail>owner@email.com</ownerEmail>
            <ownerName>Owner Name</ownerName>
            <replyEmail>reply@email.com</replyEmail>
            <companyName>Company Name</companyName>
            <companyAddress>Company Address</companyAddress>
            <companyPhone>companyphone</companyPhone>
        </list>
    </details>
</xmlrequest>

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>123</data>
</response>

Here the data element contains a new list ID.

1.2.2. getLists

Fetch all available lists

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>getLists</requestmethod>
    <details>
        <void/>
    </details>
</xmlrequest>

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>
        <item>
            <listid>111</listid>
            <name>List name 1</name>
            <subscribecount>1</subscribecount>
        </item>
        <item>
            <listid>123</listid>
            <name>List name 2</name>
            <subscribecount>4</subscribecount>
        </item>
    </data>
</response>

1.2.3. deleteList

Delete given list

<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>deleteList</requestmethod>
    <details>
        <listId>123</listId>
    </details>
</xmlrequest>

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>OK</data>
</response>

1.2.4. addSubscriberToList

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>addSubscriberToList</requestmethod>
    <details>
        <listId>123</listId>
        <subscriber>
            <email>test@example.com</email>
            <format>html</format>
            <confirmed>confirm</confirmed>
            <customfields>
                <field8>Foo</field8>
                <field11>Bar</field11>
            </customfields>
        </subscriber>
    </details>
</xmlrequest>

The customfields and confirmed elements are optional.

The confirmed element may take one of the following values: c, confirm, u, unconfirm. Default is confirm.

The customfields element contains custom subscribers data. See mailing::bindCustomField and mailing::listCustomFields for details.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>123</data>
</response>

Here the data element contains a new subscriber ID.

1.2.5. bindCustomField

Bind or unbind existing custom fields to a list.

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>bindCustomField</requestmethod>
    <details>
        <listId>123</listId>
        <fields>
            <field8>1</field8>
            <field11>0</field11>
        </fields>
    </details>
</xmlrequest>

fieldXX - 1 to bind, 0 to unbind.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>OK</data>
</response>

1.2.6. listCustomFields

List all custom fields or custom fields bound to a list.

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>listCustomFields</requestmethod>
    <details>
        <listId>123</listId>
    </details>
</xmlrequest>

Set listId to 0 to list all available custom fields. Set it to list ID to list custom fields bound to a particular list.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>
        <item>
            <fieldid>8</fieldid>
            <name>City</name>
            <fieldtype>text</fieldtype>
            <defaultvalue></defaultvalue>
            <required>0</required>
            <fieldsettings>a:4:{s:11:&quot;FieldLength&quot;;s:2:&quot;50&quot;;s:9:&quot;MinLength&quot;;s:1:&quot;0&quot;;s:9:&quot;MaxLength&quot;;s:1:&quot;0&quot;;s:12:&quot;ApplyDefault&quot;;s:0:&quot;&quot;;}
            </fieldsettings>
            <createdate>1284159594</createdate>
            <ownerid>1</ownerid>
            <isglobal>1</isglobal>
            <listid>263</listid>
        </item>
        <item>
            <fieldid>11</fieldid>
            <name>Country</name>
            <fieldtype>dropdown</fieldtype>
            <defaultvalue></defaultvalue>
            <required>0</required>
            <fieldsettings>serialized settings</fieldsettings>
            <createdate>1284159594</createdate>
            <ownerid>1</ownerid>
            <isglobal>1</isglobal>
            <listid>263</listid>
        </item>
    </data>
</response>

1.2.7. createNewsletter

Create a new newsletter

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>createNewsletter</requestmethod>
    <details>
        <newsletter>
            <name>Test Newsletter</name>
            <subject>Test Subject</subject>
            <textbody>Test text body</textbody>
            <htmlbody><![CDATA[<html><body><p>Test <b>html</b> body</p></body></html>]]></htmlbody>
        </newsletter>
    </details>
</xmlrequest>

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>456</data>
</response>

Here the data element contains a new newsletter ID.

1.2.8. sendNewsletter

Send newsletter to chosen list

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>sendNewsletter</requestmethod>
    <details>
        <newsletterId>456</newsletterId>
        <listId>123</listId>
        <sendFromEmail>fromemail@example.com</sendFromEmail>
        <sendFromName>From Name</sendFromName>
        <replyToEmail>toemail@example.com</replyToEmail>
    </details>
</xmlrequest>

Here sendFromEmail, sendFromName and replyToEmail are optional. If they not set will be picked from the list settings.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>OK</data>
</response>

1.2.9. getNewsletter

Fetch newsletter settings

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>getNewsletter</requestmethod>
    <details>
        <id>456</id>
    </details>
</xmlrequest>

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>
        <newsletterid>456</newsletterid>
        <name>Test Newsletter</name>
        <htmlbody>&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;
            test
            &lt;/body&gt;&lt;/html&gt;</htmlbody>
        <subject>Subject</subject>
        <textbody>Text body</textbody>
    </data>
</response>

1.2.10. updateNewsletter

Update existing newsletter

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>updateNewsletter</requestmethod>
    <details>
        <id>456</id>
        <data>
            <subject>New subject</subject>
            <htmlbody>&lt;html&gt;html&lt;/html&gt;</htmlbody>
            <textbody>Optional text body</textbody>
            <name>Internal newsletter name</name>
        </data>
    </details>
</xmlrequest>

Currently only name, subject, textbody and htmlbody properties can by updated. All fields are optional.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>OK</data>
</response>

1.2.11. getNewslettersList

Fetch a list of available newsletters

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>getNewslettersList</requestmethod>
    <details>
        <permissionType>send</permissionType>
    </details>
</xmlrequest>

Here permissionType is either send, edit or delete.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>
        <item>
            <newsletterid>123</newsletterid>
            <name>plain text</name>
        </item>
        <item>
            <newsletterid>456</newsletterid>
            <name>Test Newsletter</name>
        </item>
    </data>
</response>

1.2.12. getSegments

Fetch a list of available sements

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>getSegments</requestmethod>
    <details>
        <void/>
    </details>
</xmlrequest>

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>
        <item>
            <segmentid>123</segmentid>
            <name>Test segment</name>
        </item>
    </data>
</response>

1.2.13. sendNewsletterToSegment

Send newsletter to chosen segment

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>mailing</requesttype>
    <requestmethod>sendNewsletterToSegment</requestmethod>
    <details>
        <newsletterId>456</newsletterId>
        <segmentId>123</segmentId>
        <sendFromEmail>fromemail@example.com</sendFromEmail>
        <sendFromName>From Name</sendFromName>
        <replyToEmail>toemail@example.com</replyToEmail>
    </details>
</xmlrequest>

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>OK</data>
</response>

1.3. Subscribers

1.3.1. setConfirmedStatus

Confirm or unconfirm subscriber

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>setConfirmedStatus</requestmethod>
    <details>
        <subscriberId>321</subscriberId>
        <listId>123</listId>
        <status>confirm</status>
    </details>
</xmlrequest>

Here subscriberId is either integer subscriber ID or email address. Status is either c or confirm or u or unconfirm.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>OK</data>
</response>

1.3.2. getConfirmedStatus

Check whether subscriber is confirmed or not

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>getConfirmedStatus</requestmethod>
    <details>
        <listId>123</listId>
        <subscriberId>test@email.com</subscriberId>
    </details>
</xmlrequest>

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>confirmed</data>
</response>

Possible reported statuses are confirmed or unconfirmed.

1.3.3. setActivityStatus

Activate or deactivate subscriber

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>setActivityStatus</requestmethod>
    <details>
        <listId>123</listId>
        <subscriberId>321</subscriberId>
        <status>unsubscribed</status>
    </details>
</xmlrequest>

Here subscriberId is either integer subscriber ID or email address. Status is either active or unsubscribed.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>OK</data>
</response>

1.3.4. getActivityStatus

Fetch subscriber's activity status

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>getActivityStatus</requestmethod>
    <details>
        <listId>123</listId>
        <email>test@email.com</email>
    </details>
</xmlrequest>

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>
        <listId>123</listId>
        <status>bounced</status>
    </data>
</response>

Possible reported statuses are bounced, unsubscribed, active.

1.3.5. deleteSubscriber

Delete subscriber from list

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>deleteSubscriber</requestmethod>
    <details>
        <listId>123</listId>
        <subscriberId>321</subscriberId>
    </details>
</xmlrequest>

Here subscriberId is either integer subscriber ID or email address.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>OK</data>
</response>

1.3.6. updateSubscriber

Update existing subscriber

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>username</username>
    <usertoken>token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>updateSubscriber</requestmethod>
    <details>
        <listId>123</listId>
        <subscriberId>321</subscriberId>
        <customFields>
            <field11>US</field11>
            <field111></field111>
        </customFields>
    </details>
</xmlrequest>

Here subscriberId is either integer subscriber ID or email address. <fieldNN> is <field1>, <field2>, etc are custom fields assigned to the given list. Use empty <fieldNN> element to remove custom field data for the subscriber. In example above field #11 value will be set to US and field #111 will be removed.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>2 fields updated.</data>
</response>

1.3.7. moveSubscriber

Move existing subscriber to another list

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>username</username>
    <usertoken>token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>moveSubscriber</requestmethod>
    <details>
        <listId>123</listId>
        <subscriberId>321</subscriberId>
        <newListId>456</newListId>
    </details>
</xmlrequest>

Here listId is a current subscriber's list, subscriberId is either integer subscriber ID or email address, newListId is a destination list ID

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>OK</data>
</response>

1.3.8. getSubscribers

Fetch subscribers matching given criteria

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>getSubscribers</requestmethod>
    <details>
        <searchinfo>
            <List>123</List>
        </searchinfo>
        <sortdetails>
            <SortBy>subscriberid</SortBy>
            <Direction>asc</Direction>
            <Limit>2</Limit>
            <Offset>0</Offset>
        </sortdetails>
    </details>
</xmlrequest>

Here searchinfo\List is a mandatory parameter, sorrtdetails is completely optional. Any combination of sortdetails fields may be used. SortBy is either subscriberid or emailaddress (default), Direction is either asc (default) or desc, Limit is a maximum number of records to return (default is 100, maximum is 500), Offset is a number of records to skip (default is 0).

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>
        <count>8</count>
        <subscriberlist>
            <item>
                <subscriberid>123</subscriberid>
                <emailaddress>test123@email.com</emailaddress>
                <format>h</format>
                <subscribedate>1398748886</subscribedate>
                <confirmed>1</confirmed>
                <unsubscribed>0</unsubscribed>
                <bounced>0</bounced>
                <listid>123</listid>
                <listname>Test List</listname>
            </item>
            <item>
                <subscriberid>1234</subscriberid>
                <emailaddress>test1234@email.com</emailaddress>
                <format>h</format>
                <subscribedate>1467855977</subscribedate>
                <confirmed>1</confirmed>
                <unsubscribed>0</unsubscribed>
                <bounced>0</bounced>
                <listid>123</listid>
                <listname>Test List</listname>
            </item>
        </subscriberlist>
    </data>
</response>

1.3.9. getSubscriberData

Fetch subscriber details either by ID or by email address

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>getSubscriberData</requestmethod>
    <details>
        <listId>123</listId>
        <subscriber>test123@email.com</subscriber>
    </details>
</xmlrequest>

Here subscriber is a subscriber's ID or email address. Both listId and subscriber parameters are mandatory.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>
        <subscriberid>123</subscriberid>
        <unsubscribetime></unsubscribetime>
        <unsubscribeip></unsubscribeip>
        <unsubscriberequesttime></unsubscriberequesttime>
        <unsubscriberequestip></unsubscriberequestip>
        <listid>123</listid>
        <emailaddress>test123@email.com</emailaddress>
        <format>h</format>
        <confirmed>1</confirmed>
        <requestdate>1519885331</requestdate>
        <requestip></requestip>
        <confirmdate>1519885331</confirmdate>
        <confirmip></confirmip>
        <subscribedate>1519885331</subscribedate>
        <bounced>0</bounced>
        <unsubscribed>0</unsubscribed>
        <unsubscribeconfirmed>0</unsubscribeconfirmed>
        <field2>Foo</field2>
        <field3>Bar</field3>
    </data>
</response>

1.3.10. checkSuppression

Check if email address or domain is present in suppression lists

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>checkSuppression</requestmethod>
    <details>
        <email>test123@email.com</email>
        <listId>u</listId>
    </details>
</xmlrequest>

Here email is either email address or domain name started with "@" symbol, listId is either numeric list ID or "u" for user-wide suppressions

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
<status>SUCCESS</status>
<data>by domain per user, by email per user</data>
</response>

1.3.11. suppressEmail

Suppress email address or domain

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>suppressEmail</requestmethod>
    <details>
        <email>test123@email.com</email>
        <listId>u</listId>
    </details>
</xmlrequest>

Here email is either email address or domain name started with "@" symbol, listId is either numeric list ID or "u" for user-wide suppressions

<?xml version="1.0" encoding="UTF-8" ?>
<response>
<status>SUCCESS</status>
<data>OK</data>
</response>

1.3.12. unsuppressEmail

Suppress email address or domain

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-token</usertoken>
    <requesttype>subscribers</requesttype>
    <requestmethod>unsuppressEmail</requestmethod>
    <details>
        <email>test123@email.com</email>
        <listId>u</listId>
    </details>
</xmlrequest>

Here email is either email address or domain name started with "@" symbol, listId is either numeric list ID or "u" for user-wide suppressions

<?xml version="1.0" encoding="UTF-8" ?>
<response>
<status>SUCCESS</status>
<data>OK</data>
</response>

1.4. Statistics

1.4.1. getNewsletters

Fetch statistics for recent newsletters

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>stats</requesttype>
    <requestmethod>getNewsletters</requestmethod>
    <details>
        <offset>0</offset>
    </details>
</xmlrequest>

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>
        <item>
            <statid>111</statid>
            <newsletterid>456</newsletterid>
            <name>Test Newsletter</name>
            <lists>Test List</lists>
            <starttime>1514196241</starttime>
            <finishtime>1514196244</finishtime>
            <recipients>1</recipients>
            <bounces>0</bounces>
            <unsubscribes>0</unsubscribes>
            <clicks>0</clicks>
            <opens>1</opens>
        </item>
        <item>
            <statid>222</statid>
            <newsletterid>999</newsletterid>
            <name>Another Test Newsletter</name>
            <lists>Test List</lists>
            <starttime>1513589582</starttime>
            <finishtime>1513589762</finishtime>
            <recipients>1</recipients>
            <bounces>0</bounces>
            <unsubscribes>0</unsubscribes>
            <clicks>0</clicks>
            <opens>1</opens>
        </item>
    </data>
</response>

1.4.2. getNewsletterStats

Fetch detailed statistics for given campaign

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>stats</requesttype>
    <requestmethod>getNewsletterStats</requestmethod>
    <details>
        <statid>111</statid>
        <from>1514196241</from>
        <to>1514196244</to>
    </details>
</xmlrequest>

Here statid is a campaign id from previous request. Both from and to parameters are date constraints in UNIX timestamp format, both are optional.

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>
        <statid>111</statid>
        <recipients>1</recipients>
        <bounces>0</bounces>
        <unsubscribes>0</unsubscribes>
        <clicks>0</clicks>
        <opens>1</opens>
        <opens-unique>1</opens-unique>
        <clicks-unique>0</clicks-unique>
    </data>
</response>

1.5. Autoresponders

1.5.1. create

Create an autoresponder

Sample request:

<?xml version="1.0" encoding="UTF-8" ?>
<xmlrequest>
    <username>login</username>
    <usertoken>api-key</usertoken>
    <requesttype>autoresponders</requesttype>
    <requestmethod>create</requestmethod>
    <details>
        <listId>123</listId>
        <autoresponder>
            <htmlbody>&lt;body&gt;htmlbody&lt;/body&gt;</htmlbody>
            <name>test name</name>
            <subject>test subject</subject>
        </autoresponder>
        <sendFromEmail>from@example.com</sendFromEmail>
        <sendFromName>from name</sendFromName>
        <replyToEmail>reply@example.com</replyToEmail>
    </details>
</xmlrequest>

Sample response:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <status>SUCCESS</status>
    <data>OK</data>
</response>