The Annelite API is implemented as XML over HTTP. We use HTTP Basic Authentication. When you use the API, you access the system with the same permissions as the user who was authenticated.

The Annelite API is implemented as REST, a simple HTTP GET or POST action. The REST Endpoint URL is:

http://[account-id].annelite.com/api/rest/

By default, REST requests will send a REST response, or a simple XML block. To return the response in REST format, send a parameter “format” in the request with a value of “rest”. When using the REST request method, the response defaults to REST.

A method call returns this:

<?xml version="1.0" encoding="utf-8" ?>
<response stat="ok">
      [xml-payload-here]
</response>

If an error occurs, the following is returned:

<?xml version="1.0" encoding="utf-8" ?>
<response stat="fail" code=”[error-code]”>
    <message>[error-message]</message>
</response>
GLOBAL ERROR CODES

101, 'Bad account ID'
102, 'Authorization method not allowed'
103, 'Not authorized'
104, 'Request signature required'
105, 'Bad request signature'
112, 'Function not found'

API FUNCTIONS
annelite.Contact.getList

Get a list of contacts

Authentication
This method requires authentication.

Arguments
dp_key (Required) The department key
page (Optional) Page number to return, default is 0
per_page (Optional) Number of results per page, default is 500, maximum value is 500

Error Codes
500, 'Bad department key'

Example Response

<contacts>
    <contact>
        <id>22038732</id>
        <first-name>James</first-name>
        <last-name>Bond</last-name>
        <title>Agent</title>
        <company>British Secret Intelligence Service</company>
        <comment>007 on an island populated exclusively by women? We won't see him till dawn!</comment>
        <created-at>2008-08-31T13:55:04.000Z</created-at>
        <updated-at>2008-12-29T15:48:01.000Z</updated-at>
        <contact-emails>
            <email>james.bond@mi6.gov.uk</email>
        </contact-emails>
        <contact-info>
            <info-block label="Default">
                <info type="phone" label="Cell">+44 43593434534</info>
                <info type="fax">+44 43593434534</info>
                <info type="url" label="Work">www.mi6.uk.gov</info>
                <info type="messenger" label="YIM">james.bond</info>
                <info type="free_form_address">PO Box 1300 London SE1 1BD England
                </info>
                <info type="text">Just text field</info>
            </info-block>
            <info-block label="Work">
                <info type="free_form_address" label="HQ">PO Box 1300 London SE1 1BD England
                </info>
            </info-block>
        </contact-info>
        <contact-custom-fields>
            <field type="set" name="Type of Business">
                <value>Groomer</value>
                <value>Rescue</value>
            </field>
            <field type="set" name="Paid or Not Paid">
                <value>Paid</value>
            </field>
            <field type="string" name="Waiting for Brochures?">Yes</field>
            <field type="enum" name="AccountLevel">Level 3</field>
            <field type="date" name="Date Added">2007-03-14T05:00:00.000Z</field>
            <field type="number" name="Invoice #">12381-2893-2964</field>
        </contact-custom-fields>
        <contact-groups>
            <group id="686" name="First" category="Level of interest" />
            <group id="687" name="Second" category="Level of interest" />
            <group id="22014799" name="Sixth" category="Level of interest" />
            <group id="692" name="Cold calling" category="Source" />
            <group id="1615" name="Email" category="Preferred contact" />
        </contact-groups>
        <tags>
            <tag>Blofeld</tag>
            <tag>Dr. No</tag>
            <tag>Scaramanga</tag>
            <tag>goldfinger</tag>
        </tags>
    </contact>
</contacts>
annelite.Contact.getListByGroupId

Get a list of contacts for given contact group ID

Authentication
This method requires authentication.

Arguments
dp_key (Required) The department key
cn_group_id (Required) The contact group ID
page (Optional) Page number to return, default is 0
per_page (Optional) Number of results per page, default is 500, maximum value is 500

Error Codes
500, 'Bad department key'
501, 'Bad contact group id'

Example Response

<contacts>
    <contact>
        <id>22038732</id>
        <first-name>James</first-name>
        <last-name>Bond</last-name>
        <title>Agent</title>
        <company>British Secret Intelligence Service</company>
        <comment>007 on an island populated exclusively by women? We won't see him till dawn!</comment>
        <created-at>2008-08-31T13:55:04.000Z</created-at>
        <updated-at>2008-12-29T15:48:01.000Z</updated-at>
        <contact-emails>
            <email>james.bond@mi6.gov.uk</email>
        </contact-emails>
        <contact-info>
            <info-block label="Default">
                <info type="phone" label="Cell">+44 43593434534</info>
                <info type="fax">+44 43593434534</info>
                <info type="url" label="Work">www.mi6.uk.gov</info>
                <info type="messenger" label="YIM">james.bond</info>
                <info type="free_form_address">PO Box 1300 London SE1 1BD England
                </info>
                <info type="text">Just text field</info>
            </info-block>
            <info-block label="Work">
                <info type="free_form_address" label="HQ">PO Box 1300 London SE1 1BD England
                </info>
            </info-block>
        </contact-info>
        <contact-custom-fields>
            <field type="set" name="Type of Business">
                <value>Groomer</value>
                <value>Rescue</value>
            </field>
            <field type="set" name="Paid or Not Paid">
                <value>Paid</value>
            </field>
            <field type="string" name="Waiting for Brochures?">Yes</field>
            <field type="enum" name="AccountLevel">Level 3</field>
            <field type="date" name="Date Added">2007-03-14T05:00:00.000Z</field>
            <field type="number" name="Invoice #">12381-2893-2964</field>
        </contact-custom-fields>
        <contact-groups>
            <group id="686" name="First" category="Level of interest" />
            <group id="687" name="Second" category="Level of interest" />
            <group id="22014799" name="Sixth" category="Level of interest" />
            <group id="692" name="Cold calling" category="Source" />
            <group id="1615" name="Email" category="Preferred contact" />
        </contact-groups>
        <tags>
            <tag>Blofeld</tag>
            <tag>Dr. No</tag>
            <tag>Scaramanga</tag>
            <tag>goldfinger</tag>
        </tags>
    </contact>
</contacts>
annelite.Contact.CreateOrUpdate

Create or update matched contact

Authentication
This method requires authentication.

Arguments
dp_key (Required) The department key
xml (Required) Xml file content with contact data

Error Codes
500, 'Bad department key'

Example Request (XML)

<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8" ?>
<contact>
    <id>22038732</id>
    <first-name>James</first-name>
    <last-name>Bond</last-name>
    <title>Agent</title>
    <company>British Secret Intelligence Service</company>
    <comment>
        007 on an island populated exclusively by women? We won't see him till dawn!
    </comment>
    <created-at>2008-08-31T13:55:04.000Z</created-at>
    <updated-at>2008-12-29T15:48:01.000Z</updated-at>
    <contact-emails>
        <email>james.bond@mi6.gov.uk</email>
    </contact-emails>
    <contact-info>
        <info-block label="Default">
            <info type="phone" label="Cell">+44 43593434534</info>
            <info type="fax">+44 43593434534</info>
            <info type="url" label="Work">www.mi6.uk.gov</info>
            <info type="messenger" label="YIM">james.bond</info>
            <info type="free_form_address">
                PO Box 1300 London SE1 1BD England
            </info>
            <info type="text">Just text field</info>
        </info-block>
        <info-block label="Work">
            <info type="free_form_address" label="HQ">
                PO Box 1300 London SE1 1BD England
            </info>
        </info-block>
    </contact-info>
    <contact-custom-fields>
        <field type="set" name="Type of Business">
            <value>Groomer</value>
            <value>Rescue</value>
        </field>
        <field type="set" name="Paid or Not Paid">
            <value>Paid</value>
        </field>
        <field type="string" name="Waiting for Brochures?">
            Yes
        </field>
        <field type="enum" name="AccountLevel">Level 3</field>
        <field type="date" name="Date Added">
            2007-03-14T05:00:00.000Z
        </field>
        <field type="number" name="Invoice #">
            12381-2893-2964
        </field>
    </contact-custom-fields>
    <contact-groups>
        <group id="686" name="First" category="Level of interest" />
        <group id="687" name="Second" category="Level of interest" unsubscribed="yes" />
        <group id="22014799" name="Sixth" category="Level of interest" unsubscribed="yes" />
        <group id="692" name="Cold calling" category="Source" />
        <group id="1615" name="Email" category="Preferred contact" />
    </contact-groups>
    <tags>
        <tag>Blofeld</tag>
        <tag>Dr. No</tag>
        <tag>Scaramanga</tag>
        <tag>goldfinger</tag>
    </tags>
</contact>

Example Console Commands

Create contact::

curl -u user:password -d 'api_function=annelite.contact.createOrUpdate&dp_key=DP_KEY&xml=<?xml version="1.0" encoding="UTF-8"?><contact><first-name>James</first-name><last- name>Bond</last-name><title>Agent</title><company>British Secret Intelligence Service</company></contact>' http://[account-id].annelite.com/api/rest

Update contact (add fields Phone +44 43593434534 (cell) and URL www.mi6.uk.gov (work)):

curl -u user:password -d 'api_function=annelite.contact.createOrUpdate&dp_key=DP_KEY&xml=<?xml version="1.0" encoding="UTF-8"?><contact><first-name>James</first-name><last- name>Bond</last-name><contact-info><info-block label="Default"><info type="phone" label="Cell">+44 43593434534</info><info type="url" label="Work">www.mi6.uk.gov</info></info-block></contact-info></contact>' http://[account-id].annelite.com/api/rest

Update contact (replace fields Company, Phone (cell) and URL (work)):

curl -u user:password -d 'api_function=annelite.contact.createOrUpdate&dp_key=DP_KEY&xml=<?xml version="1.0" encoding="UTF-8"?><contact><first-name>James</first-name><last- name>Bond</last-name><company>MI6</company><contact-info><info-block label="Default"><info type="phone" label="Cell">+44 (495) 224-22- 22</info><info type="url" label="Work">www.fsb.ru</info></info- block></contact-info></contact>' http://[account-id].annelite.com/api/rest
annelite.Contact.deleteContactsByEmail

Delete contacts matched by email

Authentication
This method requires authentication.

Arguments
dp_key (Required) The department key
email (Required) Email address

Error Codes
500, 'Bad department key'
506, 'No contacts matched this email'
507, 'Error while deleting contacts'

Example Response

<?xml version="1.0" encoding="utf-8" ?>
<response stat="ok">
    <contacts-deleted>1</contacts-deleted>
</response>
annelite.contact.assignGroupsForMatchedContacts

Assign/remove groups for matched contacts

Authentication
This method requires authentication.

Arguments
dp_key (Required) The department key
xml (Required) Xml file content with contact data

Error Codes
500, 'Bad department key'

Example Request

<?xml version="1.0" encoding="UTF-8"?>
<contact>
	<id>22038732</id>
	<first-name>James</first-name>
	<last-name>Bond</last-name>
	<title>Agent</title>
	<company>British Secret Intelligence Service</company>
	<comment>
		007 on an island populated exclusively by women? We won't
		see him till dawn!
	</comment>
	<created-at>2008-08-31T13:55:04.000Z</created-at>
	<updated-at>2008-12-29T15:48:01.000Z</updated-at>
	<contact-emails>
		<email>james.bond@mi6.gov.uk</email>
	</contact-emails>
	<contact-info>
		<info-block label="Default">
			<info type="phone" label="Cell">+44 43593434534</info>
			<info type="fax">+44 43593434534</info>
			<info type="url" label="Work">www.mi6.uk.gov</info>
			<info type="messenger" label="YIM">james.bond</info>
			<info type="free_form_address">
				PO Box 1300 London SE1 1BD England
			</info>
			<info type="text">Just text field</info>
		</info-block>
		<info-block label="Work">
			<info type="free_form_address" label="HQ">
				PO Box 1300 London SE1 1BD England
			</info>
		</info-block>
	</contact-info>
	<contact-custom-fields>
		<field type="set" name="Type of Business">
			<value>Groomer</value>
			<value>Rescue</value>
		</field>
		<field type="set" name="Paid or Not Paid">
			<value>Paid</value>
		</field>
		<field type="string" name="Waiting for Brochures?">
			Yes
		</field>
		<field type="enum" name="AccountLevel">Level 3</field>
		<field type="date" name="Date Added">
			2007-03-14T05:00:00.000Z
		</field>
		<field type="number" name="Invoice #">
			12381-2893-2964
		</field>
	</contact-custom-fields>
	<contact-groups>
		<group id="686" name="First" category="Level of interest" />
		<group id="687" name="Second" category="Level of interest" unsubscribed="yes"/>
		<group id="22014799" name="Sixth" category="Level of interest" unsubscribed="yes"/>
		<group id="692" name="Cold calling" category="Source" />
		<group id="1615" name="Email" category="Preferred contact" />
	</contact-groups>
	<tags>
		<tag>Blofeld</tag>
		<tag>Dr. No</tag>
		<tag>Scaramanga</tag>
		<tag>goldfinger</tag>
	</tags>
</contact>

Example Console Commands

Adding matched contacts to selected contact group(s):

curl -u user:password -d 'api_function=annelite.contact.assignGroupsForMatchedContacts&dp_key=DP_KEY&xml=<?xml version="1.0" encoding="UTF-8"?><contact><contact-emails><email>james@bond.com</email></contact-emails><contact-groups><group id="159436451"/></contact-groups></contact>' http://[account-id].annelite.com/api/rest

Removal of matched contacts from selected contact group(s):

curl -u user:password -d 'api_function=annelite.contact.assignGroupsForMatchedContacts&dp_key=DP_KEY&xml=<?xml version="1.0" encoding="UTF-8"?><contact><contact-emails><email>james@bond.com</email></contact-emails><contact-groups><group id="159436451" remove="yes"/></contact-groups></contact>' http://[account-id].annelite.com/api/rest