Release log

PMAPI for partners

v1.2 -

We're proud to announce that our API is now open to partners (also known as resellers). We've called this superset of functionality the Permission Marketing Partner API, or PMPAPI for short. Please take a look at our handy partner guide if you'd like to get your partner integration off to a flying start.

In addition to the brand new auth method we added emailTransaction, loginToken and EmailOptIn endpoints:

Account - partner

Partners can now create accounts.


This endpoint provides details on the features which are available to the account.

AccountFeatures - partner

Partners can control which features an account has access to.

CreditTransfer - partner

Transfer "sms", "email" or "inboxtest" credits between accounts.


Send a confirmed opt-in email with a unique link that's automatically generated.


Your one-stop endpoint for sending HTML content to a single recipient. The HTML content is provided in each transaction rather than depending on an email message.


Generates a token for a specified service which can be used to log in.

User - partner

Partners can control which features an account has access to.

EmailTemplate has arrived!

v1.1.2 -

This week's release introduces the brand new emailTemplate endpoint.


We've added EmailTemplate so you can retrieve or update your email templates.

Pick your competition winners with

v1.1.1 -

Our new endpoint will allow you to quickly pick subscribers at random - perfect for competition winners! We've also lined up a couple of minor updates.


RandomSubscriber will select one or more random subscribers from your account.


keyword can now be 4-64 characters in length.


keyword can now be 1-32 characters in length.


Now supports PUT and POST actions!

The new segmentation tools have arrived!

v1.1.0 -

Drum-roll please! are excited to unveil our industry-leading segmentation endpoints: search and searchExecute.


Target subscribers by how engaged they are with your emails, by where they are in the world, or using any of your existing subscriberProfileFields. Using our XML (docs coming soon), you can create infinitely complex search expressions. Super-duper, if we do say so ourselves!


This does what it says on the tin and executes a search - handy for knowing how many subscribers a search expression returns. This is also the endpoint you need if you want to add the subscribers to a list.

Preparing for new segmentation tools

v1.0.3 - are excited to announce powerful new segmentation tools, coming soon to the PMAPI. Today's minor release paves the way for 2 new segmentation endpoints.


New type and goaltracking attributes have been added. This opens up very powerful possibilities for tracking ecommerce events against individual subscribers with Goal Tracking.

Read more about Goal Tracking.


The type attribute has been deprecated. However, requests will not fail if this field persists.


The search_id attribute is now required, so exactly one of search_id and list_id must be non-null.


The search_id attribute is now required, so exactly one of search_id and list_id must be non-null.

Sorting on null values

v1.0.2 -

This week's minor release has addressed an odd behaviour in pagination.

Request format

Pagination can loop eternally when sorting with a start value of "null". If the total number of resources with "null" value on the sort attribute exceeds the returned page's count, then next will also be "null".

To resolve this strange behaviour, a "null" value in start is now treated as " " (empty string). All resources with a "null" value are omitted from the result set. Pagination is applied to the remaining resources (non-null) according to the supplied sort and reverse arguments.

Improved preview and emailMessageLink

v1.0.1 -

This week's minor release improves performance in preview and enhances emailMessageLink.


The completed attribute is now required in GET requests. Sorting has been removed from completed, subscriber_id, message_id, user_id and recipient.


The task_id attribute (optional) has been introduced for enhanced compatibility with other endpoints.

The PMAPI is now out of beta!

v1.0.0 -

This is a very exciting time for the folks at! We launched the PMAPI in April 2013 and since then we've released 4 major and 8 minor milestones. Each release has shaped the functionality, performance, reliability and accessibility you can see today. Tomorrow, we look forward to integrations of all shapes, sizes and languages!

This release brings a number of improvements to our documentation, many of which are based on feedback we've received from developers who are integrating. We've also tinkered around under the hood, future-proofing and increasing performance. Lastly, a couple of endpoints have seen minor amendments.

All endpoints

The attributes cdate and mdate have been changed from type "int" to "decimal". This is because conditions exist where multiple records are created/modified at the same time, and pagination (when sorted by cdate or mdate) could repeat the same set of results endlessly. Decimalisation allows us to track events up to the millisecond, providing the 'fuzziness' required to progress through pages regardless of bulk actions, but maintaining the same level of accuracy.

Endpoint documentation

We've updated the endpoint page with content from our recently removed 'endpoint flow' guide. This has brought about a much more detailed view of each endpoint, including connections and available verbs.

Request format documentation

Based on feedback we've recently received from integrators, we've elaborated on documentation explaining our use of parameters in 'query string' vs 'request body'.

Automation documentation

We recently integrated with our own API and found some of the hints within the [*]Automation endpoints hard to follow. Hopefully you'll find this easier now!

3rd party Python client library

A third party developer has been working hard to bring a PMAPI client library to Python. If Python's your bag, check it out!


We've added search_id. As we don't currently support search functionality, this attribute can only be read/set with "null" value. Please keep an eye on Twitter for updates on our forthcoming search endpoint(s)!

In addition to search_id, we've rationalised the attributes smsuniquehardbounces and smsuniquesoftbounces into just smsuniquebounces. This change makes GET requests three orders of magnitude faster!


The attribute segmenttype is now required.


Attributes emailsuspended and smssuspended can no longer be used as filters.


We've fixed a bug where mdate was being erroneously returned on POST.

Import has arrived!

v0.5.0 -

This week's release introduces our popular import feature and a minor enhancement to some of our automation endpoints.


Bulk import your subscribers with ease; simply host a .CSV file and tell us where it is!


We've updated most of our [*]Automation endpoints with improved handling of email campaigns. When an email is specified in the event or action phases, that email is now automatically marked as used.

Tracking email opens and clicks

v0.4.0 -

Today's release introduces two new endpoints for better visibility of your subscriber interactions - emailOpen and emailLinkClick. We've also added an attribute for the 409 Conflict error condition.


The platform records when an email was opened by a subscriber. This new endpoint allows you get insight into this data by subscriber or task.


Need to know when a subscriber clicked a link in an email you sent? This new endpoint will tell you exactly that.

409 Conflict

We've added resource_id for the 409 Conflict error condition. If you issue a POST and a resource already exists, use this value to avoid issuing an additional GET request.