코인원 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분 간 요청이 불가능**합니다.

#### 요청 제한 에러 메세지