# HTTP API
エンドポイント URL: https://api.coinbest.com
# API制限
HTTP APIは、以下のとおり呼出回数を制限いたします。
注文金額が5,000円以下の注文を大量に発注するお客様は、一時的に、発注できる注文数が 1 分間に約 10 回までに制限されることがあります。
システムに負荷をかける目的での発注を繰り返していると当社が判断した場合は、API の使用を制限することがあります。ご了承ください。
API key 毎の制限
- 同じ API key による1秒以内の呼出回数は10回まで
- 同じ API key による1分間以内の呼出回数は300回まで
IP 毎の制限
- 同じ IP による1秒以内の呼出回数は20回まで
- 同じ IP による1分間以内の呼出回数は600回まで
# 認証
Private API の呼出には認証が必要です。 ログイン後、[アカウント管理->API管理ページ] において発行した API key と API secret を使用します。
以下の情報を HTTP リクエストヘッダに含めます。
ACCESS-KEY : [アカウント管理->API管理ページ]で発行した API key
ACCESS-TIMESTAMP : リクエスト時の Unix Timestamp
ACCESS-SIGN : 以下の方法でリクエストごとに生成した署名
ACCESS-SIGN は、ACCESS-TIMESTAMP, HTTP メソッド, リクエストのパス, リクエストボディ を文字列として連結したもの(スペース無し)を、 API secret で HMAC-SHA256 署名を行った結果です。
アクセスサンプル(javascript)
const base_url = 'https://api.coinbest.com';
function getHeaders(apiKey, sign, timestamp) {
return {
'ACCESS-KEY' : apiKey,
'ACCESS-TIMESTAMP' : timestamp, // 13桁の数値(例:1649739120425)
'ACCESS-SIGN' : sign,
'Content-Type' : 'application/json'
};
}
let key = 'API管理画面にて発行されたAPI key';
let secret = 'API管理画面にて発行されたAPI secret';
let method = 'GET';
let path = '/v1/assets/get_balance';
let body = JSON.stringify({
// パラメータ(リクエストメソッドがGETの場合は設定なし)
});
var timestamp = Date.now().toString();
var signData = timestamp + method + path + (method == 'GET' ? '' : body); // 注意:スペースなしの文字列
var sign = crypto.createHmac('sha256', secret).update(signData).digest('hex');
var options = {
url: base_url + path,
method: method,
body: body,
headers: getHeaders(key, sign, timestamp)
};
Request(options, function (err, response, body) {
Assert.equal(err, null);
var bodyObj = JSON.parse(body);
Assert.equal(bodyObj['code'], 0);
console.log(body);
});
# API key の権限
API key を作成する際には、key 毎に権限設定を行うことが出来ます。
# エラーコード
80000:引数が不正、または、権限がありません。
81000:データが存在しません。
82000:サーバーが一時的に無効となっています。
82100:当該通貨ペアの注文は一時停止中です。
83000:小数量単位の注文頻度が高過ぎます。
84000:権限がありません。
85000:操作に失敗しました。
86000:残高が不足しています。
87000:指定された価格は無効です。(テイカ―の場合、最終成約価格の130%以内の価格を指定してください。)
88000:アクセス頻度が定められた制限を超えています。
89000:指定された数量は無効です。(当社が定める最小数量以上としてください。).
# HTTP Public API
# マーケットの一覧
# リクエスト
GET /v1/markets
# レスポンス
{
"data": [
{
"currency_pair": "BTC_JPY",
"is_valid": "1"
},
{
"currency_pair": "DAI_JPY",
"is_valid": "1"
}
],
"code": 0,
"message": "Succeed."
}
# 板情報
# リクエスト
GET /v1/order_book?currency_pair=DAI_JPY
- クエリパラメータ
currency_pair
:マーケットの一覧で取得したコード(例:DAI_JPY)
# レスポンス
{
"data": {
"last": 122.72,
"bids": [
{
"price": 122.59,
"size": 0.76
},
{
"price": 122.51,
"size": 0.4
},
{
"price": 122.48,
"size": 0.37
}
],
"asks": [
{
"price": 122.76,
"size": 1.6
},
{
"price": 122.8,
"size": 1.4
},
{
"price": 122.83,
"size": 0.37
}
]
},
"code": 0,
"message": "Succeed."
}
# Ticker
# リクエスト
GET v1/ticker?currency_pair=DAI_JPY
- クエリパラメータ
currency_pair
:マーケットの一覧で取得したコード(例:DAI_JPY)
# レスポンス
{
"data": {
"vol": "1678.97",
"last": "122.72",
"buy": "122.59",
"sell": "122.76",
"high": "122.72",
"open": "123.62",
"low": "122.72",
"last24h": "0",
"mid_price": 123,
"ratio": "0.00%"
},
"code": 0,
"message": "Succeed."
}
# 約定履歴
# リクエスト
GET /v1/trade_history?currency_pair=DAI_JPY&count=10
- クエリパラメータ
currency_pair
:マーケットの一覧で取得したコード(例:DAI_JPY)count
:取得する件数
# レスポンス
{
"data": [
{
"side": "BUY",
"exec_date": 1649221279822,
"price": 5764649,
"size": 0.001
},
{
"side": "BUY",
"exec_date": 1649220911037,
"price": 5764649,
"size": 0.001
},
{
"side": "SELL",
"exec_date": 1649063342352,
"price": 5764893,
"size": 0.000046
},
{
"side": "SELL",
"exec_date": 1649063342348,
"price": 5764893,
"size": 0.000954
},
{
"side": "SELL",
"exec_date": 1649063328138,
"price": 5764649,
"size": 0.000982
}
],
"code": 0,
"message": "Succeed."
}
# HTTP Private API
# 資産残高取得
# リクエスト
GET /v1/assets/get_balance
クエリパラメータ
なし
# レスポンス
{
"data": {
"balances": [
{
"currency": "DAI",
"amount": "53.03",
"available": "52.03"
},
{
"currency": "ETH",
"amount": "0.981",
"available": "0.9799"
},
{
"currency": "DAI",
"amount": "0.20554499",
"available": "0.20033379"
},
{
"currency": "JPY",
"amount": "426624",
"available": "162960"
}
]
},
"code": 0,
"message": "Succeed."
}
# 新規注文
# リクエスト
POST /v1/trade/send_order
- Body
currency_pair
:マーケットの一覧で取得したコード(例:DAI_JPY)order_type
:指値注文(LIMIT)または成行注文(MARKET)
{
"currency_pair": "DAI_JPY",
"order_type": "LIMIT",
"side": "BUY",
"price": 122,
"size": 2
}
# レスポンス
{
"data": {
"order_id": "IDAI20220407-163346-423927365"
},
"code": 0,
"message": "Succeed."
}
# 注文キャンセル
# リクエスト
POST /v1/trade/cancel_order
- Body
order_id
:新規注文に付与されたIDcurrency_pair
:マーケットの一覧で取得したコード(例:DAI_JPY)
{
"order_id": "IDAI20220407-163346-403593716",
"currency_pair": "DAI_JPY"
}
# レスポンス
{
"data": {
"order_id": "IDAI20220407-163346-403593716"
},
"code": 0,
"message": "Succeed."
}
# 注文の複数キャンセル
# リクエスト
POST /v1/trade/cancel_order_batch
- Body
order_id
:新規注文に付与されたIDcurrency_pair
:マーケットの一覧で取得したコード(例:DAI_JPY)
{
"orders": [
{
"order_id": "IDAI20220407-165634-192560203",
"currency_pair": "DAI_JPY"
},
{
"order_id": "IDAI20220407-165634-241503352",
"currency_pair": "DAI_JPY"
},
{
"order_id": "IDAI20220407-165633-926373526",
"currency_pair": "DAI_JPY"
},
{
"order_id": "IDAI20220407-165634-204810065",
"currency_pair": "DAI_JPY"
},
{
"order_id": "IDAI20220407-165634-228117047",
"currency_pair": "DAI_JPY"
}
]
}
# レスポンス
{
"data": {
"success": [
"IDAI20220407-165633-926373526",
"IDAI20220407-165634-192560203",
"IDAI20220407-165634-204810065",
"IDAI20220407-165634-228117047",
"IDAI20220407-165634-241503352"
],
"failed": []
},
"code": 0,
"message": "Succeed."
}
# 未決済注文の一覧を取得
# リクエスト
GET /v1/trade/get_orders?offset=0&limit=10
クエリパラメータ
offset
:開始位置limit
:最大取得件数
# レスポンス
{
"data": [
{
"id": "8843276",
"order_id": "IDAI20220407-163346-300458841",
"date": "1649316826",
"side": "BUY",
"size": "4",
"price": "126",
"currency_pair": "DAI_JPY",
"order_type": "LIMIT",
"executed_size": "0.000000",
"executed_funds": "0",
"state": "ACTIVE",
"time_in_force": "GTC"
},
{
"id": "8843275",
"order_id": "IDAI20220407-163346-285393985",
"date": "1649316826",
"side": "BUY",
"size": "4",
"price": "124",
"currency_pair": "DAI_JPY",
"order_type": "LIMIT",
"executed_size": "0.000000",
"executed_funds": "0",
"state": "ACTIVE",
"time_in_force": "GTC"
}
],
"code": 0,
"message": "Succeed."
}
# オーダーIDで注文の詳細を取得
# リクエスト
GET /v1/trade/get_order_details?order_id=BDAI20201105-173524-259911816
クエリパラメータ
order_id
:新規注文に付与されたID
# レスポンス
{
"data": {
"order_id": "IDAI20220405-165019-348663620",
"date": "1649145019",
"side": "BUY",
"size": "2",
"price": "122",
"currency_pair": "DAI_JPY",
"order_type": "LIMIT",
"executed_size": "0.000000000000000000",
"executed_funds": "0",
"state": "ACTIVE",
"paid_fee": "0.000000000000000000"
},
"code": 0,
"message": "Succeed."
}
# 注文の複数情報取得
# リクエスト
POST /v1/trade/get_order_batch
- Body
order_id
:新規注文に付与されたID
{
"orders": [
"IDAI20220407-163346-374248165",
"IDAI20220407-163346-386834775"
]
}
# レスポンス
{
"data": {
"IDAI20220407-163346-374248165": {
"code": 0,
"detail": {
"order_id": "IDAI20220407-163346-374248165",
"date": "1649316826",
"side": "BUY",
"size": "4",
"price": "122",
"currency_pair": "DAI_JPY",
"order_type": "LIMIT",
"executed_size": "0.000000000000000000",
"executed_funds": "0.000000000000000000",
"state": "ACTIVE",
"paid_fee": "0.000000000000000000"
}
},
"IDAI20220407-163346-386834775": {
"code": 0,
"detail": {
"order_id": "IDAI20220407-163346-386834775",
"date": "1649316826",
"side": "BUY",
"size": "4",
"price": "123",
"currency_pair": "DAI_JPY",
"order_type": "LIMIT",
"executed_size": "0.000000000000000000",
"executed_funds": "0.000000000000000000",
"state": "ACTIVE",
"paid_fee": "0.000000000000000000"
}
}
},
"code": 0,
"message": "Succeed."
}
# 約定履歴を取得
# リクエスト
POST /v1/trade/my_trade_history
- Body
currency_pair
:マーケットの一覧で取得したコード(例:DAI_JPY)
{
"currency_pair": "DAI_JPY"
}
# レスポンス
{
"data": [
{
"orderid": "IDAI20220209-155911-948384728",
"trade_id": "1254",
"price": "115.38",
"jpy_price": "115.38",
"size": "5",
"side": "BUY",
"currency_pair": "DAI_JPY",
"exec_date": "1644396570"
},
{
"orderid": "IDAI20220209-155855-753696104",
"trade_id": "1253",
"price": "115.56",
"jpy_price": "115.56",
"size": "5",
"side": "BUY",
"currency_pair": "DAI_JPY",
"exec_date": "1644389936"
}
],
"code": 0,
"message": "Succeed."
}
# 取引手数料を取得
# リクエスト
POST /v1/trade/get_fee
- Body
currency_pair
:マーケットの一覧で取得したコード(例:DAI_JPY)
{
"currency_pair": "DAI_JPY"
}
# レスポンス
{
"data": {
"currency_pair": "DAI_JPY",
"maker_fee_rate": "0.000000",
"taker_fee_rate": "0.000000"
},
"code": 0,
"message": "Succeed."
}
# 預入用アドレス取得
# リクエスト
GET /v1/fund/get_coin_deposit_address?currency=DAI
- クエリパラメータ
currency
:マーケットの一覧で取得したコード(例:DAI)
# レスポンス
{
"data": [
{
"chain_symbol": "DAI",
"address": "2NErEcnhHfFgmJb2GLiziKuvwAxxELNX1tF"
}
],
"code": 0,
"message": "Succeed."
}
# Realtime API
# 接続情報
# Socket.IO 2.0 (WebSocket)
注意事項
現在、socket.io は v2.x のみのサポートとなっています。
エンドポイント
URL:
https://wsapi.coinbest.com/openapi
イベント
connect
メソッド
subscribe
- チャンネルの購読を開始しますunsubscribe
- チャンネルの購読を解除します
接続例
- javascript
const io = require('socket.io-client'); const socket = io('https://wsapi.coinbest.com/openapi', { transports: ["websocket"] }); socket.on('connect', () => { socket.emit('subscribe', 'board_DAI_JPY'); socket.emit('subscribe', 'ticker_DAI_JPY'); }); socket.on('board_DAI_JPY', message=> { console.log('[BOARD]'+message); }); socket.on('ticker_DAI_JPY', message=> { console.log('[TICKER]'+message); });
- java
<dependencies> <dependency> <groupId>io.socket</groupId> <artifactId>socket.io-client</artifactId> <version>1.0.2</version> </dependency>
import io.socket.client.Manager; import io.socket.client.IO; import io.socket.client.Socket; import io.socket.emitter.Emitter; IO.Options opts = new IO.Options(); opts.transports = new String[]{"websocket"}; Socket socket; socket = IO.socket(URI.create("https://wsapi.coinbest.com/openapi"), opts); socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { @Override public void call(Object... objects) { socket.emit("subscribe", "board_DAI_JPY"); socket.emit("subscribe", "ticker_DAI_JPY"); } }) socket.on("board_DAI_JPY", new Emitter.Listener() { @Override public void call(Object... args) { for (Object obj : args) { log.info(obj.toString()); } } }); socket.on("ticker_DAI_JPY", new Emitter.Listener() { @Override public void call(Object... args) { for (Object obj : args) { log.info(obj.toString()); } } }); socket.connect();
# 板情報
# Channel Name
Channel Nameは、マーケットの一覧にて取得できるcurrency_pair
の前にboard_
を付与したものです。
- DAI/JPY:board_DAI_JPY
# レスポンス
{
"currency_pair":"DAI_JPY",
"asks":[
["128.36","0.35","CoinBest"],
["128.52","7.80","CoinBest"],
["128.55","1345.84","CoinBest"],
["128.56","1115.14","CoinBest"],
["128.67","0.50","CoinBest"],
["128.75","2.22","CoinBest"],
["128.95","924.29","CoinBest"],
["129.37","854.03","CoinBest"],
["129.50","881.00","CoinBest"],
["129.60","895.00","CoinBest"]
],
"bids":[
["128.17","625.00","CoinBest"],
["128.16","1746.86","CoinBest"],
["128.15","921.00","CoinBest"],
["128.14","933.33","CoinBest"],
["128.13","1441.46","CoinBest"],
["128.08","1.17","CoinBest"],
["128.03","0.35","CoinBest"],
["127.77","391.68","CoinBest"],
["127.74","867.00","CoinBest"],
["127.49","1.22","CoinBest"]
],
"nonce":"1650504550270"
}
# Ticker
# Channel Name
Channel Nameは、マーケットの一覧にて取得できるcurrency_pair
の前にticker_
を付与したものです。
- DAI/JPY:
ticker_DAI_JPY
# レスポンス
{
"currency_pair":"DAI_JPY",
"last_price":127.49,
"exec_date":"1537325106092"
}