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:"FieldLength";s:2:"50";s:9:"MinLength";s:1:"0";s:9:"MaxLength";s:1:"0";s:12:"ApplyDefault";s:0:"";} </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.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.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.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><body>htmlbody</body></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>