The full Instapaper API is now available for developers. See the Full API documentation to get started.
I’ve made an unusual decision for it that I’d like to explain. I was reluctant to make a full API before now for a few reasons:
- Instapaper has nontrivial operating costs. If a large number of people used it exclusively via someone else’s API app, and never saw the Instapaper website’s ads or purchased the Instapaper iOS app, I’d lose a lot of money supporting those users.
- One of the biggest uses of a full API is to make mobile apps. But Instapaper already has an iOS app, and this generates nearly all of its income. If someone else’s Instapaper app significantly reduced its sales, or forced it to become free to retain a significant userbase, the service might not survive.
Services with venture-capital backing can keep their APIs free in order to get more users, delaying theoretical profitability to an unspecified future date. For a lot of reasons beyond the scope of this post, that’s not the path I’ve chosen for Instapaper. Since it’s a “normal” business that needs to remain profitable to keep operating, it can’t lose money on a very large number of users indefinitely.
Initially, I came up with two options:
- I could limit the API so it couldn’t be used to make a full-featured Instapaper app. This is the method I’ve implemented before today. But people have evaded this by creating unofficial, fragile apps that scrape the website for data. Such hacks cause problems for everyone.
- I could allow full API access only to developers who agree to pay Instapaper a portion of each app’s sale price. But this is legally and financially more complex and time-consuming than it’s worth for most developers (and for Instapaper), and it imposes a lot of constraints.
Those options aren’t very good. But recently, I came up with a third option that I think is much better:
- Full API access, but only for paid-subscriber accounts. In other words, all developers can use the Full API, but it will only work for customers with Instapaper’s $1/month Subscription memberships.
All previous API functionality will remain free and will work for any account. These methods can only add pages to people’s Instapaper accounts, as implemented in many feed readers and Twitter clients. This part of the API is not changing, and it’s now called the Simple API. To clarify:
- If you have already implemented the Instapaper API in your app, you don’t need to change anything.
- If you’re writing support for Instapaper, and all you need to do is add pages to someone’s Instapaper account, they don’t need to be a Subscriber and you can use the Simple API.
- If your app needs to read data from an Instapaper account, it must use the new Full API, and its customers need to be Subscribers.
Instapaper’s own paid and ad-supported free iPhone and iPad apps in the App Store will continue to work for all customers.
The first complete Full API app is Stacks for Instapaper, a Windows Phone 7 client. I’d like to thank its developer, Matthieu Guyonnet-Duluc, for helping me find and fix issues with the API. (I’d like to thank the other developers as well, but their apps aren’t finished yet, and I don’t want to blow their cover.)
This version of the Full API requires OAuth 1.0 with xAuth. I’m investigating support for OAuth 2.0 if there’s enough demand. If you’d like to see it, please let me know.
Finally, thank you all, developers and customers, for showing so much interest in Instapaper that a full-featured API has become one of its most popular feature requests.