NAV Navbar
shell

소개

코빗은 대한민국의 암호화폐 생태계 활성화를 위해 다음과 같은 API를 제공한다.

API call rate limit

안정적인 Korbit API 서비스 제공을 위하여 짧은 시간 내에 limit call rate을 초과하는 일정 빈도 이상의 호출은 허용되지 않는다. Access token 발급 및 갱신은 60분에 60번 호출할 수 있고, Ticker 기능은 60초에 60번 호출할 수 있으며, 이를 제외한 다른 모든 기능은 종류에 상관없이 도합 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 방식을 계속 사용할 수 있으나, 보안을 위하여 권장하지 않는다.

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을 설명한 동영상 1

OAuth 2.0을 설명한 동영상 2

OAuth 2.0을 설명한 동영상 3

OAuth 2.0을 설명한 동영상 4

OAuth 2.0기반 웹서비스를 사용하는 입장(Consumer)에서 참고할 자료

(구글)OAuth 2.0 개요

(구글)모바일 앱에서 OAuth 2.0 사용 예

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

수수료, 각 가상화폐의 수량, 가격 최소 최대 입력값과 같은 제약조건을 가져온다.

필드

이름 설명
exchange 거래 제약조건
currency_pair 해당 거래의 통화쌍 (btc_krw, eth_krw, ...)
tick_size 호가단위
min_price 최소 주문가
max_price 최대 주문가
order_min_size 매수/매도 수량 최소 입력값
order_max_size 매수/매도 수량 최대 입력값

개인 - 일반

사용자의 정보, 잔고 등을 조회할 수 있다.

잔고 조회

요청예제

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" 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 반환)

필드

이름 설명
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" 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 매도하고자 하는 코인의 수량.

필드

이름 설명
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

응답예제 : 주문 한 건당 하나의 상태값이 온다. 아래 예제는 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를 사용할 수 있다.

필드

이름 설명
orderId id 파라미터로 넘긴 주문 일련번호.
status 성공이면 "success", 실패할 경우 에러 심볼이 세팅된다.

에러심볼

이름 설명
not_found 해당 주문이 존재하지 않는 경우. 잘못된 주문 일련번호를 지정하면 이 에러가 발생한다.
not_authorized 다른 사용자의 주문을 취소하려고 한 경우.
already_filled 취소되기 전에 주문 수량 모두 체결된 경우.
already_canceled 이미 취소된 주문인 경우.

미 체결 주문내역

요청예제

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":"1500"},
    "fillsDetail":{
      "price": {"currency": "krw", "value": "1000000"},
      "amount": {"currency": "btc", "value": "1"},
      "native_amount": {"currency": "krw", "value": "1000000"},
      "orderId":"1002"
    }
  },
  {
    "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"
    }
  }
]

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로 세팅된다. 그 외 다른 경우에는 이 필드가 응답에 포함되지 않는다.

데이터의 종류

괄호 안은 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&destination_tag=$DESTINATION_TAG&nonce=$NONCE" https://api.korbit.co.kr/v1/user/coins/out

응답예제

{
  "transferId":"21591",
  "status":"success"
}

POST https://api.korbit.co.kr/v1/user/coins/out

API를 사용하여 코인 출금이 필요 할 시 biz@korbit.co.kr로 문의해야한다. 이 API는 WITHDRAWAL Scope가 필요하다.

파라미터

파라미터 설명
currency 필수 파라미터이며, 암호화폐 종류를 지정한다.
amount 출금 수량.
address 출금 주소.
destination_tag 데스티네이션 태그. xrp, xlm일 경우만 사용된다.

필드

이름 설명
transferId 접수된 출금요청에 대한 고유 일련번호. 이후 출금요청을 취소할 때 사용 가능하다.
status 성공이면 "success", 실패한 경우 에러 심볼이 세팅된다.

에러심볼

이름 설명
another_transfer_in_progress 아직 처리가 완료되지 않은 출금요청이 존재하는 경우. 앞서 실행한 출금요청의 처리가 완료되어야 그 다음 출금요청을 접수받을 수 있다.
exceeds_api_daily_limit API를 이용한 하루 출금가능액보다 큰 금액을 출금하려고 했을 때.
exceeds_available_size 잔고가 부족한 경우.
save_failure 기타 다른 이유로 출금 요청이 실패한 경우. 일반적으로 발생하지 않음.

암호화폐 출금요청 취소

요청예제

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가 필요하다.

파라미터

파라미터 설명
currency 필수 파라미터이며, 암호화폐 종류를 지정한다.
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