예를 들어 명령어 창
[1]에 "
Hello, world!"라는 문자열을 출력하는 프로그램을
C 언어로 작성한다고 하자. 당연히 텍스트로 출력하는 printf API를 사용하여 printf("Hello, World!");라고 작성하게 될 것이며, 이는 윈도우, 리눅스, 유닉스, OS X 모두에서 동일하게 동작하도록 C 언어 API가 보장해 준다. 이 'printf'라는 것은 API를 기반으로 설계된 문법이며 이런 것들이 여러 개 쌓여 '라이브러리'가 된다. 물론 printf 같은 기본적인 것들은 다 기본적으로 탑재되어 있기 때문에 따로 이것을 '라이브러리'라고 부르진 않지만 좀 더 나아가면 운영 체제의 종류나 버전을 출력한다든가 파일의 데이터를 읽어 오는 등의 행동에는 별도의 라이브러리를 호출할 필요가 있다.
API가 없다면 프로그래머는 보다 저수준으로 내려가 실제로 명령어 창에 'Hello, world!'를 띄우기 위해 컴퓨터 메모리를 직접 건드려야 한다. 메모리 영역부터 내려가 H부터 느낌표까지 문자열 하나하나 문자열 구조체를 만들어 담고, 이를 출력하도록 운영 체제에 명령을 보내야 한다. 운영 체제마다 그것을 표시하는 방식이 다른 것은 물론이다. 하지만 API가 있기 때문에
이미 프로그래밍 언어에 정의된 'printf'를 사용하기만 하면 편리하게 텍스트를 출력할 수 있다. 즉 잘 설계된 '프로그래밍 인터페이스'를 사용하면 환경(플랫폼)이 달라져도 동일한 코드가 동일한 결과를 수행하며, 보다 편리하게 프로그래밍을 할 수 있다. 이것이 바로 API의 존재 목적이다.
유닉스는 애초에 C 언어로 개발되었기 때문에, 당연히 C 언어를 위한 API가 기본으로 제공된다.
MS-DOS는 그렇지 않았기 때문에 특정 언어를 위한 API 같은 것은 없었고, 기계어(또는
어셈블리어) 수준에서 소프트웨어 인터럽트를 제공했다. MS-DOS의 이러한 방식을 지금의 관점에서 보면, ABI를 정의한 것으로 볼 수 있다.
Java를 기준으로 설명하자면, 기본적인 프로그래밍을 위한 'java.lang', 파일 입출력 및 키보드 마우스 등을 관리하는 'java.io'나 그 외에도 'java.net', 'java.util' 등이 대표적인 API들이다.
자바 기본 API 문서 즉, API를 통해 어느 환경에서 JVM을 실행하더라도 통일된 메서드를 사용하여 동일한 실행 결과를 보장하는 것이다.
프로그래밍 언어 혹은 운영 체제마다 기본으로 제공되는 API 말고도 기업들이 운영 중인 여러 API들이 많다. 전자의 요소들이 '프로그램과 운영 체제 간의 상호 작용'을 위한 프로토콜이라면, 기업에서 제공하는 API들은 대개의 경우 '기업의 서버와 개발자 본인의 프로그램 간의 상호 작용'을 위한 프로토콜을 의미하는 경우가 많다. 단,
웹에서 데이터를 전송하기 위한 목적으로 사용되는 'REST API'와는 다르며, 일반인은 물론이고 현직 개발자들도 서로 종종 혼동하기 때문에 주의.
기업들이 API를 운용하는 이유는 다음과 같다. 복잡한 프로그램일수록 개발자가 개발하는 프로그램은 그 프로그램 단독으로 돌아가는 경우가 많지 않으며 이미 개발되어 있는 무수한 여러 애플리케이션들과 소통하는 경우가 태반이다. 하지만 소통한답시고 기업들이 애플리케이션의 기반 코드와 자체 보유 데이터에 누구나 접근할 수 있도록 열어버리면 난리가 날 것이다.
[2] 따라서 각 기업들은 개발자가 개발한 프로그램의 코드를 작동함에 있어 자체 애플리케이션과 실시간으로 상호 작용할 내용이 있다면 이를 위해 '소통 창구'라 할 수 있는 자체 API를 만들어 배포하는 것이다.
예를 들어, 자신이 개발자이고 이용자가 휴대폰으로 촬영한 영상을 유튜브에 업로드하고 카카오 지도에 촬영한 장소를 기록할 수 있는 앱을 만든다고 가정해 보자. 이를 구현하기 위해선 이용자의 구글 계정과 비밀번호를 받아서 유튜브에 업로드할 수 있는 기능을 만들어야 할 것이고 카카오 지도와도 상호 작용이 필요할 것이다. 한데 일개 앱 개발자가 유튜브나 구글 서버 DB에 직접 접근할 수 있을 리가 만무하다. 그렇다고 구글 입장에서는 이러한 서드 파티 앱과 상호 작용을 원천 봉쇄하는 것도 애매하므로 무차별적인 접근을 막고 '적절한 상호 작용'을 위해 자체 개발 API를 배포하는 것이다.
따라서 개발자는 배포된 API를 받고 이를 자신의 코드에 추가함으로써 원하는 기능을 구현할 수 있다. 말하자면 운용 중인 애플리케이션에 적법한 절차를 걸쳐 허락을 맡고 구현물을 받아 오거나 새로운 요소를 삽입, 수정할 수 있는 것이다.
따라서 구글, 네이버, 카카오 등 많은 IT 회사들이 사내 제품군들의 API를 제공하여 개발 편의를 돕고 자사 제품을 쓰도록 유도하고 있다. 예를 들어
구글 유튜브 Data API를 보면 각 프로그래밍 언어별로 친절하게 동영상 업로드나 업데이터, 키워드별 검색, 재생 목록 만들기 등의 기능을 제공한다. 또 다른 예시로
카카오 지도 API를 보면 API를 통해 개발자는 카카오가 제공하는 함수를 써서 특정 경로를 찍거나, 해당 위치 주변의 지도를 개발물에 띄울 수 있고 이를 개발에 활용할 수 있다.