Today we launched a sweeping update to our popular API. For those who aren’t familiar with it, our API let’s you access almost all of the functionality within Campaign Monitor from your own applications. Send a campaign, sync your subscribers, add a new client and so much more, all from your own application. It’s what all our integrations and plugins are built on.
Our API is getting pretty darn popular these days with more than 70 requests per second, which grows considerably during our busiest times. Yeah, that number blew me away too.
This update is a complete rethink of our API infrastructure and includes a pile of new functionality that you guys have been asking for. Given the significance of this update, we’ve gone to a completely new version of the API (hello, Version 3). We’ve also redesigned our API documentation, which is now much easier to navigate and includes everything you need to get started.
While there are loads of goodies packed into this update, here are a few of the major highlights that stand out.
RESTful all the way
One of the biggest changes in this new version is that the entire API is now RESTful. This means we’ve gone for a resource oriented architecture with descriptive URIs that should be easy to follow. Input and output is now supported in both
JSON. If you’re interested, we’ve gone into a lot more detail about this new approach in our new docs.
Segments are here
Previously you had no way of managing segments via the API. Now you can create them, add new rules, get the subscribers that match a segment and so much more. Check out the docs to get started.
Import multiple subscribers in a batch
One of the more frustrating parts of the previous API was that subscribers had to be imported one at a time. Not a problem for a smaller list, but when you’re trying to import a list of 20,000 subscribers, things can get ugly. Now you can easily import a large list of subscribers, including custom field data in a batch. Here are the docs covering this new functionality.
Real-time activity for subscribers and campaigns
This one is awesome. You can now access your entire history with any subscriber in your account. This includes all campaigns they were sent, when they opened it, when the clicked a link and much more. For every event like an open or click, we’ll also return exactly when it happened, along with the IP address it happened from, opening the door to some very cool geo-location possibilites with the API.
The same data is also now available on a per-campaign basis. For example, you can see when all the opens for a particular campaign happened including who opened, the time of the open and the IP address it happened from. The same data is available for clicks and unsubscribes too.
Monthly billing for clients
When we launched monthly billing a couple of months back, we didn’t get a chance to update the API to match. Now you can easily set a client as paying monthly, set their mark-up percentage and even the currency they should be paying in each month. Here are all the details you need to get started.
Better draft handling
While the previous version of the API let you create and send campaigns, there was limited functionality around draft campaigns. You can now easily get a list of all draft campaigns for a client, delete a draft and easily send a preview of a draft to any number of email addresses.
This is a huge improvement for anyone working with a large number of results from the API. Any requests that typically return a large set of results now offer paging where you can split the results over multiple pages. You even have complete control over how these results should be returned including page sizes, sort order and sort direction.
Wrappers in Ruby, Python, PHP and .NET ready to roll
We didn’t want to leave you empty handed with the new version of the API, so all popular API wrappers have been updated for the new API. Each wrapper covers all of the new functionality too, so you can get up and going in Ruby, Python, PHP and .NET extremely quickly.
Are you still supporting v2 of the API?
Absolutely. While we strongly encourage anyone working with the API to move towards the latest version, we’ll continue to support version 2 and all of the existing plugins and integrations that rely on it. You can access the Version 2 API docs at their new home here.
Go forth and build
Now that all of this new functionality is out in the wild, we can’t wait to see what you guys come up with. We’ve put a lot of work into making the snazzy new API documentation as clear as possible, but please let us know if you think we’re missing something or if anything is unclear. And as always, make sure you get in touch if you release anything that connects to it.