API

용어심층

Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스

토큰포스트 위키인용하기

API(Application Programming Interface, 응용 프로그램 인터페이스)는 소프트웨어가 다른 소프트웨어의 기능과 데이터에 접근할 때 따르는 인터페이스다. 암호화폐 분야에서는 시세 조회·주문·노드 접속에 쓰이며, 공개 조회와 계정 조작은 권한이 다르다.

1.개요#

API(Application Programming Interface, 응용 프로그램 인터페이스)는 소프트웨어가 다른 소프트웨어의 기능이나 데이터에 접근할 때 따르는 인터페이스다. 웹 서버와 주고받는 요청·응답뿐 아니라 운영체제, 라이브러리, 브라우저 안에서 호출하는 함수와 이벤트도 API에 포함된다. 모든 API가 인터넷 주소나 JSON 응답을 갖는 것은 아니다.

MDN은 API를 사람이 화면을 조작하는 대신 소프트웨어가 기능과 상호작용하도록 정한 규칙으로 설명한다. 호출하는 쪽은 공개된 이름·입력값·결과 형식을 따라 기능을 사용한다. 구현 언어가 같아야 하는 것은 아니지만, 정해진 규격과 버전은 맞아야 한다.

암호화폐 서비스에서는 시장 데이터 조회, 주문 제출, 잔고 확인, 블록체인 노드 접속이 서로 다른 API 기능이다. 공개 시세를 읽는 일과 계정 자산을 움직이는 일은 권한이 다르다. 예를 들어 업비트는 잔고 조회·주문·출금 등을 별도 권한으로 구분한다. API를 연결했다는 사실만으로 모든 계정 기능을 실행할 수 있는 것은 아니며, 허용된 권한과 요청한 기능이 일치해야 한다.

[1][2]

2.작동 원리#

대다수의 웹 API는 '요청(request)'과 '응답(response)'이라는 한 쌍의 흐름으로 동작한다. 요청하는 쪽(클라이언트)이 특정 주소(엔드포인트)로 요청을 보내면, 서버가 처리 결과를 정해진 형식으로 되돌려 준다.

  • 엔드포인트: 기능마다 부여된 고유 주소(URL). 예컨대 시세 조회와 주문 제출은 서로 다른 엔드포인트를 쓴다.
  • 메서드: 데이터를 읽는 요청(조회)과 상태를 바꾸는 요청(주문·취소)을 구분한다. 웹 API에서는 흔히 GET·POST 등 HTTP 메서드로 표현한다.
  • 파라미터와 본문: 어떤 종목의 시세인지, 몇 개를 얼마에 살지 같은 세부 조건을 함께 실어 보낸다.
  • 응답 형식: 결과는 주로 JSON으로 돌아오며, 처리 성공 여부는 상태 코드로 함께 전달된다.
  • 인증 정보: 거래처럼 권한이 필요한 요청에는 API 키나 서명 값을 헤더에 담아 신원을 증명한다.

이처럼 규격이 명확하기 때문에, 사람이 마우스로 버튼을 누르는 대신 프로그램이 초당 수많은 요청을 자동으로 처리할 수 있다. 다만 서버 부담을 막기 위해 대부분의 API는 일정 시간당 호출 횟수를 제한하는 '요청 한도(rate limit)'를 둔다.

3.API의 유형#

API는 통신 방식과 설계 철학에 따라 여러 갈래로 나뉜다.

  • REST 방식: 자원을 주소로 표현하고 요청·응답을 주고받는 가장 널리 쓰이는 웹 API 방식이다. 구조가 단순해 시세·잔고 조회 등에 두루 쓰인다.
  • 실시간 스트리밍(WebSocket): 한 번 연결을 맺으면 서버가 새 데이터가 생길 때마다 밀어 준다. 체결·호가처럼 계속 바뀌는 정보를 지연 없이 받는 데 유리하다.
  • RPC / JSON-RPC: 원격의 함수를 직접 호출하듯 쓰는 방식으로, 블록체인 노드와 통신할 때 표준적으로 쓰인다.
  • GraphQL: 필요한 데이터 항목만 골라 한 번에 받아오도록 설계된 쿼리형 방식이다.
  • FIX: 전통 금융권에서 오래 쓰여 온 거래 메시지 표준으로, 초저지연 대량 주문이 필요한 일부 기관용 암호화폐 거래에서 FIX API 형태로 제공되기도 한다.

하나의 서비스가 조회는 REST로, 실시간 시세는 WebSocket으로 제공하는 식으로 여러 방식을 함께 쓰는 경우가 많다.

4.암호화폐 거래소 API#

거래소 API는 크게 두 종류로 나뉜다.

  • 조회용(공개) API: 시세·호가·체결 내역·거래량 등 누구에게나 공개된 시장 데이터를 읽어 온다. 인증 없이도 쓸 수 있는 경우가 많다.
  • 거래용(비공개) API: 주문 제출·취소, 잔고 조회, 입출금 등 계정과 연결된 기능을 다룬다. 반드시 API 키 인증이 필요하다.

자동매매 봇이나 차익거래 프로그램은 이 API를 통해 사람의 개입 없이 빠르게 매매를 수행한다. 특히 고빈도 거래에서는 주문이 서버에 도달하기까지의 시간이 승부를 가르기 때문에, 거래소 서버와 물리적으로 가까운 곳에 장비를 두는 코로케이션으로 레이턴시를 줄이려는 시도가 이어진다.

거래소 API는 대개 초당 또는 분당 호출 한도를 두며, 한도를 넘기면 일시적으로 요청이 거부된다. 따라서 프로그램은 응답의 상태 코드를 확인하고 호출 빈도를 스스로 조절하도록 설계된다.

5.블록체인·노드 API#

블록체인 노드 API는 잔고·블록·거래를 조회하거나 서명한 거래를 네트워크에 제출하는 통로다. 직접 운영하는 노드에도 요청할 수 있고 외부 사업자의 노드에 접속할 수도 있다. 후자를 쓰면 서버 운영 부담은 줄지만 응답의 최신성·가용성을 그 접속 경로에 의존한다.

이더리움 JSON-RPC에서 eth_blockNumber는 노드가 아는 최신 블록 높이를, eth_getBalance는 지정한 블록 상태에서의 주소 잔고를 조회한다. eth_call은 상태를 기록하는 거래를 만들지 않고 호출 결과를 계산하며, eth_sendRawTransaction은 이미 서명된 거래 데이터를 제출한다. 조회·모의 실행·거래 제출은 서로 다른 동작이다.

전송 API가 거래 해시를 돌려줬다고 블록 포함이나 최종 확정까지 끝난 것은 아니다. 영수증과 블록 상태를 별도로 확인해야 한다. 같은 주소를 조회해도 블록 번호나 latest·safe·finalized 같은 기준이 다르면 결과의 시점이 달라질 수 있으므로, 데이터 인용에는 체인과 조회 기준을 함께 기록하는 편이 정확하다.

[3]

6.오라클과 스마트 계약#

스마트 계약 환경에서는 오라클이 외부 API로부터 가격 등 실세계 데이터를 받아와 온체인으로 전달하는 다리 역할을 한다. 블록체인은 결정성(모든 노드가 같은 결과에 도달해야 함)을 지켜야 하기 때문에 스스로 외부 API를 호출할 수 없으며, 그래서 오라클이 API와 블록체인 사이를 매개한다.

체인링크처럼 여러 데이터 출처를 모아 검증하는 탈중앙 오라클 네트워크는, 단일 API의 오류나 조작이 계약 전체를 왜곡하지 못하도록 다수의 소스를 종합한다. 에이피아이쓰리는 데이터 제공자가 직접 온체인에 데이터를 올리는 방식을 지향하는 등, 'API를 어떻게 신뢰 가능한 형태로 온체인에 연결할 것인가'는 이 분야의 핵심 과제로 남아 있다. 이렇게 공급된 데이터는 탈중앙 금융 프로토콜의 담보 평가·청산 등에 직접 쓰인다.

7.API 키와 보안#

API 키는 서비스가 정한 인증 수단이며, 반드시 공개키 암호 방식의 공개키·개인키 쌍인 것은 아니다. 업비트의 공식 문서는 Access Key와 Secret Key를 구분하고, Secret Key로 요청 인증용 JWT에 서명하는 방식을 안내한다. 이 키는 블록체인 지갑의 개인키와 같은 물건이 아니다.

권한은 기능별로 제한해야 한다. 업비트에서는 계정 조회, 주문 생성, 주문 조회, 출금 등이 나뉘며 호출 IP도 등록한다. 따라서 잔고만 읽는 연결에 주문·출금 권한까지 줄 이유는 없다. 출금 권한을 껐더라도 주문 권한이 남아 있으면 원하지 않는 거래가 실행될 수 있으므로 키 유출 위험이 사라지는 것은 아니다.

비밀 키는 브라우저 코드, 공개 저장소, 대화 기록이나 로그에 남기지 않는다. 허용 IP와 권한을 점검하고 유출이 의심되면 폐기·재발급한다. 업비트는 Secret Key가 발급 시에만 표시된다고 안내한다. 다른 사업자는 인증 규격과 키 수명, 권한 구성이 다를 수 있으므로 특정 거래소의 규칙을 모든 API에 적용해서는 안 된다.

[4]

8.활용 사례#

API는 암호화폐 생태계에서 다양한 자동화의 토대가 된다.

  • 자동매매·전략 실행: 정해진 조건에 따라 사람 없이 주문을 내는 봇이 거래소 API로 동작한다.
  • 차익거래: 여러 거래소의 시세를 동시에 읽어 가격 차이를 포착하고 즉시 매매한다.
  • 포트폴리오·회계 도구: 여러 거래소·지갑의 잔고와 거래 내역을 한데 모아 자산 현황을 정리한다.
  • 데이터 분석·대시보드: 온체인 데이터 API로 지표를 집계해 리서치나 리스크 모니터링에 활용한다.
  • 디앱·지갑: 노드 API를 통해 네트워크와 통신하며 잔고 표시, 거래 전송을 처리한다.

이처럼 API는 개인 트레이더의 소규모 스크립트부터 기관의 대규모 거래 시스템까지 폭넓게 쓰인다.

9.위험과 유의사항#

API를 쓰는 데는 몇 가지 구조적 위험이 따른다.

  • 키 유출: 비밀 키가 새어 나가면 잔고 탈취나 원치 않는 매매로 이어질 수 있다. 출금 권한 비활성화와 IP 제한이 기본 방어선이다.
  • 요청 한도 초과: 한도를 넘기면 일시적으로 요청이 막혀, 중요한 주문·취소가 실패할 수 있다.
  • 서버 장애와 지연: 거래소나 데이터 제공자 측 장애, 네트워크 지연으로 응답이 늦거나 유실될 수 있어 오류 처리 설계가 필요하다.
  • 명세 변경: 제공자가 API 버전을 바꾸거나 폐기하면 기존 프로그램이 갑자기 멈출 수 있다.

따라서 자동화 시스템은 응답 상태를 항상 점검하고, 실패 시 재시도나 안전한 중단 같은 예외 처리를 갖추도록 만들어야 한다.

업비트는 요청 한도 초과 시 HTTP 429를 반환하고, 계속 초과 요청을 보내면 418 차단 응답을 받을 수 있다고 안내한다. 따라서 오류가 났다고 즉시 무제한 재시도하면 상황이 악화된다. 특히 주문 응답이 유실된 경우에는 주문이 접수되지 않았다고 단정할 수 없다. 사용 서비스의 주문 조회·식별자 규칙으로 기존 처리 결과부터 확인해야 중복 주문을 피할 수 있다.

[5]

10.표준화와 앞으로의 과제#

API 생태계는 상호 연결성을 높이는 방향으로 발전해 왔다. REST와 JSON이 사실상 표준으로 자리 잡고, 명세를 기계가 읽을 수 있게 문서화하는 방식이 퍼지면서 서로 다른 서비스를 조합하기가 쉬워졌다.

반면 남은 과제도 뚜렷하다. 거래소마다 API 규격과 권한 정책이 달라 이를 하나로 다루기 어렵고, 외부 API에서 온체인으로 넘어오는 데이터의 신뢰 문제(오라클 문제)는 여전히 활발히 연구되는 영역이다. 데이터 제공 주체를 특정 회사에 의존하지 않으려는 탈중앙 API·오라클 시도(에이피아이쓰리 등)와, 키 유출·요청 위조를 막기 위한 인증·서명 방식의 강화가 계속 이어지고 있다. API가 서비스 간 연결의 '보이지 않는 배관' 역할을 하는 만큼, 그 안정성과 보안은 생태계 전체의 신뢰와 직결된다.

11.연표6건

  1. 1992이정표금융 거래 표준 프로토콜 FIX가 등장해 기관 간 주문·체결 메시지 교환에 쓰이기 시작했으며, 오늘날 일부 암호화폐 거래소도 FIX API를 제공한다
  2. 2000이정표로이 필딩이 박사 논문에서 REST 아키텍처 스타일을 제안해 웹 기반 API 설계의 기틀을 세웠다
  3. 2005이정표AJAX라는 용어가 등장하며 웹 페이지가 배경에서 API를 호출해 데이터를 주고받는 방식이 확산됐다
  4. 2013이정표데이터 교환 형식 JSON이 ECMA-404로 표준화되어 API 응답 형식의 사실상 표준이 됐다
  5. 2015이정표페이스북이 쿼리형 API 기술 GraphQL을 공개했다
  6. 2015이정표웹 API 명세 표준화를 위한 OpenAPI Initiative가 출범했다

각주

  1. [1]API: Application Programming Interface — developer.mozilla.org · MDN Web Docs
  2. [2]Authentication and API Key Permission Groups — global-docs.upbit.com · Upbit Developer Center
  3. [3]JSON-RPC API — ethereum.org · ethereum.org
  4. [4]Authentication and API Key Permission Groups — global-docs.upbit.com · Upbit Developer Center
  5. [5]Rate Limits — global-docs.upbit.com · Upbit Developer Center

이 문서가 도움이 됐나요?

이 문서 인용하기
토큰포스트 위키, “API”, 2026-09-26 수정, https://wiki.tokenpost.kr/w/api

문단 10개 · 연표 6건 · 각주 5개