{{redirect|API}}

An '''application programming interface''' ('''API''') is a [[source code]] [[Interface (computer science)|interface]] that an [[operating system]] or [[library (computer science)|library]] provides to support requests for services to be made of it by [[computer program]]s.<ref>{{cite web|
url=http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=43487|
title=QuickStudy: Application Programming Interface (API)|
publisher=ComputerWorld}}</ref>
'''Advanced programming interface''' is a near synonym with wider application that predates the current common usage. In the original term the concept is meant to represent any well defined interface between two separate programs. The main difference is that this older term does not inculcate a parent-child relationship and can therefore be applied to peer-to-peer situations more logically, e.g. internal kernel services which can present themselves as separate programs.

==API versus ABI==
An API is similar to an [[application binary interface]] (ABI) in that both specify details of how two independent computer programs can interact. However, an API is typically defined at a higher level (i.e., in terms of a [[programming language]] that can be [[compile]]d when an application is built, rather than an explicit low level description of how data is laid out in memory). For example, the [[Linux Standard Base]] is an ABI, while [[POSIX]] is an API.<ref>{{cite web|
url=https://db.usenix.org/publications/login/2005-04/openpdfs/standards2004.pdf|
title=Update on Standards|
publisher=USENIX}}</ref>


==Distinction between API specification and its implementation==
The software that provides the functionality described by an API is said to be an ''implementation'' of the API. The API itself is [[abstraction (computer science)|abstract]], in that it specifies an interface and the behavior of the identifiers specified in that interface, it does not specify how the behavior might be implemented.

==Release policies==

There are two general kinds of API publishing policies that are often encountered:

# Some companies protect information on their APIs from the general public. For example, [[Sony]] used to make its official [[PlayStation 2]] API available only to licensed PlayStation developers. This enabled Sony to control who wrote PlayStation 2 [[game]]s. Such control can have quality control benefits and potential license revenue.
# Some companies make their APIs freely available. For example [[Microsoft]] makes most of its API information public, so that software will be written for the Windows [[System platform|platform]].

== Some example APIs ==
<div style="-moz-column-count:3; column-count:3;">
* The PC [[BIOS call]] [[interface (computer science)|interface]]
* [[Single UNIX Specification]] (SUS
)
* [[Windows API]]
* [[Java Platform
, Standard Edition]] API
* [[Java Platform
, Enterprise Edition]] APIs
* [[ASPI]] for [[SCSI]] device interfacing
* [[Carbon (computing)|Carbon]] and [[Cocoa (API)|Cocoa]] for the [[Apple Macintosh|Macintosh]] [[Mac OS X|OS]]
* [[OpenGL]] cross-platform
3D graphics API
* [[DirectX]] for [[Microsoft Windows]]
* [[Simple DirectMedia Layer]] (SDL
)
* [[Google_Maps#Google_Maps_API|Google Maps API]]
* [http://www.youtube.com/dev YouTube API]
* [[mw:API|MediaWiki API]]
</div>

== See also ==
* [[Application binary interface]] (ABI)
* [[Document Object Model]]
* [[Open Service Interface Definitions]] (OSID)
* [[Plugin]]
* [[software development kit]] (SDK)
* [[Mashup (web application hybrid)]]
* [[Web service]]

==References==
<references />


==External links==
* [http://lcsd05.cs.tamu.edu/slides/keynote.pdf How to design a good API and why it matters-PDF]
* [http://apatar.com/blogs/renat/2007/03/21/three-trends-influencing-enterprise-20 The trends and the role of API-driven mashup building tools in the enterprise computing]
* [http
://java.sun.com/developer/technicalArticles/WebServices/soa/ Service-Oriented Architecture (SOA): The Road to Enterprise Application Integration (EAI)]
* [http://www.gotapi.com Organized list of API references with fast as-you-type search]

[[Category:Technical communication]]
[[Category:Application programming interfaces|*]]

[[bn:অ্যাপলিকেশন প্রোগ্রামিং ইন্টারফেস]]
[[bs:Application Programming Interface]]
[[bg:API]]
[[ca:API]]
[[cs:API]]
[[da:API]]
[[de:Programmierschnittstelle]]
[[et:API]]
[[el:Διεπαφή προγραμματισμού εφαρμογών]]
[[es:Application Programming Interface]]
[[eu
:Application Programming Interface]]
[[fa:رابط برنامه‌نویسی کاربردی]]
[[fr:Interface de programmation]]
[[gl:API]]
[[ko:API]]
[[id
:Antarmuka pemrograman aplikasi]]
[[it:Application programming interface]]
[[he:ממשק תכנות יישומים]]
[[lt:Aplikacijų programavimo sąsaja]]
[[hu:Alkalmazásprogramozási felület]]
[[nl:Application Programming Interface]]
[[ja:Application Programming Interface]]
[[no:API]]
[[pl:API (informatyka)]]
[[pt:API]]
[[ru:Интерфейс программирования приложений]]
[[sk:Application programming interface]]
[[fi:Ohjelmointirajapinta]]
[[sv:Application Programming Interface]]
[[vi:Giao diện lập trình ứng dụng]]
[[tr:Yazılım programlama arayüzü]]
[[uk:API]]
[[zh:应用程序接口]]