API

Application Programming Interfaces (APIs) enable communication between two or more computer programs or parts of a system, by providing a shared language between different components or types of software.

Overview
An application programming interface is a type of interface that is designed for other software as the interface's intended users.

In computing, an interface is a "shared boundary or connection between two dissimilar objects, devices, or systems through which information is passed.” [12] The purpose of an application programming interface is to make it easier to pass information across the boundary between one computer program and another.

Because APIs are a fairly abstract concept, it can be helpful to think of them as analagous to a more familiar and concrete type of interface that many people interact with daily: user interfaces. User interfaces are the boundary where humans and computers meet. They are designed with the needs of humans in mind. User interfaces seek to translate information from the computer so that it is accessible and actionable for a human user.

The purpose of a user interface for software is generally twofold:

to provide a representation of a software application's functionality, presented in a way that the intended user can understand

to enable the user to perform actions with the software.

For example, graphical user interfaces (GUIs) for computer operating systems (software such as Microsoft Windows, Mac OS, or Linux) commonly provide a pictorial representation of a computer’s file system as a physical desktop and folders, with a menu of options for available actions. Other widely-used GUIs, such as email applications or web browsers, represent complex computing operations with a simple graphic indicator that a person can easily interact with, such as the “Send” button for an email, or a web browser's “Back” button. These examples demonstrate how the user interface for software can enable a user to perform actions without requiring that they interact with or know anything about the underlying code that is required to make their actions possible.

Application programming interfaces perform a similar role, except that their intended user is other software. Accordingly, APIs employ representations that are well-suited for interpretation by software. APIs provide an interface that represents a software's functionality in a way that other software programs and services can understand and interact with. They enable other software programs and services to access information and to perform actions. APIs translate the complex details of software into a condensed, clearly-defined syntax that other software can use to formulate complex computing operations as fairly simple requests, without needing to interact with the underlying code.

Types of APIs
There are many different types of APIs at all levels of computing, such as APIs for computer hardware, for operating systems, or for software libraries. [2] In each of these contexts, the purpose of an API is to describe and provide access to particular functionality without requiring compatibility of the underlying technologies or interaction with the actual code.