AuthSMTP API Access v1.01

NEW: We have a new version of the AuthSMTP web API thats supports message submission and is available as a BETA service to all users.

API Overview

This API is designed to provide remote access to your account details and usage summary. It aims to be a RESTful web service that uses:

  • HTTP (over SSL - i.e. HTTPS)
  • XML
  • HTTP GET/PUT/POST/DELETE

For security the AuthSMTP API can only be accessed over HTTPS - and requires a separate API password to be assigned to your account.

API Functions

basic_user

URL Format: https://secure.authsmtp.com/restful/basic_user/USER-ID

Example: https://secure.authsmtp.com/restful/basic_user/aa12345

...will return a 'basic_user' XML object for the user requested which includes details about the account and current quota usage etc.

ip_allocation

URL Format: https://secure.authsmtp.com/restful/ip_allocation/USER-ID

Example: https://secure.authsmtp.com/restful/ip_allocation/aa12345

...will return a 'ip_allocation' XML object for the user requested which includes the function version and list of IP addresses dedicated to your account. If no IP addresses are allocated to the account it will return an XML error object.

Getting Started

By default API access is NOT enabled - to enable it login to the Control Panel.

Rate Limiting

There is a rate limit on API calls - do not make more than 1 API request every 20 seconds.

If you exceed the query rate limit - your request will return an XML error object indicating you have been rate limited.

Error Handling

You should ensure that your code is able to gracefully handle errors in not being able to transmit messages to our network. While we endeavour to provide maximum availability for our service there is always the possibility of connectivity or other technical issues beyond our (or your) control. Ideally error handling, logging, message queueing (with retry) and monitoring should all be considered.

API Responses

Your API request will generate:

  • An HTTP response (e.g. '401 Not Authorized', or '200 OK').

If the HTTP response is '200 OK' - it will additionally generate:

  • Either An XML error object, or an XML data object.

Typical HTTP responses are:

  • 200 'OK' (expect an XML object in the reply).
  • 401 'Not Authorized' (i.e. no / wrong password was provided).
  • 404 'Not found' (an attempt to call a non-existant function URL was made).
  • 500 'Internal Error' (an error occurred internal to our system while trying process the request).

You can only request your own user_id information via this call - unless you have the user_id and API passwords for other accounts.

v1.01 'basic_user' XML Object returned in response to https://secure.authsmtp.com/restful/basic_user/:


v1.00 'ip_allocation' XML Object returned in response to https://secure.authsmtp.com/restful/ip_allocation/:


v1.00 'error' XML Object returned in response to any non HTTP type error will be:


Field Formats

'version' is the object version

Minor (compatible changes) are reflected by bumping the .xx part, e.g. '1.00' and '1.01' should be compatible (for example - fields have been added only).

Major changes (such as changing the structure, nesting more fields - or changing the names / values for fields) will be reflected with a new Major version number, i.e. the differences between '1.04' and '2.00' would usually require parsing code changes. We will try to keep changes compatible, but obviously can't guarantee this in the future.

A request for data will always return it in the current / highest version number available (i.e. you cannot request data in older formats).

Date Fields

All date fields are in 'YYYY-MM-DD HH:MM:SS' format.

Quantity Fields

All 'quantity' fields (e.g. maximum message size, messages sent etc.) are in plain numeric format (no commas, no decimal places).

Quantity fields can be large - be careful your system copes with large quantities (i.e. >4 billion for some account types). For that reason the 'basic_user' object includes the remaining data / message quotas again, as plain numeric fields.

'next_reset' is the Date / Time the quota will next reset

This can be 'in the past' - if an account is not currently sending mail. If the 'next_reset' is in the past it indicates the quota will reset immediately the next time mail is sent.

'current_datetime' is the current Date / Time on the server

The servers currently track United Kingdom time, this is either UTC, or UTC +1 (aka 'BST' - British Summer Time). This field includes the prevailing offset from UTC, e.g. '+0100' on the end.

Accessing the Data

You cannot use this API with a regular browser. The browser will not provide the username, and password details to the request (in addition the server will not supply the 'WWW-Authenticate' header back to the browser to get it to prompt for these details). Browsers tend to cache results (including errors) - and are not suitable for accessing the API directly.

If you need web browser access to the data - please use the Control Panel (i.e. http://www.authsmtp.com/login/ )

Example code

PHP with 'basic_user' function

The following example PHP code will retrieve the current 'basic user' information for 'myUserID' (presuming this account has been setup with API access) and will display their account information. It is designed to be run from a web page, but can also be used as the basis for command line tools.


PHP with 'ip_allocation' function

The following example PHP code will retrieve the current 'ip_allocation' information for 'myUserID' (presuming this account has been setup with API access) and will display their dedicated IP addresses. It is designed to be run from a web page, but can also be used as the basis for command line tools.


PERL with 'basic_user' function

Same example, but in perl - this is designed to be run from the command line.


C# Example

Note: Older versions of .NET (< 4.5.1) do not consider TLS v1.1 or v1.2 as a viable protocol so will not use them by default - we only support those protocols for the API. This example includes code to force their use.


Ruby Example

This script requires Ruby itself and 'Curb' (Ruby bindings for lib curl).

It will connect to the API, retrieve the data and output the XML to the browser.


If you have any questions or problems with the API please contact us.