An Application Programming Interface (API) is like a pneumatic tube that enables software to exchange messages with other software, enabling them to get stuff done in an integrated fashion. When we use the term “API”, we can refer either to the document detailing how to create and use this connection, or the actual implemented connection itself.

You can think of an API as a counterpart to a UI (user interface). A user interface communicates messages between a computer program and a human person, often by displaying graphics, printing out text, and making noises. An API, by contrast, is only meant to be seen by a programmer who wants to incorporate it into other software. You might think of an API like a menu at a restaurant or a car wash—a list of capabilities, the information required to use them, and sometimes what you get back in return. There different terms to describe these, depending on the particular technologies involved: methods, endpoints, subroutines, definitions, or requests.

Sometimes an API is just a standard way of communicating between multiple programs, where both the calling software and the receiving software can be implemented in whatever way satisfies the API’s needs. For example, Microsoft maintains the Windows API from older versions of its operating system, so that old applications (callers) can keep running on newer versions of Windows (the receiver).