What is an API?
I’ve struggled with how to explain how awesome APIs are without getting all fanboy and geeky. The reality is, for me, APIs are the most fascinating and exciting development in recent web history. So, this will not be a discussion of the different protocols or the design theory. That is a VAST discussion where you will be better served by much smarter people.
Here’s a description from Wikipedia:
“In computer programming, an application programming interface (API) is a set of subroutine definitions, protocols, and tools for building application software. In general terms, it is a set of clearly defined methods of communication between various software components. A good API makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer. An API may be for a web-based system, operating system, database system, computer hardware or software library. An API specification can take many forms, but often includes specifications for routines, data structures, object classes, variables or remote calls. POSIX, Windows API and ASPI are examples of different forms of APIs. Documentation for the API is usually provided to facilitate usage and reimplementation.”
Right!?! Isn’t that amazing? The potential!!!
Ok. I know it’s got a lot of nerd speak in it, but what it’s describing is the power of systems to speak to each other in a standard way. Be that a human and a computer or computer to computer. The part I’m most excited about is Web APIs. Again from Wikipedia:
“Web APIs are the defined interfaces through which interactions happen between an enterprise and applications that use its assets, which also is a SLA to specify functional provider and expose the service path or url for its API users, An API approach is an architectural approach that revolves around providing programmable interfaces to a set of services to different applications serving different types of consumers.”
What?
You can send a question or command to a URL, and something will happen. It’s amazing. It’s magical.
Imagine you have a product that allows your users to find generic medications in your neighborhood. How would you know what was available? You could build a MASSIVE database of drugs. Or…
You can ask any one of the APIs at data.gov to give you data. You can search the different datasets to find the medicines without having to create the datasets yourself. By, the way, if you are interested in freely available data, data.gov is a treasure!
On a more practical level, if your product is designed to be used by a bunch of people that are on Twitter, why not use the Twitter API to let them use their Twitter account to log in to your product. Then, they only have to log in to one service and then they are automatically integrated with yours.
There are APIs for food, weather, computational functions and so much more. Pretty much anything you can think of has an API. Some really smart companies have built secondary business models on top of what they already do by utilizing the principles of APIs. Hello Amazon, I’m looking at you. Amazon has a HUGE technical infrastructure that they have to have regardless of what they are doing. So, with some very good API designs, why not make that capacity available to others as a way to capitalize on cycles of computing that are happening anyway.
APIs allow you to provide a broader experience for your customers and they can provide functionality faster than if you had to write it yourself. For instance, I use Shopify for e-commerce systems. I’ve used Shopify on projects with budgets from $7k to several hundreds of thousands of dollars. The reason? They provide a secure and safe credit card processing and account management system WITH and API. I’ve also used Braintree and Stripe for the same reason. They can process credit cards and allow me to take payments without having to write the whole system myself. Awesome! That made accepting credit cards for the SafetyCommitteeApp MUCH easier and safer.
Lastly, you can create your own APIs! In my Python world, I use Django Rest Framework to write my APIs. Then I use that API to do the functions of the application. It’s called eating my own dog food. The reason is, the multiple ways of interacting with data can be explored from the get-go. With this approach, I’m thinking creatively about opportunities form the start.
Clearly, I think that APIs are awesome. It’s really difficult to create services nowadays without them. And thankfully we don’t have to!
Here’s a GREAT video explanation.
As always, lemme know if you have questions.
Join the Conversation
This is the from the archive of an ongoing series called Making Things That Matter. Each week I will send you an email with another step in the process of building products and launching ideas. Signup here to join the conversation.