코인원 Open API는 코인원의 다양한 서비스를 개발자와 사용자들이 다양한 어플리케이션에 활용할 수 있도록 제공하는 서비스 입니다.
Public API는 시세 조회, 오더북 정보 조회 등 계정과 연관되지 않은 마켓정보를 위한 API를 제공합니다.
Private API는 코인원 계정과 관련된 잔고, 고객정보, 거래내역 및 매수/매도 거래를 위한 API를 제공합니다.
# Public API 요청하기
Public API는 GET 메서드로 구성되어 있고, 아래와 같은 방식으로 호출이 가능합니다.
## Public API 요청 건 수 제한
Public API는 **분당 300번의 요청**이 가능합니다. 초당 5건을 초과하는 경우 아래와 같은 메세지가 수신되고 **10분 간 요청이 불가능**합니다.
#### 요청 제한 에러 메세지
# Private API 요청하기
Private API 요청을 위해서는 API Key 발급을 받아야 합니다. '코인원 웹사이트 > footer > Open API > 통합 API 관리 > 개인용 API' 섹션에서 [새로운 키 발급] 버튼을 통해 발급 받을 수 있습니다.
<a href="https://coinone.co.kr/user/api/management" target="_blank">\[개인용 API Key 발급 받으러 가기]</a>
API Key 생성 시 목적에 맞는 권한을 설정할 수 있으며, 각 권한에 대한 카테고리는 아래와 같습니다.
잔고 조회: 보유한 가상자산 및 원화 잔고를 조회할 수 있습니다.
고객 정보: 고객정보, 가상계좌 정보, 가상자산 지갑 주소 등의 정보를 조회 할 수 있습니다.
입출금 조회: 가상자산 입/출금 내역, 원화 입/출금 내역을 조회 할 수 있습니다.
주문 조회: 등록된 주문 및 주문 내역, 체결 내역 등을 조회 할 수 있습니다.
주문 관리: 매수/매도 주문을 등록하거나 취소할 수 있습니다.
자산 출금: 비트코인 출금 및 출금 시 필요한 2FA 인증번호 요청이 가능합니다.
## API 요청을 위한 준비
API Key 생성을 하게되면 Access Token과 Secret Key가 발급됩니다. 발급된 Access Token과 Secret Key를 통해 API 사용이 가능합니다.
#### API 요청 예시
**Nonce**
**V2.1 API** 요청 시 논스는 UUID 버전4 포맷의 무작위 문자열입니다. Replay Attack을 방지하기 위해서, 사용자는 매 요청마다 별개의 논스를 사용해야 합니다.
**V2.0 API** 요청 시 논스는 유닉스 타임스탬프처럼 양의 정수입니다. Replay Attack을 방지하기 위해서, 사용자는 매 요청마다 이전 요청에 사용했던 논스 값보다 큰 값을 사용해야 합니다.
**HTTP Method**: POST 메서드로 구성되어 있습니다.
**HTTP Content-Type**: 콘텐츠 타입은 json입니다. 'application/json'
**HTTP Header**: 헤더는 X-COINONE-PAYLOAD 와 X-COINONE-SIGNATURE로 구성되며, 이 두가지 값은 모든 요청에서 반드시 필요합니다.
**표기법**
V2.1의 요청과 응답은 모두 snake_case 입니다.
V2의 요청은 snake_case 응답은 camelCase 입니다.
**API 호출 시 Timezone 입력**
UTC 기준의 시간 입력
예) [원화 입출금 조회 API](🔗)의 from_ts, to_ts에 입력하는 timestamp 값은 UTC 기준
### 헤더의 X-COINONE-PAYLOAD 생성하기
먼저 Request Body 객체를 JSON 문자열로 변환합니다. 그리고 변환한 문자열을 Base64 인코딩 합니다.
#### V2.1 API 요청 시 JSON 문자열 변환 (논스 값 포함)
#### V2.0 API 요청 시 JSON 문자열 변환 (논스 값 포함)
#### 변환된 JSON 문자열을 Base64 인코딩
### 헤더의 X-COINONE-SIGNATURE 생성하기
먼저 만들었던 X-COINONE-PAYLOAD 와 사전에 발급한 API Key를 사용하여 SHA512 알고리즘을 통해서 해시 기반 메세지 인증코드(HMAC)를 생성합니다.
### HTTP Request
Request body JSON 을 문자열로 변환하고 Base64로 인코딩한 값이 X-COINONE-PAYLOAD 헤더 값입니다.
## Private API 요청 건 수 제한
Private API는 **초당 10번의 요청**이 가능합니다. 초당 10건을 초과하는 경우 아래와 같은 메세지가 수신되고 **10분 간 요청이 불가능**합니다.