소개
코빗은 대한민국의 가상자산 생태계 활성화를 위해 다음과 같은 API를 제공한다.
API call rate limit
안정적인 Korbit API 서비스 제공을 위하여 짧은 시간 내에 limit call rate을 초과하는 일정 빈도 이상의 호출은 허용되지 않는다. Access token 발급 및 갱신은 60분에 60번 호출할 수 있고, Ticker 기능은 60초에 60번 호출할 수 있으며, AccessToken, Ticker, 주문취소를 제외한 다른 모든 기능은 종류에 상관없이 도합 1초 동안 12번 호출이 가능하다.
인증
API Key및 사용자 인증을 기능을 제공하는 API이다.
개요
Korbit API를 이용하기 위해서는 사용자 인증 절차가 필요하다. Korbit API는 OAuth 2.0을 지원하며, 이를 통해 사용자 인증 절차를 거치고 나면 Access Token을 받게 된다. 이후, API호출 시마다 Access Token을 함께 제공해야 한다.
API키 발급
Korbit API를 사용하기 위해서는 API키를 발급받아야 한다. 이 때 API키의 암호도 함께 제공된다. 본 문서에서 URL이나 POST 데이터 상에서 API 키는 <CLIENT ID>로, API 키 암호는 <CLIENT SECRET>으로 표기한다.
Access Token
Korbit API를 매 번 호출할 때마다 사용자의 ID/PW를 주는 대신, 인증하여 얻은 Access Token을 전달한다. Access Token은 HTTP 프로토콜의 Authorization 헤더에 다음 포맷으로 붙여서 전송한다.
Bearer 12094519051ewhdsofhsoy2ghewekfhse
Access Token은 발급받은 후 한 시간 후에 만료되기 때문에, 만료 전에 Refresh Token을 이용하여 갱신해야 한다.
Scope
Access Token은 API를 호출할 수 있는 권한인 Scope를 가진다. Scope로는 VIEW, TRADE, WITHDRAWAL이 있으며, 하나의 Access Token은 복수의 Scope를 가질 수 있다. 공개 API를 제외한 모든 API는 Access Token의 Scope를 검증 하는데, Access Token이 해당 API가 요구하는 Scope를 가져야만 실행할 수 있다. Access Token의 Scope는 코빗 웹사이트에서 API key를 발급 받을 때 설정한 값이다.
Nonce
API 중에 v1/user 로 시작하는 API는 특정 사용자의 계정을 접근, 변경할 수 있는 API로, 사용자 인증을 통해 발급받은 Access Token과 순차적으로 증가하는 양수 값인 Nonce를 지정해야 한다. Nonce는 특정 요청이 두 번 수행되는 것을 방지하고, 하나의 계정을 두 대 이상의 클라이언트가 동시접근하는 것을 막기 위해서, 서버상에서 마지막으로 받았던 요청의 Nonce값보다 새로 받은 요청의 Nonce값이 더 큰 경우에만 요청을 처리한다. Nonce는 GET요청의 경우 필요하지 않고, POST요청의 경우 body에 다른 파라미터와 함께 전달한다.
단, 매수 주문, 매도 주문, 주문 취소 요청시에는 생략 가능. 생략한 경우 새로운 요청으로 처리가 된다.
인증
Korbit 웹사이트에서 발급받은 API Key와 Secret으로 인증이 가능하다.
Access Token, Refresh Token 획득
요청예제
curl -D - -X POST -d "client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&grant_type=client_credentials" https://api.korbit.co.kr/v1/oauth2/access_token
응답예제
{
"token_type":"Bearer",
"access_token":"1t1LgTslDrGznxPxhYz7RldsNVIbnEK",
"expires_in":3600,
"scope": "VIEW,TRADE",
"refresh_token":"vn5xoOf4PzckgnqjQSL9Sb3KxWJvYtm"
}
POST https://api.korbit.co.kr/v1/oauth2/access_token
v1/oauth2/access_token에 grant_type=client_credentials을 지정하고 인증하는 방식으로, Access Token과 Refresh Token을 얻을 수 있다. 기존의 password 방식은 2021년 5월 3일 이후로 더이상 지원하지 않는다.
Access Token 갱신
요청예제
curl -D - -X POST -d "client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&refresh_token=$REFRESH_TOKEN&grant_type=refresh_token" https://api.korbit.co.kr/v1/oauth2/access_token
응답예제
{
"token_type":"Bearer",
"access_token":"IuqEWTK09eCLThRCZZSALA0oXC8EI7s",
"expires_in":3600,
"scope": "VIEW,TRADE",
"refresh_token":"vn5xoOf4Pzckgn4jQSL9Sb3KxWJvYtm"
}
POST https://api.korbit.co.kr/v1/oauth2/access_token
API를 호출하는데 사용되는 access token은 한 시간 후에 만료되기 때문에, access token만료 전에 refresh token을 이용해서 access token을 갱신해야 하는데, 이를 위해 grant_type=refresh_token으로 지정해서 v1/oauth2/access_token 으로 POST하면 된다.
참고자료
Korbit API는 OAuth 2.0 스펙을 준수한다. OAuth 2.0에 대해서는 다음 자료들을 참고한다.
OAuth 2.0에 대해 쉽게 설명한 자료들
OAuth 2.0기반 웹서비스를 사용하는 입장(Consumer)에서 참고할 자료
OAuth 2.0기반 웹서비스를 제공하는 입장(Provider)에서 참고할 자료
서적 : Getting Started with OAuth 2.0
공개
회원 인증 없이 사용할 수 있는 API로, 티커, 매수/매도호가, 체결내역을 확인할 수 있다.
최종 체결 가격
요청예제
curl -D - "https://api.korbit.co.kr/v1/ticker?currency_pair=$CURRENCY_PAIR"
응답예제
{
"timestamp": 1389678052000,
"last": "569000"
}
`GET https://api.korbit.co.kr/v1/ticker
파라미터
파라미터 | 기본값 | 설명 |
---|---|---|
currency_pair | btc_krw | 요청할 통화쌍. [제약조건]에 존재하는 통화쌍은 모두 사용할수 있으며, 이 외에 다른 통화쌍은 지원하지 않는다. |
필드
이름 | 설명 |
---|---|
timestamp | 최종 체결 시각. |
last | 최종 체결 가격. |
시장 현황 상세정보
요청예제
curl -D - "https://api.korbit.co.kr/v1/ticker/detailed?currency_pair=$CURRENCY_PAIR"
응답예제
{
"timestamp": 1558590089274,
"last": "9198500",
"open": "9500000",
"bid": "9192500",
"ask": "9198000",
"low": "9171500",
"high": "9599000",
"volume": "1539.18571988",
"change": "-301500",
"changePercent": "-3.17"
}
GET https://api.korbit.co.kr/v1/ticker/detailed
파라미터
파라미터 | 기본값 | 설명 |
---|---|---|
currency_pair | btc_krw | 요청할 통화쌍. [제약조건]에 존재하는 통화쌍은 모두 사용할수 있으며, 이 외에 다른 통화쌍은 지원하지 않는다. |
필드
이름 | 설명 |
---|---|
timestamp | 최종 체결 시각. |
last | 최종 체결 가격. |
open | 최근 24시간 시작 가격. |
bid | 매수호가. 현재 매수 주문 중 가장 높은 가격. |
ask | 매도호가. 현재 매도 주문 중 가장 낮은 가격. |
low | 최저가. 최근 24시간 동안의 체결 가격 중 가장 낮 가격. |
high | 최고가. 최근 24시간 동안의 체결 가격 중 가장 높은 가격. |
volume | 거래량. |
change | 시작 가격 대비 현재가 차이. |
changePercent | 시작 가격 대비 현재가 차이 변화 비율. |
모든 시장 현황 상세 정보
요청예제
curl -D - "https://api.korbit.co.kr/v1/ticker/detailed/all"
응답예제
{
"bch_krw": {
"timestamp": 1559285555322,
"last": "513000",
"open": "523900",
"bid": "512100",
"ask": "513350",
"low": "476200",
"high": "540900",
"volume": "4477.20611753",
"change": "-10900",
"changePercent": "-2.08"
},
"fet_krw": {
"timestamp": 1559285607258,
...
},
...
}
GET https://api.korbit.co.kr/v1/ticker/detailed/all
필드
이름 | 설명 |
---|---|
currency_pair | 해당 거래의 통화쌍 (btc_krw, eth_krw, ...) |
timestamp | 최종 체결 시각. |
last | 최종 체결 가격. |
open | 최근 24시간 시작 가격. |
bid | 매수호가. 현재 매수 주문 중 가장 높은 가격. |
ask | 매도호가. 현재 매도 주문 중 가장 낮은 가격. |
low | 최저가. 최근 24시간 동안의 체결 가격 중 가장 낮 가격. |
high | 최고가. 최근 24시간 동안의 체결 가격 중 가장 높은 가격. |
volume | 거래량. |
change | 시작 가격 대비 현재가 차이. |
changePercent | 시작 가격 대비 현재가 차이 변화 비율. |
매수/매도 호가
요청예제
curl -D - "https://api.korbit.co.kr/v1/orderbook?currency_pair=$CURRENCY_PAIR"
응답예제
{
"timestamp" : 1386135077000,
"bids" : [["1100000", "0.0103918", "1"], ["1000000", "0.01000000", "1"], ... ],
"asks" : [["569000", "0.50000000", "1"], ["568500", "2.00000000", "1"], ... ]
}
GET https://api.korbit.co.kr/v1/orderbook
파라미터
파라미터 | 기본값 | 설명 |
---|---|---|
currency_pair | btc_krw | 요청할 통화쌍. [제약조건]에 존재하는 통화쌍은 모두 사용할수 있으며, 이 외에 다른 통화쌍은 지원하지 않는다. |
필드
이름 | 설명 |
---|---|
timestamp | 가장 마지막으로 유입된 호가의 주문 유입시각. |
asks | [가격, 미체결잔량]으로 구성된 개별 호가를 나열한다. 3번째 값은 더이상 지원하지 않고 항상 "1"로 세팅된다. |
bids | [가격, 미체결잔량]으로 구성된 개별 호가를 나열한다. 3번째 값은 더이상 지원하지 않고 항상 "1"로 세팅된다. |
체결 내역
요청예제
curl -D - "https://api.korbit.co.kr/v1/transactions?currency_pair=$CURRENCY_PAIR"
응답예제
[
{"timestamp" : 1389678052000, "tid" : "22546", "price" : "569000", "amount" : "0.01000000", "type" : "buy"},
{"timestamp" : 1389678017000, "tid" : "22545", "price" : "580000", "amount" : "0.01000000", "type" : "sell"},
{"timestamp" : 1389462921000, "tid" : "22544", "price" : "569000", "amount" : "0.16348000", "type" : "buy"},
{"timestamp" : 1389462921000, "tid" : "22543", "price" : "570000", "amount" : "0.20000000", "type" : "sell"},
{"timestamp" : 1389462920000, "tid" : "22542", "price" : "578000", "amount" : "0.33652000", "type" : "sell"},
...
]
GET https://api.korbit.co.kr/v1/transactions
파라미터
파라미터 | 기본값 | 설명 |
---|---|---|
currency_pair | btc_krw | 요청할 통화쌍. [제약조건]에 존재하는 통화쌍은 모두 사용할수 있으며, 이 외에 다른 통화쌍은 지원하지 않는다. |
time | hour | The time period you want to query. If this parameter is specified as minute, it queries data within the last minute, hour means the last hour, day means the last 24 hours. |
필드
이름 | 설명 |
---|---|
timestamp | 체결 시각. |
tid | 체결 일련 번호. |
price | 체결 가격. |
amount | 체결 수량. |
type | taker 주문의 매수/매도 타입. |
제약조건 (지원중단)
요청예제
curl -D - "https://api.korbit.co.kr/v1/constants"
응답예제
{
"exchange": {
"btc_krw": {
"tick_size": 500,
"min_price": 1000,
"max_price": 100000000,
"order_min_size": 0.00100000,
"order_max_size": 100.00000000
},
"eth_krw": {
"tick_size": 50,
"min_price": 1000,
"max_price": 100000000,
"order_min_size": 0.01000000,
"order_max_size": 1000.00000000
},
...
}
}
GET https://api.korbit.co.kr/v1/constants
수수료, 각 가상화폐의 수량, 가격 최소 최대 입력값과 같은 제약조건을 가져온다. 2021년 4월 28일 부로 지원 중단한다.
• 거래 호가단위와 최소/최대 주문량 확인 : [link]
• 입출금 수수료와 최소 출금수량 확인 : [link]
필드
이름 | 설명 |
---|---|
exchange | 거래 제약조건 |
currency_pair | 해당 거래의 통화쌍 (btc_krw, eth_krw, ...) |
tick_size | 호가단위 |
min_price | 최소 주문가 |
max_price | 최대 주문가 |
order_min_size | 매수/매도 수량 최소 입력값 |
order_max_size | 매수/매도 수량 최대 입력값 |
공개 - 웹소켓
공개 - 웹소켓 서버 : 서버에서 제공하는 Ticker, Orderbook, Transaction 과 같은 채널(또는 주제)을 구독 요청하여 원하는 정보를 실시간으로 수신할 수 있다.
웹소켓 연결
서버에 웹소켓으로 연결한다.
Blacklist IP CloseReason 경고 메시지와 함께 요청한 연결을 서버에서 종료하면, info@korbit.co.kr로 문의해야한다. 중복 오류 요청 누적시 IP가 블랙리스트에 등록될 수 있다.
요청예제
wscat -c "wss://ws.korbit.co.kr/v1/user/push"
응답예제
{
"accessToken": null,
"timestamp": 1558590089274,
"event": "korbit:connected",
"data": {}
}
WS CONNECT wss://ws.korbit.co.kr/v1/user/push
웹소켓 연결 해제
서버에 연결된 웹소켓을 해제한다.
구독중인 채널이 있는 경우, 서버에서 웹소켓 연결을 닫기전에 자동으로 구독 중인 채널을 모두 해제한다.
요청예제
wscat -c "wss://ws.korbit.co.kr/v1/user/push"
CTRL + C to close
응답예제
CloseReason.Codes.NORMAL(1000) | "client socket is closed..."
WS CLOSE wss://ws.korbit.co.kr/v1/user/push
채널 구독 요청
서버에 웹소켓으로 연결된 상태에서 필요한 데이터를 수신하기 위하여 원하는 채널(또는 주제)을 구독 요청한다.
요청예제
wscat -c "wss://ws.korbit.co.kr/v1/user/push"
{
"accessToken": null,
"timestamp": 1558590089274,
"event": "korbit:subscribe",
"data": {
"channels": ["ticker:btc_krw,eth_krw,xrp_krw", "orderbook:btc_krw,eth_krw,xrp_krw", "transaction:btc_krw,eth_krw,xrp_krw"]
}
}
응답예제
(성공 시 채널 구독 요청 메시지를 에코 응답으로 보내줌)
{
"accessToken": null,
"timestamp": 1558590089274,
"event": "korbit:subscribe",
"data": {
"channels": ["ticker:btc_krw,eth_krw,xrp_krw", "orderbook:btc_krw,eth_krw,xrp_krw", "transaction:btc_krw,eth_krw,xrp_krw"]
}
}
(에러 시 에러 메시지를 응답으로 보내줌)
중복된 에러 요청이 누적되어 클라이언트 IP가 Blacklist에 등록될 경우, 서버로 부터 아무런 응답을 받을 수 없다.
{
"accessToken": null,
"timestamp": 1558590089274,
"event": "korbit:error",
"data": {
"request_event": "korbit:subscribe",
"err_message": "subscription channels info is not valid | unknown topic error : xxx"
}
}
WS REQUEST wss://ws.korbit.co.kr/v1/user/push
요청 메시지
필드명 | 예제 값 | 설명 |
---|---|---|
accessToken | null | 인증 토큰 문자열 |
timestamp | 1389678052000 | UTC 현제시각 타임스탬프 숫자(Long) |
event | "korbit:subscribe" | 요청 이벤트 타입(subscribe, unsubscribe) |
data | channels | 요청 메타 데이터 |
채널 구독 해제
서버로부터 수신되는 채널(또는 주제)의 데이터 수신을 중단하기 위해 구독 해제를 요청한다.
구독해제 요청 후 바로 소켓 세션을 해제할 경우, 서버로부터 구독해제 응답을 받은 후 클라이언트 소켓을 닫아야 한다.
요청예제
wscat -c "wss://ws.korbit.co.kr/v1/user/push"
{
"accessToken": null,
"timestamp": 1558590089274,
"event": "korbit:unsubscribe",
"data": {
"channels": ["ticker:btc_krw,eth_krw,xrp_krw", "orderbook:btc_krw,eth_krw,xrp_krw", "transaction:btc_krw,eth_krw,xrp_krw"]
}
}
응답예제
(성공 시 채널 구독 해제 요청 메시지를 에코 응답으로 보내줌)
{
"accessToken": null,
"timestamp": 1558590089274,
"event": "korbit:unsubscribe",
"data": {
"channels": ["ticker:btc_krw,eth_krw,xrp_krw", "orderbook:btc_krw,eth_krw,xrp_krw", "transaction:btc_krw,eth_krw,xrp_krw"]
}
}
(에러 시 에러 메시지를 응답으로 보내줌)
중복된 에러 요청이 누적되어 클라이언트 IP가 Blacklist에 등록될 경우, 서버로 부터 아무런 응답을 받을 수 없다.
{
"accessToken": null,
"timestamp": 1558590089274,
"event": "korbit:error",
"data": {
"request_event": "korbit:unsubscribe",
"err_message": "subscription channels info is not valid | unknown topic error : xxx"
}
}
WS REQUEST wss://ws.korbit.co.kr/v1/user/push
요청 메시지
필드명 | 예제 값 | 설명 |
---|---|---|
accessToken | null | 인증 토큰 문자열 |
timestamp | 1389678052000 | UTC 현제시각 타임스탬프 숫자(Long) |
event | "korbit:unsubscribe" | 요청 이벤트 타입(subscribe, unsubscribe) |
data | channels | 요청 메타 데이터 |
채널 목록
응답예제
ticker
{
"accessToken": null,
"event": "korbit:push-ticker",
"timestamp" : 1389678052000,
"data":
{
"channel": "ticker",
"currency_pair": "btc_krw",
"timestamp": 1558590089274,
"last": "9198500.1235789"
"open": "9500000.3445783",
"bid": "9192500.4578344",
"ask": "9198000.32148556",
"low": "9171500.23785685",
"high": "9599000.34876458",
"volume": "1539.18571988",
"change": "-301500.234578934"
}
}
orderbook
{
"accessToken": null,
"event": "korbit:push-orderbook",
"timestamp" : 1389678052000,
"data":
{
"channel": "orderbook",
"currency_pair": "btc_krw",
"timestamp" : 1386135077000,
"bids" : [{"price": "1100000,2375876", "amount": "0.0103918"}, {"price": "1000000.3478764", "amount": "0.012"}],
"asks" : [{"price": "569000.3467895", "amount": "0.50000000"}, {"price": "568500.7658432", "amount": "2.003"}]
}
}
transaction
{
"accessToken": null,
"event": "korbit:push-transaction",
"timestamp" : 1389678052000,
"data":
{
"channel": "transaction",
"currency_pair": "btc_krw",
"timestamp" : 1389678052000,
"price" : "569000.7654835",
"amount" : "0.01000001",
"taker" : "buy"
}
}
채널 이름은 대소문자를 구별하므로 소문자로 입력해야 한다.
이름 | 설명 |
---|---|
ticker | 시장 현황 상세 정보 |
orderbook | 매도/매수 호가 |
transaction | 체결내역 |
공통 | 설명 |
---|---|
accessToken | 액세스 토큰 |
event | 채널 ID |
timestamp | 요청된 시각의 타임스탬프 |
ticker.data | 설명 |
---|---|
channel | 구독 채널 정보 |
currency_pair | 대상 통화쌍 |
timestamp | 데이터의 생성 타임스탬프 |
last | 종가 |
open | 시작가 |
bid | 최종 매수 체결가 |
ask | 최종 매도 체결가 |
low | 저가 |
high | 고가 |
volume | 거래량 |
change | 변화액 |
orderbook.data | 설명 |
---|---|
channel | 구독 채널 정보 |
currency_pair | 대상 통화쌍 |
timestamp | 데이터의 생성 타임스탬프 |
bids | 매수 호가 |
asks | 매도 호가 |
transaction.data | 설명 |
---|---|
channel | 구독 채널 정보 |
currency_pair | 대상 통화쌍 |
timestamp | 데이터의 생성 타임스탬프 |
price | 거래 가격 |
amount | 거래 자산 수량 |
taker | 매도/매수 구분 |
Request Format: channel_name[:currency_pair,...],channel_name[:currency_pair,...],...
currency_pair를 생략하는 경우, 전체 currency pair에 대한 정보를 수신할 수 있다.
핑
대부분의 web socket library는 rfc6455 protocol을 지원한다. 사용하는 library의 ping/pong message 관련 문서를 참고해야한다. 서버는 클라이언트의 웹소켓 세션이 살아 있는지 확인하기 위하여 rfc6455 규격에 따른 핑 메시지 프레임을 보낼 수 있다. 사용자도 서버에 보낼 수 있다.: Ping은 정상 메시지이지만 HearBeat 체크를 위한 컨트롤 메시지 이고, opcode 값으로 0x9 값을 갖는다.
핑 메시지 참고문서 링크 | rfc6455 |
---|---|
핑 메시지 참고문서 링크 | rfc6455 |
요청예제
wscat -c "wss://ws.korbit.co.kr/v1/user/push"
rfc6455 websocket ping message frame
응답예제
rfc6455 websocket pong message frame
WS REQUEST wss://ws.korbit.co.kr/v1/user/push
요청 메시지
핑 메시지 프레임(rfc6455)
퐁
대부분의 web socket library는 rfc6455 protocol을 지원한다. 사용하는 library의 ping/pong message 관련 문서를 참고해야한다. 클라이언트 프로그램은 서버에서 핑 메시지 프레임을 보낼경우 반드시 퐁 메시지 프레임을 보내야 한다. 클라이언트에서 서버로 핑 메시지 프레임을 보내면 서버도 퐁 메시지 프레임을 보내서 응답한다. : Pong 은 정상 메시지 이지만 HearBeat 체크 응답을 위한 컨트롤 메시지 이고, opcode 값으로 0xA 값을 갖는다.
퐁 메시지 참고문서 링크 | rfc6455 |
---|---|
퐁 메시지 참고문서 링크 | rfc6455 |
요청예제
wscat -c "wss://ws.korbit.co.kr/v1/user/push"
rfc6455 websocket pong message frame
응답예제
none
WS REQUEST wss://ws.korbit.co.kr/v1/user/push
요청 메시지
퐁 메시지 프레임(rfc6455)
개인 - 일반
사용자의 정보, 잔고 등을 조회할 수 있다.
잔고 조회
요청예제
curl -D - -H "Authorization: Bearer $ACCESS_TOKEN" https://api.korbit.co.kr/v1/user/balances
응답예제
{
"krw" : {
"available" : "123000",
"trade_in_use" : "13000",
"withdrawal_in_use" : "0"
},
"btc" : {
"available" : "1.50200000",
"trade_in_use" : "0.42000000",
"withdrawal_in_use" : "0.50280000",
"avg_price": "7115500",
"avg_price_updated_at": 1528944850000
},
"eth" : {
"available" : "4.80200000",
"trade_in_use" : "1.23238000",
"withdrawal_in_use" : "0.00000000",
"avg_price": "529000",
"avg_price_updated_at": 1528944250000
},
"etc" : {
"available" : "10.00000000",
"trade_in_use" : "2.00000000",
"withdrawal_in_use" : "0.00000000",
"avg_price": "14770",
"avg_price_updated_at": 1528945850000
},
"xrp" : {
"available" : "134524.657899",
"trade_in_use" : "2332.000000",
"withdrawal_in_use" : "0.000000",
"avg_price": "594",
"avg_price_updated_at": 1528944340000
}
...
}
GET https://api.korbit.co.kr/v1/user/balances
모든 지갑의 잔고를 화폐별로 조회할 수 있다.
이 API는 VIEW
Scope가 필요하다.
필드
이름 | 설명 |
---|---|
available | 현재 거래 가능한 화폐의 수량. |
trade_in_use | 현재 거래중인 화폐의 수량. |
withdrawal_in_use | 현재 출금이 진행중인 화폐의 수량. |
avg_price | 코인의 경우 평균 매수 단가 |
avg_price_updated_at | 평균 매수 단가가 계산된 시각 |
입출금 지갑 정보 조회
요청예제
curl -D - -H "Authorization: Bearer $ACCESS_TOKEN" https://api.korbit.co.kr/v1/user/accounts
응답예제
{
"deposit": {
"btc": {
"address" :"3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy"
},
"etc": {
"address" :"0x123f681646d4a755815f9cb19e1acc8565a0c2aa"
},
"eth": {
"address" :"0x123f681646d4a755815f9cb19e1acc8565a0c2ac"
},
"xrp": {
"address" : "rMmTCjGFRWPz8S2zAUUoNVSQHxtRQD4eCx",
"destination_tag" : "100022001"
},
"ltc": {
"address": "MBRQmAR24h4RXZwMXmVjDBDdQZhQ2LAnjH"
},
...
},
"withdrawal": {
...
}
}
GET https://api.korbit.co.kr/v1/user/accounts
이 API는 VIEW
Scope가 필요하다.
필드
이름 | 설명 |
---|---|
address | 해당 화폐의 입금 주소. |
destination_tag | XRP, XLM, EOS 거래에서 사용되는 destination tag. 존재하는 경우만 반환. |
거래량과 거래 수수료
요청예제
curl -D - -H "Authorization: Bearer $ACCESS_TOKEN" "https://api.korbit.co.kr/v1/user/volume?currency_pair=$CURRENCY_PAIR"
응답예제
{
"btc_krw": {
"volume" : "17570000",
"maker_fee" : "0.00100000",
"taker_fee" : "0.00200000"
},
"eth_krw": {
"volume" : "0",
"maker_fee" : "0.00100000",
"taker_fee" : "0.00200000"
},
"etc_krw": {
"volume" : "6570000",
"maker_fee" : "0.00100000",
"taker_fee" : "0.00200000"
},
"total_volume" : "24140000",
"timestamp" : 1386418990000
}
GET https://api.korbit.co.kr/v1/user/volume
적용되는 수수료 정책에 따라 거래금액과 관련된 API를 제공한다. 거래금액은 매일 새로 정산되어 제공한다.
이 API는 VIEW
Scope가 필요하다.
파라미터
파라미터 | 기본값 | 설명 |
---|---|---|
currency_pair | all | 해당 거래 통화쌍의 거래량과 거래 수수료를 가져온다. 파라미터 값으로 해당 통화쌍의 이름이나 all 을 설정할 수 있다. |
필드
이름 | 설명 |
---|---|
currency_pair | 해당 통화쌍. |
volume | 해당 통화쌍의 30일간의 거래량(KRW). |
maker_fee | 베이시스 포인트(BPS - 1/100 퍼센트 기준)로 표기된 maker 거래 수수료율. |
taker_fee | 베이시스 포인트(BPS - 1/100 퍼센트 기준)로 표기된 taker 거래 수수료율. |
total_volume | 모든 통화쌍 거래의 거래량 총합(KRW). |
timestamp | 최종 거래량 및 거래 수수료 산정 시각(매시간에 한번씩 갱신). |
개인 - 거래
거래 주문내역, 체결내역을 확인하고, 매수/매도 주문을 실행 및 취소 할 수 있다.
매수 주문
요청예제
curl -D - -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -d "currency_pair=$CURRENCY_PAIR&type=$TYPE&price=$PRICE&coin_amount=$COIN_AMOUNT&nonce=$NONCE&post_only=true" https://api.korbit.co.kr/v1/user/orders/buy
요청예제 (Nonce 제외)
curl -D - -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -d "currency_pair=$CURRENCY_PAIR&type=$TYPE&price=$PRICE&coin_amount=$COIN_AMOUNT&post_only=true" https://api.korbit.co.kr/v1/user/orders/buy
응답예제
{
"orderId":"58738",
"status":"success",
"currency_pair":"btc_krw"
}
POST https://api.korbit.co.kr/v1/user/orders/buy
이 API는 TRADE
Scope가 필요하다.
파라미터
파라미터 | 설명 |
---|---|
currency_pair | 요청할 통화쌍. [제약조건]에 존재하는 통화쌍은 모두 사용할수 있으며, 이 외에 다른 통화쌍은 지원하지 않는다. |
type | 주문 형태. "limit" : 지정가 주문, "market" : 시장가 주문. |
price | 가격. 지정가 주문(type=limit)인 경우에만 유효하다. [제약조건]을 참조하여 가격을 설정해야 한다. |
coin_amount | 매수하고자 하는 코인의 수량. 시장가 주문(type=market)일 경우 coin_amount와 fiat_amount중 하나만 설정해야 하며(둘 다 설정할 경우 HTTP Status Code 400 반환), coin_amount를 설정하는 경우 지정한 수량만큼 시장가로 매수한다. |
fiat_amount | 코인을 구매하는데 사용하고자 하는 금액을 지정. 원화 Market 일 경우 원화, 다른 통화 Market일 경우 해당 Market의 통화로 금액을 지정한다. 예를들어, currency_pair가 'eth_krw;인 경우 100만원 만큼의 ETH 를 구매하고 싶다면 fiat_amount에 1000000을 지정한다. 시장가 주문(type=market)일 때만 유효한 파라미터이며, coin_amount와 같이 사용할 수 없다.(둘 다 설정할 경우 HTTP Status Code 400 반환) |
nonce | [선택항목] 중복요청을 방지하기 위한 항목. 해당 항목을 제외하고 요청할 경우 새로운 요청으로 처리가 된다. |
post_only | true 일 경우 요청된 주문이 taker에 해당될 경우 체결되지 않고 즉시 취소. |
필드
이름 | 설명 |
---|---|
orderId | 접수된 주문 ID |
status | 성공이면 "success", 실패할 경우 에러 심볼이 세팅된다. |
currency_pair | 해당 주문에 사용된 거래 통화 |
에러심볼
이름 | 설명 |
---|---|
name_unchecked | 본인인증을 하지 않은 사용자가 주문을 넣은 경우. |
not_enough_krw | 잔고가 부족하여 매수주문을 넣을 수 없는 경우. |
too_many_orders | 사용자 당 최대 주문 건수를 초과한 경우. |
save_failure | 기타 다른 이유로 주문이 들어가지 않은 경우. 일반적으로 발생하지 않음. |
매도 주문
요청예제
curl -D - -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -d "currency_pair=$CURRENCY_PAIR&type=$TYPE&price=$PRICE&coin_amount=$COIN_AMOUNT&nonce=$NONCE&post_only=true" https://api.korbit.co.kr/v1/user/orders/sell
요청예제 (Nonce 제외)
curl -D - -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -d "currency_pair=$CURRENCY_PAIR&type=$TYPE&price=$PRICE&coin_amount=$COIN_AMOUNT&post_only=true" https://api.korbit.co.kr/v1/user/orders/sell
응답예제
{
"orderId":"12513",
"status":"success",
"currency_pair":"btc_krw"
}
POST https://api.korbit.co.kr/v1/user/orders/sell
이 API는 TRADE
Scope가 필요하다.
파라미터
파라미터 | 설명 |
---|---|
currency_pair | 요청할 통화쌍. [제약조건]에 존재하는 통화쌍은 모두 사용할수 있으며, 이 외에 다른 통화쌍은 지원하지 않는다. |
type | 주문 형태. "limit" : 지정가 주문, "market" : 시장가 주문. |
price | 주문 가격. 지정가 주문(type=limit)인 경우에만 유효하다. [제약조건]을 참조하여 가격을 설정해야 한다. |
coin_amount | 매도하고자 하는 코인의 수량. |
nonce | [선택항목] 중복요청을 방지하기 위한 항목. 해당 항목을 제외하고 요청할 경우 새로운 요청으로 처리가 된다. |
post_only | true 일 경우 요청된 주문이 taker에 해당될 경우 체결되지 않고 즉시 취소. |
필드
이름 | 설명 |
---|---|
orderId | 접수된 주문 ID |
status | 성공이면 "success", 실패할 경우 에러 심볼이 세팅된다. |
currency_pair | 해당 주문에 사용된 거래 통화 |
에러심볼
이름 | 설명 |
---|---|
name_unchecked | 본인인증을 하지 않은 사용자가 주문을 넣은 경우. |
not_enough_btc | 잔고가 부족하여 매도주문을 넣을 수 없는 경우. |
too_many_orders | 사용자 당 최대 주문 건수를 초과한 경우. |
save_failure | 기타 다른 이유로 주문이 들어가지 않은 경우. 일반적으로 발생하지 않음. |
주문 취소
요청예제
curl -D - -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -d "currency_pair=$CURRENCY_PAIR&id=$ID&nonce=$NONCE" https://api.korbit.co.kr/v1/user/orders/cancel
요청예제 (Nonce 제외)
curl -D - -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -d "currency_pair=$CURRENCY_PAIR&id=$ID" https://api.korbit.co.kr/v1/user/orders/cancel
응답예제 : 주문 한 건당 하나의 상태값이 온다. 아래 예제는 1000, 1002번 주문에 대해서는 취소가 성공하였고, 1001번 주문의 경우 취소가 실패한 경우이다.
[
{"orderId":"1000","status":"success"},
{"orderId":"1001","status":"not_found"},
{"orderId":"1002","status":"success"}
]
POST https://api.korbit.co.kr/v1/user/orders/cancel
이 API는 TRADE
Scope가 필요하다.
파라미터
파라미터 | 설명 |
---|---|
currency_pair | 요청할 통화쌍. [제약조건]에 존재하는 통화쌍은 모두 사용할수 있으며, 이 외에 다른 통화쌍은 지원하지 않는다. |
id | 취소할 주문의 ID. 여러 건의 주문을 한 번에 취소할 수 있도록 id가 여러 번 올 수 있다. (ex. id=1000&id=1001&id=1002 ). v1/user/orders/open의 응답에 들어있는 id 필드의 값이나, v1/user/orders/buy 혹은 v1/user/orders/sell의 결과로 받은 orderId를 사용할 수 있다. |
nonce | [선택항목] 중복요청을 방지하기 위한 항목. 해당 항목을 제외하고 요청할 경우 새로운 요청으로 처리가 된다. |
필드
이름 | 설명 |
---|---|
orderId | id 파라미터로 넘긴 주문 일련번호. |
status | 성공이면 "success", 실패할 경우 에러 심볼이 세팅된다. |
에러심볼
이름 | 설명 |
---|---|
not_found | 해당 주문이 존재하지 않는 경우. 잘못된 주문 일련번호를 지정하면 이 에러가 발생한다. |
not_authorized | 다른 사용자의 주문을 취소하려고 한 경우. |
already_filled | 취소되기 전에 주문 수량 모두 체결된 경우. |
already_canceled | 이미 취소된 주문인 경우. |
rate_limited | 동일한 주문ID의 취소를 1초 내 10회 이상 요청한 경우. |
미 체결 주문내역
요청예제
curl -D - -H "Authorization: Bearer $ACCESS_TOKEN" https://api.korbit.co.kr/v1/user/orders/open?currency_pair=$CURRENCY_PAIR
응답예제
[
{
"timestamp": 1389173297000,
"id": "58726",
"type": "ask",
"price": {"currency":"krw", "value": "800000"},
"total": {"currency":"btc", "value": "1.00000000"},
"open": {"currency":"btc", "value": "0.75000000"}
},
{"timestamp":1386419377000,"id":"37499","type":"bid","price":{"currency":"krw","value":"700000"},
"total":{"currency":"btc","value":"1.50000000"},"open":{"currency":"btc","value":"0.41200000"}},
...
]
GET https://api.korbit.co.kr/v1/user/orders/open
이 API는 TRADE
또는 VIEW
Scope가 필요하다.
파라미터
파라미터 | 설명 |
---|---|
currency_pair | 요청할 통화쌍. [제약조건]에 존재하는 통화쌍은 모두 사용할수 있으며, 이 외에 다른 통화쌍은 지원하지 않는다. |
offset/limit | 전체 데이터 중 offset(0부터 시작) 번 째 데이터부터 limit개를 가져오도록 지정 가능하다. offset의 기본값은 0이다. limit의 기본값은 10이며, 최대값은 40이다. |
필드
이름 | 설명 |
---|---|
timestamp | 주문 시각 |
id | 주문 일련번호 |
type | 매수/매도 구분. "bid"는 매수주문, "ask"은 매도주문 |
price | 가격. price.value로 주문 가격이 들어온다. price.currency에는 거래에 사용한 통화가 설정된다. |
total | 주문 수량. currency는 해당 통화가, value에는 주문한 수량이 들어온다. |
open | 주문 수량 중 아직 체결되지 않은 수량. currency는 해당 통화가, value에는 아직 체결되지 않은 수량. |
거래소 주문 조회
요청예제
curl -D - -H "Authorization: Bearer $ACCESS_TOKEN" https://api.korbit.co.kr/v1/user/orders
응답예제
[
{
"id": "89999",
"currency_pair": "btc_krw",
"side": "bid",
"avg_price": "2900000",
"price": "3000000",
"order_amount": "0.81140000",
"filled_amount": "0.33122200",
"order_total": "2434200",
"filled_total": "960543",
"created_at": "1500033942638",
"last_filled_at": "1500533946947",
"status": "partially_filled",
"fee": "0.00000500"
},
{
"id": "90002",
"currency_pair": "btc_krw",
"side": "ask",
"avg_price": "0",
"price": "5000000",
"order_amount": "0.71140000",
"filled_amount": "0",
"order_total": "3557000",
"filled_total": "0",
"created_at": "1500533946947",
"status": "unfilled"
},
{
"id": "90003",
"currency_pair": "btc_krw",
"side": "bid",
"avg_price": "3000000",
"price": "3000000",
"order_amount": "0.81140000",
"filled_amount": "0.81140000",
"order_total": "2434200",
"filled_total": "2434200",
"created_at": 1400533933748,
"last_filled_at": "1500510381038",
"status": "filled",
"fee": "0.00001000"
},
...
]
GET https://api.korbit.co.kr/v1/user/orders
이 API는 TRADE
또는 VIEW
Scope가 필요하다.
파라미터
파라미터 | 설명 |
---|---|
currency_pair | 요청할 통화쌍. [제약조건]에 존재하는 통화쌍은 모두 사용할수 있으며, 이 외에 다른 통화쌍은 지원하지 않는다. |
status | 'unfilled', 'partially_filled', 'filled' 값 중의 하나로, 주문 상태에 따라 조회할 수 있다. 여러 상태를 조합하여 status=unfilled&status=partially_filled 와 같은 복합적인 콜을 만들어 낼 수 있다. |
id | 주문의 ID로 조회할 수 있다. 여러 id를 조합하여 id=90308&id=90374 와 같은 복합적인 콜을 만들어 낼 수 있다. |
offset | 전체 데이터 중 offset(기본값은 0)번째부터 데이터를 가져오도록 지정할 수 있다. 기본값은 0이다. |
limit | 전체 데이터 중 limit(기본값은 10)개만 가져오도록 지정할 수 있다. 최대값 40이다. |
필드
이름 | 설명 |
---|---|
id | 주문의 ID 식별번호. |
currency_pair | 해당 통화쌍. |
side | 매수/매도 구분. 매수 주문일 시에는 'bid', 매도 주문일 시에는 'ask'. |
avg_price | 체결 가격의 가중 평균치. |
price | 주문 시에 설정한 지정가. 시장가 주문일 경우에는 기본값인 0으로 나온다. |
order_amount | 주문 시에 지정한 코인의 수량. 시장가 주문의 경우, 체결된 수량이 나온다. |
filled_amount | 현재까지 체결된 코인의 수량. filledAmount와 orderAmount가 같을 때 주문이 체결 완료된다. |
order_total | 주문 금액. 시장가 매도 주문의 경우 이 필드는 표시되지 않는다. |
filled_total | 체결 금액. |
created_at | 거래를 주문한 시각. Unix timestamp(milliseconds)로 제공된다. |
last_filled_at | 거래가 부분 체결된 최종 시각. Unix timestamp(milliseconds)로 제공된다. 부분적으로도 전혀 체결되지 않은 주문(unfilled)에서는 이 필드는 표시되지 않는다. |
status | 현재 주문의 상태. 상태에 따라 'unfilled', 'partially_filled', 'filled' 값으로 나오게 된다. |
fee | 거래 수수료. 매수 주문일 시에는 해당 매수 코인으로 수수료가 적용되며, 매도 주문일 시에는 원화(KRW)로 수수료가 적용된다. 부분적으로도 전혀 체결되지 않은 주문(unfilled)에서는 이 필드는 표시되지 않는다. |
체결된 주문내역
요청예제
curl -D - -H "Authorization: Bearer $ACCESS_TOKEN" https://api.korbit.co.kr/v1/user/transactions?currency_pair=$CURRENCY_PAIR
응답예제
[
{
"timestamp": 1383707746000,
"completedAt": 1383797746000,
"id": "599",
"type": "sell",
"fee":{"currency":"krw","value":"0"},
"fillsDetail":{
"price": {"currency": "krw", "value": "1000000"},
"amount": {"currency": "btc", "value": "1"},
"native_amount": {"currency": "krw", "value": "1000000"},
"orderId":"1002"
},
"isMaker": true
},
{
"timestamp": 1383705741000,
"completedAt": 1383797746200,
"id": "597",
"type": "buy",
"fee":{"currency":"btc","value":"0.0015"},
"fillsDetail":{
"price": {"currency": "krw", "value": "1000000"},
"amount": {"currency": "btc", "value": "1"},
"native_amount": {"currency": "krw", "value": "1000000"},
"orderId":"1002"
},
"isMaker": false
}
]
GET https://api.korbit.co.kr/v1/user/transactions
이 기능은 거래소 주문 조회와 입출금 내역 조회 기능으로 세분화되었다. 기존 API 사용자의 편의를 위하여 본 기능은 제한적이나마 운영되지만, 신규 기능을 사용하는 것이 권장된다.
이 API는 TRADE
또는 VIEW
Scope가 필요하다.
파라미터
파라미터 | 설명 |
---|---|
currency_pair | 요청할 통화쌍. [제약조건]에 존재하는 통화쌍은 모두 사용할수 있으며, 이 외에 다른 통화쌍은 지원하지 않는다. |
offset/limit | 전체 데이터 중 offset(0부터 시작) 번 째 데이터부터 limit개를 가져오도록 지정 가능하다. offset의 기본값은 0이다. limit의 기본값은 10이며, 최대값은 40이다. |
필드(공통)
이름 | 설명 |
---|---|
timestamp | 체결, 입출금이 발생한 시각 |
completedAt | 완료 시각. 체결의 경우 항상 세팅되며, KRW입출금, BTC입출금의 경우 아직 완료되지 않은 상태로 처리 중인 경우 이 필드가 들어오지 않는다. |
id | 고유 일련번호. 각 카테고리 안에서만 일련번호가 고유하다. 예를 들어, 체결내역 안에서의 일련번호는 고유하지만, 체결내역과 KRW입출금 내역 간에는 동일한 일련번호가 사용될 수 있다. |
type | 데이터의 종류를 나타낸다. 데이터의 종류는 별도 기술한다. |
fee | category=fills인 경우에는 매수자, 매도자가 각각 부담한 수수료. BTC 매수 측의 수수료는 currency가 "btc"로, BTC 매도 측의 수수료는 currency가 "krw"로 들어온다. category=fiats이며, type=fiat-out인 경우에는 원화 출금 수수료가 currency=krw로 세팅된다. category=coins이며, type=coin-out인 경우에는 비트코인 출금 수수료가 currency=btc로 세팅된다. 그 외 다른 경우에는 이 필드가 응답에 포함되지 않는다. |
isMaker | Maker 주문 체결 적용 여부 |
데이터의 종류
괄호 안은 categories에 지정한 카테고리 값. 지정한 카테고리에 대한 데이터를 받을 떼, type이 세부 분류를 제공한다. 예를들어, 체결내역(fills)에서 type이 0이면 매수, 1이면 매도가 된다.
이름 | 설명 |
---|---|
buy | (fills) 매수 주문 체결 |
sell | (fills) 매도 주문 체결 |
서브필드(fillsDetail)
아래 필드들은 fillsDetail아래에 오는 필드들로, category가 fills인 경우에만 온다.
이름 | 설명 |
---|---|
price | 체결된 가격이며, currency와 value 필드가 들어있다. 현재는 currency가 항상 krw로 들어온다. |
amount | 체결된 수량이며, currency와 value 필드가 들어있다. currency 필드 값에는 currency_pair에 따라 "btc", "etc" 혹은 "eth"로 들어오며, value 필드에는 선택 화폐의 체결된 수량이 들어온다. |
native_amount | 체결된 가격과 수량을 계산한 총 거래된 액수. |
orderId | 원 주문의 ID. 해당 체결 건이 발생하기 전에 사용자가 실행한 주문의 ID이다. |
개인 - 지갑
가상자산 출금, 취소를 하거나, 입출금 내역을 조회할 수 있는 API이다.
가상자산 출금 (신규지원)
요청예제
curl -D - -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -d "currency=$CURRENCY&amount=$AMOUNT&address=$ADDRESS&secondary_address=$SECONDARY_ADDRESS&nonce=$NONCE" https://api.korbit.co.kr/v2/user/coins/out
응답예제
{
"transferId":"21591",
"status":"success"
}
POST https://api.korbit.co.kr/v2/user/coins/out
이 API는 WITHDRAWAL
Scope가 필요하다.
[Open API 등록 방법]
• Web: 코빗 웹 > 마이코빗 > Open API 관리 > API 출금 허용 주소 등록
진입 링크: https://exchange.korbit.co.kr/my/api/?menu=2
오픈 API 화이트리스트를 등록하실 때에는 지갑주소가 트래블룰 솔루션/화이트리스트 등록이행에 따른 출금 가능 거래소/개인지갑의 지갑주소가 맞는지 먼저 확인해주시기 바랍니다.
참고: 트래블룰 이행에 따른 출금방식
1. 트래블룰 솔루션을 통해 출금하는 경우
금액에 상관없이 트래블룰 솔루션을 통해 수신 거래소로부터 출금 허가가 되면 출금이 가능합니다.
• 트래블룰 솔루션을 통해 가능한 거래소 목록
2. 화이트리스트 등록을 통해 출금하는 경우
금액에 상관없이 화이트리스트 심사가 완료된 건에 한해 출금이 가능합니다.
• 화이트리스트 등록 가능한 거래소/개인지갑 목록
* OPEN API 화이트리스트 등록 및 트래블룰 정책과는 별도로 전기통신금융사기 예방을 위한 내부심사는 동일하게 진행되어 입출금이 보류 또는 취소될 수 있습니다.
파라미터
파라미터 | 설명 |
---|---|
currency | 필수 파라미터이며, 가상자산 종류를 지정한다. |
amount | 출금 수량. |
address | 출금 주소. |
secondary_address | 2차 주소가 있는 경우에 사용하는 파라미터. 기존의 destination_tag와도 호환되나 권장하지 않는다. |
필드
이름 | 설명 |
---|---|
transferId | 접수된 출금요청에 대한 고유 일련번호. 이후 출금요청을 취소할 때 사용 가능하다. |
status | 성공이면 "success", 실패한 경우 에러 심볼이 세팅된다. |
에러심볼
이름 | 설명 |
---|---|
another_transfer_in_progress | 아직 처리가 완료되지 않은 출금요청이 존재하는 경우. 앞서 실행한 출금요청의 처리가 완료되어야 그 다음 출금요청을 접수받을 수 있다. |
exceeds_api_daily_limit | API를 이용한 하루 출금가능액보다 큰 금액을 출금하려고 했을 때. |
exceeds_available_size | 잔고가 부족한 경우. |
save_failure | 기타 다른 이유로 출금 요청이 실패한 경우. 일반적으로 발생하지 않음. |
bad_request | 올바르지 않은 요청. |
unavailable_service | Travelrule 관련 에러. Travelrule 조건에 충족되지 않은 경우 발생. |
internal_error | 기타 서버 에러. |
가상자산 출금요청 취소
요청예제
curl -D - -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -d "currency=$CURRENCY&id=$ID&nonce=$NONCE" https://api.korbit.co.kr/v1/user/coins/out/cancel
응답예제
{
"transferId":"21591",
"status":"success"
}
POST https://api.korbit.co.kr/v1/user/coins/out/cancel
진행 중인 출금 요청을 취소하는 API이며, 관리자가 출금을 이미 진행 중이거나, 이미 출금이 완료된 경우에는 취소가 불가능 하다는 에러 코드를 받게 된다.
이 API는 WITHDRAWAL
Scope가 필요하다.
파라미터
파라미터 | 설명 |
---|---|
id | 가상자산 송금 API를 호출하여 받은 출금요청 일련번호 |
필드
이름 | 설명 |
---|---|
id | 가상자산 출금요청 고유번호. |
status | 성공이면 "success", 실패한 경우 에러 심볼이 세팅된다. |
에러심볼
이름 | 설명 |
---|---|
not_found | 출금요청이 존재하지 않는 경우. 잘못된 고유번호를 지정한 경우 발생한다. |
not_found | 다른 사용자의 출금요청을 취소하려고 시도한 경우. |
transfer_locked | 가상자산 출금이 이미 진행 중이어서 취소할 수 없는 경우. |
already_filled | 가상자산 출금이 이미 완료된 경우. |
입출금 내역 조회
요청예제
curl -D - -H "Authorization: Bearer $ACCESS_TOKEN" https://api.korbit.co.kr/v1/user/transfers
응답예제
[
{
"id": "270",
"type": "deposit",
"currency": "btc",
"amount": "0.81140000",
"completed_at": 11750020020,
"updated_at": 11550050080,
"created_at": 11550020020,
"status": "filled",
"details": {
"transaction_id": "2d84855aa9c...",
"address": "1F1zAaz5x1HUXrCNLbtMDqcw6o5GNx4xqX"
}
},
{
"id": "280",
"type": "withdrawal",
"currency": "btc",
"amount": "0.81140000",
"updated_at": 11550050080,
"created_at": 11550020020,
"status": "requested",
"details": {
"transaction_id": "2d84855aa9c...",
"address": "1F1zAaz5x1HUXrCNLbtMDqcw6o5GNx4xqX"
}
},
{
"id": "380",
"type": "deposit",
"currency": "krw",
"amount": "1100000",
"completed_at": 12550020020,
"updated_at": 11550020020,
"created_at": 11233223233,
"status": "filled"
},
{
"id": "480",
"timestamp": 12983983983,
"type": "withdrawal",
"currency": "krw",
"amount": "1200000",
"completed_at": 12550020020,
"updated_at": 11550020020,
"created_at": 11233223233,
"status": "filled",
"fee": "1800"
}
]
GET https://api.korbit.co.kr/v1/user/transfers
이 API는 WITHDRAWAL
또는 VIEW
Scope가 필요하다.
파라미터
파라미터 | 설명 |
---|---|
currency | 입출금 내역을 확인하고자 하는 거래 통화. KRW, BTC, ETH, ETC, XRP 등을 지원한다. |
type | 입출금의 종류로, 입금(deposit) 또는 출금(withdrawal)으로 파라미터를 설정할 수 있다. 기본값은 입출금(all)로, 입금 및 출금 내역을 모두 조회할 수 있다. |
offset | 전체 데이터 중 offset(기본값 0)번째부터 데이터를 가져오도록 지정할 수 있다. |
limit | 전체 데이터 중 limit(기본값 40)개만 가져오도록 지정할 수 있다. 최대값은 40이다. |
필드(공통)
이름 | 설명 |
---|---|
id | 입출금의 ID 식별번호 |
type | 입출금의 종류로 입금(deposit) 또는 출금(withdrawal)이 나오게 된다. |
currency | 입출금 화폐. |
amount | 입출금된 화폐의 수량. |
completed_at | 입출금이 완료된 시각. 입출금이 완료되지 않았을 때는 이 필드는 표시되지 않는다. Unix timestamp(milliseconds)로 제공된다. |
updated_at | 입출금 주문이 새로이 갱신된 시각. 이 필드값을 기준으로 입출금 항목이 최신순으로 정렬되어 리턴된다. Unix timestamp(milliseconds)로 제공된다. |
created_at | 입출금이 주문된 시각. Unix timestamp(milliseconds)로 제공된다. |
status | 현재 입출금 주문의 상태. |
fee | 출금액에서 차감된 출금수수료. 수수료의 화폐 단위는 출금된 화폐와 같다. 수수료가 발생한 경우에만 이 필드가 표시된다. |
서브필드(코인 입출금시)
이름 | 설명 |
---|---|
details.transaction_id | 코인의 거래 ID |
details.address | 코인의 예금주 |
details.destination_tag | 코인이 XRP, XLM, EOS등 2차 주소를 가지고 있는 경우에만 표시되는 destination tag |
가상자산 입출금 건별 상태조회
요청예제
curl -D - -H "Authorization: Bearer $ACCESS_TOKEN" https://api.korbit.co.kr/v1/user/coins/status
응답예제 : 입금내역
[
{
"timestamp": 1392620446000,
"id": "5180",
"type": "coin-in",
"amount": { "currency": "btc", "value": "0.01"},
"in": "1anjg6B2XbpjHx8LFw8mXHATH54vrxs2F",
"completedAt": 1392620446100
}
]
GET https://api.korbit.co.kr/v1/user/coins/status
응답예제 : 출금요청, 진행중인 경우
[
{
"timestamp": 1392620446000,
"id": "5180",
"type": "coin-out",
"amount": { "currency": "btc", "value": "0.01"},
"out": "1anjg6B2XbpjHh8LFw8xXHATH54vrxs2F"
}
]
응답예제 : 출금요청, 처리완료된 경우
[
{
"timestamp": 1392620446000,
"id": "5180",
"type": "coin-out",
"amount": { "currency": "btc", "value": "0.01"},
"out": "1anjg6B2XbpjHh8LFw8xXHATH54vrxs2F",
"completedAt": 1392620946300
}
]
가상자산 입금 내역과 출금 요청 개별 건에 대해서 현재 상태를 조회할 수 있다.
이 API는 WITHDRAWAL
또는 VIEW
Scope가 필요하다.
파라미터
파라미터 | 설명 |
---|---|
currency | 필수 파라미터이며, 가상자산 종류를 지정한다. |
id | 가상자산 입금내역 혹은 출금요청의 고유일련번호. 이 파라미터를 지정하지 않으면 현재 진행 중인 아직 완료되지 않은 출금요청을 가져온다. |
필드
이름 | 설명 |
---|---|
timestamp | 입금요청, 혹은 출금요청의 접수시각 |
id | 가상자산 입금요청 혹은 출금요청의 고유일련번호 |
type | 입금이면 "coin-in", 출금이면 "coin-out" |
amount | 입출금 금액. 이 안의 필드에 value로 금액이 오며, currency는 해당통화가 설정된다. |
in | type이 "coin-in"인 경우(입금)에만 응답 안에 포함되며, 입금받은 계좌 주소를 지닌다. |
out | type이 "coin-out"인 경우(출금)에만 응답 안에 포함되며, 출금시 지정한 상대방 주소를 지닌다. |
completedAt | 입금, 출금이 처리된 시각. 아직 처리되지 않은 경우, 이 필드가 오지 않는다. |
가상자산 주소 할당
요청예제
curl -D - -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -d "currency=$CURRENCY&nonce=$NONCE" https://api.korbit.co.kr/v1/user/coins/address/assign
응답예제
{
"address":"1F1xAaz5x1HUXrCNLbtMDqcw6o5GNn4xqX",
"status":"success"
}
POST https://api.korbit.co.kr/v1/user/coins/address/assign
사용자가 코빗 홈페이지를 이용해서 가입을 하면, 사용자에게는 가상자산 주소가 할당되지 않은 상태이다. 사용자는 홈페이지를 통해 로그인해서 가상자산 주소를 할당받을 수 있다. 아직 사용자가 가상자산 주소를 할당받지 않은 상태에서는 다음 API를 이용하여 사용자에게 가상자산 주소를 할당할 수 있다.
이 API는 WITHDRAWAL
Scope가 필요하다.
파라미터
파라미터 | 설명 |
---|---|
currency | 필수 파라미터이며, 가상자산 종류를 지정한다. |
필드
이름 | 설명 |
---|---|
address | 새로 할당 받은 가상자산 주소 문자열. 이미 가상자산 주소가 할당되어 있는 경우, 기존에 할당된 가상자산 주소를 세팅한다. |
status | 성공이면 "success", 실패한 경우 에러 심볼이 세팅된다. |
에러심볼
이름 | 설명 |
---|---|
already_assigned | 사용자에게 이미 가상자산 주소가 할당되어 있는 경우. |
no_more_address | 더 이상 할당할 수 있는 가상자산 주소가 없는 경우. |
save_failure | 기타 다른 사유로 가상자산 주소를 할당하지 못한 경우. |
API Key 발급신청
다음 URL에서 API Key를 발급받을 수 있다 : https://www.korbit.co.kr/my/api