HOME

TheInfoList




In
computing Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes and development of both computer hardware , hardware and software. It has sci ...

computing
, an application programming interface (API) is an
interface Interface or interfacing may refer to: Academic journals * Interface (journal), ''Interface'' (journal), by the Electrochemical Society * ''Interface, Journal of Applied Linguistics'', now merged with ''ITL International Journal of Applied Lin ...
that defines interactions between multiple
software application Application software (app for short) is computing software designed to carry out a specific task other than one relating to the operation of the computer itself, typically to be used by end-users. Examples of an application Application may refer ...
s or mixed
hardware Hardware may refer to: Technology Computing and electronics * Computer hardware, physical parts of a computer * Digital electronics, electronics that operate on digital signals * Electronic component, device in an electronic system used to affect e ...

hardware
-software intermediaries. It defines the kinds of calls or requests that can be made, how to make them, the data formats that should be used, the conventions to follow, etc. It can also provide extension mechanisms so that users can extend existing functionality in various ways and to varying degrees. An API can be entirely custom, specific to a component, or designed based on an industry-standard to ensure
interoperability Interoperability is a characteristic of a product or system, whose interfaces are completely understood, to work with other products or systems, at present or in the future, in either implementation or access, without any restrictions. While the ...

interoperability
. Through
information hiding In computer science Computer science deals with the theoretical foundations of information, algorithms and the architectures of its computation as well as practical techniques for their application. Computer science is the study of Algor ...
, APIs enable
modular programming Modular programming is a software design technique that emphasizes separating the functionality of a Computer program, program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the ...
, allowing users to use the interface independently of the implementation. Reference to
Web API A web API is an application programming interface In computing Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes and develop ...

Web API
s is currently the most common use of the term. There are also APIs for
programming language A programming language is a formal language In mathematics Mathematics (from Ancient Greek, Greek: ) includes the study of such topics as quantity (number theory), mathematical structure, structure (algebra), space (geometry), and calcu ...

programming language
s, software libraries, computer
operating system An operating system (OS) is system software System software is software designed to provide a platform for other software. Examples of system software include operating systems (OS) like macOS, Linux, Android (operating system), Android and Mi ...

operating system
s, and computer hardware. APIs originated in the 1940s, though the term ''API'' did not emerge until the 1960s and 70s.


Purpose

In building applications, an API (application programming interface) simplifies programming by abstracting the underlying implementation and only exposing objects or actions the developer needs. While a graphical interface for an
email client Image:Thunderbird 91.4.1 screenshot.png, 250px, Mozilla Thunderbird email client user interface on a Linux operating system An email client, email reader or, more formally, message user agent (MUA) or mail user agent is a computer program used to ...
might provide a user with a button that performs all the steps for fetching and highlighting new emails, an API for file
input/output In computing Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithm of an algorithm (Euclid's algorithm) for calculating the greatest commo ...
might give the developer a
function Function or functionality may refer to: Computing * Function key A function key is a key on a computer A computer is a machine that can be programmed to carry out sequences of arithmetic or logical operations automatically. Modern comp ...
that copies a file from one location to another without requiring that the developer understand the
file system In computing Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes and development of both computer hardware , hardware and softwa ...
operations occurring behind the scenes.


History of the term

The meaning of the term ''API'' has expanded over its history. It first described an interface only for end-user-facing programs, known as
application program Application software (app for short) is computing software designed to carry out a specific task other than one relating to the operation of the computer itself, typically to be used by end-users. Examples of an application Application may refer ...
s. This origin is still reflected in the name "application programming interface." Today, the term API is broader, including also
utility software Utility software is software designed to help analyze, configure, optimize or maintain a computer. It is used to support the computer infrastructure Infrastructure is the set of fundamental facilities and systems that support the sustainable funct ...
and even hardware interfaces. The idea of the API is much older than the term. British computer scientists Wilkes and
Wheeler Wheeler may refer to: Places United States * Wheeler, Alabama Wheeler (also known as Wheeler Station) is an unincorporated area, unincorporated community in Lawrence County, Alabama, Lawrence County, Alabama, United States. Wheeler had a United St ...
worked on modular software libraries in the 1940s for the
EDSAC The Electronic delay storage automatic calculator (EDSAC) was an early British computer. Inspired by John von Neumann's seminal ''First Draft of a Report on the EDVAC'', the machine was constructed by Maurice Wilkes and his team at the University ...
computer. Their book ''
The Preparation of Programs for an Electronic Digital Computer ''The Preparation of Programs for an Electronic Digital Computer'' (sometimes called ''WWG'', after its authors' initials) was the first book on computer programming Computer programming is the process of designing and building an executable ...
'' contains the first published API specification.
Joshua Bloch Joshua J. Bloch (born August 28, 1961) is an American software engineer A software engineer is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of computer software ...
claims that Wilkes and Wheeler "latently invented" the API, because it is more of a concept that is discovered than invented. The term "application program interface" (without an ''-ing'' suffix) is first recorded in a paper called ''Data structures and techniques for remote
computer graphics Computer graphics deals with generating images with the aid of computers. Today, computer graphics is a core technology in digital photography, film, video games, cell phone and computer displays, and many specialized applications. A great dea ...

computer graphics
'' presented at an
AFIPS The American Federation of Information Processing Societies (AFIPS) was an umbrella organization of professional societies established on May 10, 1961, and dissolved in 1990. Its mission was to advance knowledge in the field of information science ...
conference in 1968. The authors of this paper use the term to describe the interaction of an application — a graphics program in this case — with the rest of the computer system. A consistent application interface (consisting of
Fortran Fortran (; formerly FORTRAN) is a general-purpose, compiled language, compiled imperative programming, imperative programming language that is especially suited to numerical analysis, numeric computation and computational science, scientific com ...

Fortran
subroutine calls) was intended to free the programmer from dealing with idiosyncrasies of the graphics display device, and to provide
hardware independence In software engineering, porting is the process of adapting software Software is a collection of Instruction (computer science), instructions and data (computing), data that tell a computer how to work. This is in contrast to Computer hardwa ...
if the computer or the display were replaced. The term was introduced to the field of
database In computing, a database is an organized collection of Data (computing), data stored and accessed electronically from a computer system. Where databases are more complex they are often developed using formal #Design and modeling, design and mode ...

database
s by C. J. Date in a 1974 paper called ''The Relational and
Network Network, networking and networked may refer to: Science and technology * Network theory Network theory is the study of Graph (discrete mathematics), graphs as a representation of either symmetric relations or directed graph, asymmetric relat ...
Approaches: Comparison of the Application Programming Interface''. An API became a part of ANSI/SPARC framework for
database management system In computing, a database is an organized collection of Data (computing), data stored and accessed electronically from a computer system. Where databases are more complex they are often developed using formal #Design and modeling, design and mode ...
s. This framework treated the application programming interface separately from other interfaces, such as the query interface. Database professionals in the 1970s observed these different interfaces could be combined; a sufficiently rich application interface could support the other interfaces as well. This observation led to APIs that supported all types of programming, not just application programming. By 1990, the API was defined simply as "a set of services available to a programmer for performing certain tasks" by technologist
Carl Malamud Carl Malamud (born 2 July 1959) is an Americans, American technologist, author, and public domain advocate, known for his foundation Public.Resource.Org. He founded the Internet Multicasting Service. During his time with this group, he was responsi ...

Carl Malamud
. The conception of the API was expanded again with the dawn of
web API A web API is an application programming interface In computing Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes and develop ...

web API
s.
Roy Fielding Roy Thomas Fielding (born 1965) is an American computer scientist, one of the principal authors of the HTTP The Hypertext Transfer Protocol (HTTP) is an application layer An application layer is an abstraction layer that specifies the shared ...

Roy Fielding
's dissertation ''Architectural Styles and the Design of Network-based Software Architectures'' at UC Irvine in 2000 outlined Representational state transfer (REST) and described the idea of a "network-based Application Programming Interface" that Fielding contrasted with traditional "library-based" APIs.
XML Extensible Markup Language (XML) is a markup language #REDIRECT Markup language In computer text processing, a markup language is a system for annotation, annotating a document in a way that is Syntax (logic), syntactically distinguishable fro ...

XML
and
JSON JSON (JavaScript Object Notation, pronounced ; also ) is an open standard An open standard is a standard Standard may refer to: Flags * Colours, standards and guidons * Standard (flag), a type of flag used for personal identification Norm ...
web APIs saw widespread commercial adoption beginning in 2000 and continuing as of 2021. The web API is now the most common meaning of the term API. When used in this way, the term API has some overlap in meaning with the terms
communication protocol A communication protocol is a system of rules that allows two or more entities of a communications system 400px, Communication system A communications system or communication system is a collection of individual telecommunications networ ...
and
remote procedure call#REDIRECT remote procedure call In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure ( subroutine) to execute in a different address space (commonly on another computer on a shared network), which is ...
. The
Semantic Web The Semantic Web (sometimes known as Web 3.0) is an extension of the World Wide Web The World Wide Web (WWW), commonly known as the Web, is an information system An information system (IS) is a formal, sociotechnical Sociotechnica ...

Semantic Web
proposed by
Tim Berners-Lee Sir Timothy John Berners-Lee (born 8 June 1955), also known as TimBL, is an English computer scientist best known as the inventor of the World Wide Web The World Wide Web (WWW), commonly known as the Web, is an information system ...

Tim Berners-Lee
in 2001 included "semantic APIs" that recast the API as an
open Open or OPEN may refer to: Music * Open (band) Open is a band. Background Drummer Pete Neville has been involved in the Sydney/Australian music scene for a number of years. He has recently completed a Masters in screen music at the Australian ...
, distributed data interface rather than a software behavior interface. Instead,
proprietary {{Short pages monitor