5 Reasons APIs Suck

I have spent much of the last few months working with APIs, and the experience has inspired this list of what’s wrong with APIs:

  1. Exposing an API makes scaling headaches worse

    Preparing for traffic spikes has always been a challenge on the web, when a single link from Slashdot or Digg can send hordes of traffic your way and bring your site to its knees. Yet the situation is even worse if you offer an API, because the code on the other end accessing your API may be unrelenting in its pinging or simply badly written, hammering your infrastructure harder than human visitors ever could.

  2. APIs have no “eyeballs” to “monetize”

    Advertising has long been the lazy man’s substitute for coming up with a real, viable online revenue model. Attract visitors, then just wait for the barrels of money, right? Google’s AdSense and a host of other online advertising tools made it dead-simple to turn visitors into money, if not always much of it. But the “visitors” to your API are other web sites or other services, and even Google hasn’t figured out a way to make a computer interested in seeing an advertisement (yet).

  3. The incentives to expose an API are often weak

    Points 1 and 2, taken together, imply that publishing an API can have real costs in terms of bandwidth, servers, support, and administration. At the same time, there is no obvious revenue model through which to recoup these expenses. This reality can discourage people from making useful APIs available, a point which I’ll post more about soon.

  4. There is no standard way to access an API

    The battle to standardize access to web services has raged for over a decade, producing no clear victor and leaving a trail of abandoned and aborted proposals in its wake. Supporters of WS-* and REST have an almost reflexive distaste for one another. Your web service architecture might be RESTful, but is it “high REST”, “low REST”, or simply “REST-ish”?

  5. APIs are unreliable

    What if an API you rely on is down temporarliy, or, god forbid, permanently? Isn’t it dangerous to build your business on top of a resource controlled by someone else? Users of conventional software packages have contracts or Service Level Agreements to help protect them against these risks. APIs rarely have the types of guarantees offered by other types of hosted software.

Twitters fail whale... a full year ago, Twitters API already had 10x the traffic of its website.

Twitter's "fail whale"... a full year ago, Twitter's API already had 10x the traffic of its website, causing the site to go down repeatedly.

Now, I have an admission: I don’t actually think that APIs suck. APIs have made the internet a much more interesting place, promoting the type of remix culture which can really accelerate innovation. APIs also make economic sense, because they encourage specialization and the associated gains from comparative advantage. In non-economic terms, the availability of APIs encourages creators on the internet to focus on what they’re best at, and leverage APIs for the rest of the functionality they need. Yet in order to realize the full value of APIs and services on the web, we’ll have to find solutions to these five problems. Stay tuned for some of my ideas about a path forward.


Tags: , ,

 
 
 

One Response to “5 Reasons APIs Suck”

  1. Gravatar of Ken Ken
    13. July 2009 at 22:27

    API’s do suck, and they suck hard. I have been working with the Amazon AWS API for the past year and knowing what I know today, I would never even use it.

    What Amazon’s AWS has taught me:

    1. API’s can have ridiculous limits on traffic usage and requests. Someone can steal your API access key which is readily available in any url and you are screwed.

    2. API’s constantly change, and more often than not whatever version you are using is going to become obsolete and forced into retirement, making your site useless.

    3. The documentation for API’s is crap at best. Often times you will find yourself getting confused over conventions because of mistakes in the documentation examples which are using outdated examples

    4. As you mentioned you are dependent on the API. This applies to anything really. Take advertising for example most sites are dependent on Google Adsense, once they give you the boot your site has lost all revenue. Same thing with a job, you are dependent on one job, if you get fired or laid off you need to find a new one.

    Overall, I will avoid complicated API’s that take months to learn. If I use an API it will be for a minuscule part of my site that isn’t detrimental to its success. I would never create a site that is dependent on one or more API’s ever again.

Leave a Reply