What is an API ?
API is an acronym and stands for Application Programming Interface. It’s an interface exposed by an application to allow communication with other ones. Or as defined by Wikipedia : “In computer programming, an application programming interface (API) is a set of subroutine definitions, communication protocols, and tools for building software. In general terms, it is a set of clearly defined methods of communication among various 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.”
Which API do I already use?
Modern Internet is massively build on the use of APIs. Each time you open an app on your favourite phone, the code of this app will interact with many APIs to gather information you requested. The Facebook app will use the Facebook API to get your newsfeed update, your favorite weather app will use the national weather agency API to get you last forecasts, the last trendy game on Android will use the Google Play Games API to gather rankings and achievements, …
Generally speaking, APIs are everywhere. Each time you interact with an application on the internet (website, phone app, …) or in the real world (ATM, train ticket dispenser, payment by credit card, …) there is interaction between this application and a set of APIs.
What is it exactly?
An API is a way to expose functionalities of a software to make it easy for developers to use them programmatically in another software.
Imagine each software as a black box performing complex operations. Each operation supported by the black box requires input parameters to process and provide an output.
To allow developers to use an operation, the black box will provide :
- the format of input parameters
- the protocol to use to send input parameters
- the format of output response
All these informations put together for all supported operations is called the API. Notice that the API do not provide any details on how the input parameters will be internally processed in the black box to provide the output.
In this example, the black box will be a train reservation system allowing customers to buy seats in train operated by a train company. The black box provides following operations :
- search trains by itinerary, date and time (getTrains)
- get seats availability for a given train (getSeatsByTrain)
- get price for a seat in a given train (getSeatPrice)
- book a seat in the train (bookSeat)
The API provider (train company) publish documentation describing input and output formats along side protocols to use to communicate with the black box.
On the other end, developers from a wide set of companies will consume documentation to write relevant piece of code to interact with the train company. These developers are part of :
- online travel agencies allowing customers to book train tickets on website
- mobile travel agencies allowing customers to book train tickets on their smartphones
- B2B software company providing an all in one solution to other companies to manage travel of their employees
- train ticket dispenser provider to install automatic machine in train stations and malls
- a lot more…
Every single application use the same API to provide a service to end users in a relevant context.
API as a business
In the modern age of Internet, API is a technical word with a strong business meaning. Most tech companies in the world provide and monetize an API. Some companies have built their entire business model on their API.
API to access data
Each day, humanity generates 2.5 quintillion bytes. With the rising of collaborative internet and social networks, each human create data that is stored in huge databases. Most famous databases are managed by companies called the GAFA (Google, Amazon, Facebook, Apple). Data stored in these database are accessible for developers by using specific APIs. For example, a developer can use the Product Advertising API from Amazon to access product reviews left by consumers on Amazon websites.
API to link applications
To satisfy every single need, end users have a wide range of applications and each of them will choose the application regarding subjective criteria (design, features, simplicity, …). But end users also want to retrieve information across each applications. Developers strongly use APIs to link applications to each other. Hotel reservation make on the Booking app will be available on the Google Calendar App. Gmail contacts can be used to start a conversation in WhatsApp. All these interactions are made possible by the use of APIs.
API to access a technological expertise
A software developer can face a problem that he can not resolved due to a lack of knowledge. A way to solve the problem without investing too much time and resources is to delegate the needed expertise to a technical provider providing an API. A relevant example is Stripe describing themselves as Online payment processing for internet businesses. Stripe provide a technical solution to let any developer integrate an online payment solution at a glance.
Another example, a product review company such as Trustpilot wants to analyse reviews but do not have any expertise in Natural Language Processing. Developers can choose to use a dedicated API such as Dictanova API to delegate the analysis in minutes.