A public API for your data

Three years ago, the first public release of Write.app was meant to be a personal writing and note storing platform. It was built for its creator's private use and opened up so anyone could use it. But at that point the data was no longer "owned" by its users in the sense that it was stored and controller by the app and users had to rely on a third party (us, Write.app's creators) to get new functionality. Ll that is changing now with the introduction of a new public API.

This past August work began on a rewritten version of Write.app. We never expected the site to become so popular but now that it has its time to step things up and make the experience better for our users. The new Write.app will consist of the public API and an official web client built as two separate apps. This allows us to make the experience better in a number of ways.

  1. Since the official client will consume the public API just like any other client, any pains third parties experience we will too. This means more incentive to fix bugs and make the API better for everyone and not just ourselves.

  2. A better UI. The current interface is hindered by the fact that it relies on the server in such a tightly integrated way. By delivering the interface as a separate JavaScript single page app we'll be able to make a more responsive, easier to use site. This will also help is better organize our back end API so it becomes less buggy, easier to use, more RESTful, and and exponentially easier to add on to and maintain.

  3. Both apps will be more secure. This seems counterintuitive since building an app with a front end client and server API adds more complexity in some cases these problems become somewhat isolated from each other. Decoupling the front end from the back end makes it so that bugs on one side aren't able to have ripple effects as they do now. Bug fixes also become quicker and simpler.

  4. More choice. Allowing third parties to develop against our API means that third parties can now built alternative interfaces to the official client. Don't like the way our official client looks or acts? Want to mash up your data in a way that isn't available using the site? No problem! You'll have access to all of our public data as well as all of your own personal data so you can use it in whatever way suits you best.

  5. More freedom. Opening up our API means more freedom and ownership over your data. Your notes are no longer locked up behind our front end and you can export or destroy anything you've created however you'd like and no longer need to accept whatever our export button gives you.

Who can use the API?

Anyone. If you have a Write.app account you'll have the ability to generate new API keys and access tokens on demand. All users, regardless of their account type will have access to the API. It will he open to any and all third party developers who want to program against it.

Will you pull a Twitter on us?

We think honesty is the best policy and that "I don't know" is an acceptable answer if its true. In this case we want to say no. The purpose of this API isn't just to use Write.app in different ways like Twitter's is. As of now, we encourage developers to create alternative APIs even if they duplicate official functionality. We want you to use out back end but access it in whatever way you like best. If that means a custom client then we're fine with that.

Will there be fees? What's the catch?

The first version of the API will come with complete documentation. Right now there are still questions we need to answer ourselves about access control but what can tell you is this. All users will be able to access the API. It will be free. If the load on our servers becomes too much we may require payment to increase the number of API calls a client can make in a given day. That said, we plan to keep our API free (as in beer) forever.

The first version of the API will be available for personal use only. This means we will not allow developers to create apps for others to access their accounts. If you create an application that allows users to log into their accounts we will deactivate your API key for that application. We do want developers to share their apps with others but we expect the first apps developed against our API to be self hosted applications that allow others to install and use them themselves. This restriction is temporary. Currently authentication is implemented via token headers. We will not support oAuth in API version 1 which is why this restriction will exist. Don't worry, the lack of oAuth is only due to time restraints. We will support oAuth and thus the ability for developers to allow others to access their accounts sometime between version 1.1 and version 2 of the API.

What kind of apps can I build?

Version 1 of the API will allow for many types of apps to be created despite the single user restriction. Here are a few of our favorite ideas:

A self hosted blogging application that uses Write.app as the backend.

Command line tools for piping short notes or long ones to Write.app

Apps for education. For example, you could build a flash card app where subjects are stored in notebooks, note titles are the questions, and note bodies are the answers.

Mashups. Make your Write.app account interact with social networks or integrate Dropbox support to save flat files.

Add features the official API doesn't have. Create shared notebooks. Implement versioning for your notes.

These are just a few ideas of apps that can be created with the new API. Many of those listed are actually features we've thought if implementing but haven't because we want to keep Write.app lean and focused (hey, who knows, we might even add these features later).

The new API will be available in January and we'll be working hard to add support for oAuth shortly after launch. We wanted to set your data free and our new API is just the first step.

More notes