HTTP API

HTTP Public API

HTTP Private API

Realtime API

API Documentation

bitFlyer Lightning では、HTTP APIRealtime API の 2 種類の API を提供しています。

HTTP API

エンドポイント URL: https://api.bitflyer.jp/v1/

HTTP API には、API キーによる認証が不要な HTTP Public API と、 認証が必要な HTTP Private API に分けられます。

API Playground では、これらの API の呼び出しを試すことができます。

API制限

HTTP API は、以下のとおり呼び出し回数を制限いたします。


認証

Private API の呼び出しには認証が必要です。 ログイン後、開発者ページ において発行した API key と API secret を使用します (API key は、プレミアム・エコノミークラス、またはコーポレート以上のお客様にご利用いただけます)。

以下の情報を HTTP リクエストヘッダに含めます。

ACCESS-SIGN は、ACCESS-TIMESTAMP, HTTP メソッド, リクエストのパス, リクエストボディ を文字列として連結したものを、 API secret で HMAC-SHA256 署名を行った結果です。

// Node.js のサンプル
var request = require('request');
var crypto = require('crypto');

var key = '{{ YOUR API KEY }}';
var secret = '{{ YOUR API SECRET }}';

var timestamp = Date.now().toString();
var method = 'POST';
var path = '/v1/me/sendchildorder';
var body = JSON.stringify({
    product_code: 'BTC_JPY',
    child_order_type: 'LIMIT',
    side: 'BUY',
    price: 30000,
    size: 0.1
});

var text = timestamp + method + path + body;
var sign = crypto.createHmac('sha256', secret).update(text).digest('hex');

var options = {
    url: 'https://api.bitflyer.jp' + path,
    method: method,
    body: body,
    headers: {
        'ACCESS-KEY': key,
        'ACCESS-TIMESTAMP': timestamp,
        'ACCESS-SIGN': sign,
        'Content-Type': 'application/json'
    }
};
request(options, function (err, response, payload) {
    console.log(payload);
});

API キーの権限

API キーを作成する際には、キーごとにパーミッションを指定することができます。 キーの持っている権限の一覧を取得するには API キーの権限を取得する API を使用してください。

API キーの権限設定

ページ形式

複数の結果を返す API は、範囲を指定しての読み込みに対応しています。

二段階認証

コインの外部送付、または出金時の二段階認証を設定している場合、それらの API 呼び出し時にも二段階認証が必要です。 確認コードを code パラメータとしてリクエストに含めることで認証を行います。 code パラメータを指定しなかった場合や、確認コードが間違っている場合、以下のようなエラーレスポンスを返します。

{
  "status": -505,
  "error_message": "Two-factor authentication code is incorrect."
}

メール、もしくは SMS による二段階認証を設定されている場合は、同時に確認コードをお送りしますので、その値を含めて再度 API を呼び出してください。

HTTP Public API

板情報

リクエスト

GET /v1/getboard
GET /v1/board

クエリパラメータ

レスポンス

{
  "mid_price": 33320,
  "bids": [
    {
      "price": 30000,
      "size": 0.1
    },
    {
      "price": 25570,
      "size": 3
    }
  ],
  "asks": [
    {
      "price": 36640,
      "size": 5
    },
    {
      "price": 36700,
      "size": 1.2
    }
  ]
}

Ticker

リクエスト

GET /v1/getticker
GET /v1/ticker

クエリパラメータ

レスポンス

{
  "product_code": "BTC_JPY",
  "timestamp": "2015-07-08T02:50:59.97",
  "tick_id": 3579,
  "best_bid": 30000,
  "best_ask": 36640,
  "best_bid_size": 0.1,
  "best_ask_size": 5,
  "total_bid_depth": 15.13,
  "total_ask_depth": 20,
  "ltp": 31690,
  "volume": 16819.26,
  "volume_by_product": 6819.26
}

約定履歴

リクエスト

GET /v1/getexecutions
GET /v1/executions

クエリパラメータ

レスポンス

[
  {
    "id": 39287,
    "side": "BUY",
    "price": 31690,
    "size": 27.04,
    "exec_date": "2015-07-08T02:43:34.823",
    "buy_child_order_acceptance_id": "JRF20150707-200203-452209",
    "sell_child_order_acceptance_id": "JRF20150708-024334-060234"
  },
  {
    "id": 39286,
    "side": "SELL",
    "price": 33170,
    "size": 0.36,
    "exec_date": "2015-07-08T02:43:34.72",
    "buy_child_order_acceptance_id": "JRF20150708-010230-400876",
    "sell_child_order_acceptance_id": "JRF20150708-024334-197755"
  }
]

取引所の状態

取引所の稼動状態を取得します。

リクエスト

GET /v1/gethealth

レスポンス

{
  "status": "NORMAL"
}

チャット

チャットの発言一覧を取得します。

リクエスト

GET /v1/getchats

クエリパラメータ

レスポンス

[
  {
    "nickname": "User1234567",
    "message": "Hello world!",
    "date": "2016-02-16T10:58:08.833"
  },
  {
    "nickname": "ビット太郎",
    "message": "サンプルメッセージ",
    "date": "2016-02-15T10:18:06.67"
  }
]

HTTP Private API

Private API の呼び出しには、API key による認証が必要です。 認証 の項を参照してください。

API キーの権限を取得

この API キーで呼び出し可能な HTTP Private API の一覧を取得できます。

リクエスト

GET /v1/me/getpermissions

レスポンス

[
  "/v1/me/getpermissions",
  "/v1/me/getbalance",
  "/v1/me/getcollateral",
  "/v1/me/getchildorders",
  "/v1/me/getparentorders",
  "/v1/me/getparentorder",
  "/v1/me/getexecutions",
  "/v1/me/getpositions"
]

資産残高を取得

リクエスト

GET /v1/me/getbalance

レスポンス

[
  {
    "currency_code": "JPY",
    "amount": 1024078,
    "available": 508000
  },
  {
    "currency_code": "BTC",
    "amount": 10.24,
    "available": 4.12
  },
  {
    "currency_code": "ETH",
    "amount": 20.48,
    "available": 16.38
  }
]

証拠金の状態を取得

リクエスト

GET /v1/me/getcollateral

レスポンス

{
  "collateral": 100000,
  "open_position_pnl": -715,
  "require_collateral": 19857,
  "keep_rate": 5.000
}

預入用ビットコイン・イーサリアムアドレス取得

リクエスト

GET /v1/me/getaddresses

レスポンス

[
  {
    "type": "NORMAL",
    "currency_code": "BTC",
    "address": "3AYrDq8zhF82NJ2ZaLwBMPmaNziaKPaxa7"
  },
  {
    "type": "NORMAL",
    "currency_code": "ETH",
    "address": "0x7fbB2CC24a3C0cd3789a44e9073381Ca6470853f"
  }
]

ビットコイン・イーサ預入履歴

リクエスト

GET /v1/me/getcoinins

クエリパラメータ

レスポンス

[
  {
    "id": 100,
    "order_id": "CDP20151227-024141-055555",
    "currency_code": "BTC",
    "amount": 0.00002,
    "address": "1WriteySQufKZ2pVuM1oMhPrTtTVFq35j",
    "tx_hash": "9f92ee65a176bb9545f7becb8706c50d07d4cee5ffca34d8be3ef11d411405ae",
    "status": "COMPLETED",
    "event_date": "2015-11-27T08:59:20.301"
  }
]

ビットコイン・イーサ外部送付

リクエスト

POST /v1/me/sendcoin

Body パラメータ

{
  "currency_code": "BTC",
  "amount": 0.1234,
  "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
  "additional_fee": 0.0001,
  "code": "012345"
}


{
  "currency_code": "ETH",
  "amount_text": "1.23456789",
  "address": "0x1234567890123456789012345678901234567890"
}

レスポンス

{
  "message_id": "69476620-5056-4003-bcbe-42658a2b041b"
}


エラーレスポンスの例

{
  "status": -1300,
  "error_message": "Incorrect Bitcoin address.",
  "data": null
}

エラーが発生して負の status 値が返った場合は、送付は実行されません。

ビットコイン・イーサ送付履歴

リクエスト

GET /v1/me/getcoinouts

クエリパラメータ

レスポンス

[
  {
    "id": 500,
    "order_id": "CWD20151224-014040-077777",
    "currency_code": "BTC",
    "amount": 0.1234,
    "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
    "tx_hash": "724c07dfd4044abcb390b0412c3e707dd5c4f373f0a52b3bd295ce32b478c60a",
    "additional_fee": 0.0001,
    "status": "COMPLETED",
    "event_date": "2015-12-24T01:40:40.397"
  }
]

銀行口座一覧取得

アカウントに登録された銀行口座の一覧を取得します。

リクエスト

GET /v1/me/getbankaccounts

レスポンス

[
  {
    "id": 3402,
    "is_verified": true,
    "bank_name": "三井住友銀行",
    "branch_name": "アオイ支店",
    "account_type": "普通",
    "account_number": "1111111",
    "account_name": "ビットフライヤータロウ"
  }
]

デポジット入金履歴

リクエスト

GET /v1/me/getdeposits

クエリパラメータ

レスポンス

[
  {
    "id": 300,
    "order_id": "MDP20151014-101010-033333",
    "currency_code": "JPY",
    "amount": 10000,
    "status": "COMPLETED",
    "event_date": "2015-10-14T10:10:10.001"
  }
]

デポジット解約

リクエスト

POST /v1/me/withdraw

Body パラメータ

{
  "currency_code": "JPY",
  "bank_account_id": 1234,
  "amount": 12000,
  "code": "012345"
}

別途デポジット解約手数料がかかります。 手数料一覧・税のページをご覧ください。

レスポンス

{
  "message_id": "69476620-5056-4003-bcbe-42658a2b041b"
}


エラーレスポンスの例

{
  "status": -700,
  "error_message": "This account has not yet been authenticated",
  "data": null
}

エラーが発生して負の status 値が返った場合は、デポジットの解約は実行されません。

デポジット解約履歴

リクエスト

GET /v1/me/getwithdrawals

クエリパラメータ

レスポンス

[
  {
    "id": 700,
    "order_id": "MWD20151020-090909-011111",
    "currency_code": "JPY",
    "amount": 12000,
    "status": "COMPLETED",
    "event_date": "2015-10-20T09:09:09.416"
  }
]

新規注文を出す

リクエスト

POST /v1/me/sendchildorder

Body パラメータ

{
  "product_code": "BTC_JPY",
  "child_order_type": "LIMIT",
  "side": "BUY",
  "price": 30000,
  "size": 0.1,
  "minute_to_expire": 10000,
  "time_in_force": "GTC"
}

レスポンス

パラメータが正しい場合は、ステータスコード 200 OK が返ります。

{
    "child_order_acceptance_id": "JRF20150707-050237-639234"
}

注文をキャンセルする

リクエスト

POST /v1/me/cancelchildorder

Body パラメータ

{
  "product_code": "BTC_JPY",
  "child_order_id": "JOR20150707-055555-022222"
}

{
  "product_code": "BTC_JPY",
  "child_order_acceptance_id": "JRF20150707-033333-099999"
}

child_order_id または child_order_acceptance_id のどちらか片方のみを指定してください。

レスポンス

パラメータが正しい場合は、ステータスコード 200 OK が返ります。

新規の親注文を出す(特殊注文)

単純な指値注文 (LIMIT), 成り行き注文 (MARKET) 以外の、ロジックを含んだ注文を発注することができます。 このような注文は、親注文 (parent order) として扱われます。 特殊注文を利用することで、マーケットの状況に応じて注文を出したり、複数の注文を関連付けたりすることが可能です。

注文の方法と種類については、bitFlyer Lightning の特殊注文について もよくお読みください。

リクエスト

POST /v1/me/sendparentorder

Body パラメータ

{
  "order_method": "IFDOCO",
  "minute_to_expire": 10000,
  "time_in_force": "GTC",
  "parameters": [{
    "product_code": "BTC_JPY",
    "condition_type": "LIMIT",
    "side": "BUY",
    "price": 30000,
    "size": 0.1
  },
  {
    "product_code": "BTC_JPY",
    "condition_type": "LIMIT",
    "side": "SELL",
    "price": 32000,
    "size": 0.1
  },
  {
    "product_code": "BTC_JPY",
    "condition_type": "STOP_LIMIT",
    "side": "SELL",
    "price": 28800,
    "trigger_price": 29000,
    "size": 0.1
  }]
}

parameters には以下のキーと値を持つオブジェクトの配列を指定します。

レスポンス

パラメータが正しい場合は、ステータスコード 200 OK が返ります。

{
  "parent_order_acceptance_id": "JRF20150707-050237-639234"
}

親注文をキャンセルする

親注文も、普通の注文と同様にキャンセルすることができます。 親注文をキャンセルした場合、その注文に関連する発注中の注文はすべてキャンセルされます。

リクエスト

POST /v1/me/cancelparentorder

Body パラメータ

{
  "product_code": "BTC_JPY",
  "parent_order_id": "JCO20150925-055555-022222"
}

{
  "product_code": "BTC_JPY",
  "parent_order_acceptance_id": "JRF20150925-033333-099999"
}

parent_order_id または parent_order_acceptance_id のどちらか片方のみを指定してください。

レスポンス

パラメータが正しい場合は、ステータスコード 200 OK が返ります。

すべての注文をキャンセルする

対象となるプロダクトの、これまで発注したすべての自分の注文をキャンセルします。

リクエスト

POST /v1/me/cancelallchildorders

Body パラメータ

{
  "product_code": "BTC_JPY"
}

レスポンス

パラメータが正しい場合は、ステータスコード 200 OK が返ります。

注文の一覧を取得

リクエスト

GET /v1/me/getchildorders

クエリパラメータ

レスポンス

[
  {
    "id": 138398,
    "child_order_id": "JOR20150707-084555-022523",
    "product_code": "BTC_JPY",
    "side": "BUY",
    "child_order_type": "LIMIT",
    "price": 30000,
    "average_price": 30000,
    "size": 0.1,
    "child_order_state": "COMPLETED",
    "expire_date": "2015-07-14T07:25:52",
    "child_order_date": "2015-07-07T08:45:53",
    "child_order_acceptance_id": "JRF20150707-084552-031927",
    "outstanding_size": 0,
    "cancel_size": 0,
    "executed_size": 0.1,
    "total_commission": 0
  },
  {
    "id": 138397,
    "child_order_id": "JOR20150707-084549-022519",
    "product_code": "BTC_JPY",
    "side": "SELL",
    "child_order_type": "LIMIT",
    "price": 30000,
    "average_price": 0,
    "size": 0.1,
    "child_order_state": "CANCELED",
    "expire_date": "2015-07-14T07:25:47",
    "child_order_date": "2015-07-07T08:45:47",
    "child_order_acceptance_id": "JRF20150707-084547-396699",
    "outstanding_size": 0,
    "cancel_size": 0.1,
    "executed_size": 0,
    "total_commission": 0
  }
]

親注文の一覧を取得

リクエスト

GET /v1/me/getparentorders

クエリパラメータ

レスポンス

[
  {
    "id": 138398,
    "parent_order_id": "JCO20150707-084555-022523",
    "product_code": "BTC_JPY",
    "side": "BUY",
    "parent_order_type": "STOP",
    "price": 30000,
    "average_price": 30000,
    "size": 0.1,
    "parent_order_state": "COMPLETED",
    "expire_date": "2015-07-14T07:25:52",
    "parent_order_date": "2015-07-07T08:45:53",
    "parent_order_acceptance_id": "JRF20150707-084552-031927",
    "outstanding_size": 0,
    "cancel_size": 0,
    "executed_size": 0.1,
    "total_commission": 0
  },
  {
    "id": 138397,
    "parent_order_id": "JCO20150707-084549-022519",
    "product_code": "BTC_JPY",
    "side": "SELL",
    "parent_order_type": "IFD",
    "price": 30000,
    "average_price": 0,
    "size": 0.1,
    "parent_order_state": "CANCELED",
    "expire_date": "2015-07-14T07:25:47",
    "parent_order_date": "2015-07-07T08:45:47",
    "parent_order_acceptance_id": "JRF20150707-084547-396699",
    "outstanding_size": 0,
    "cancel_size": 0.1,
    "executed_size": 0,
    "total_commission": 0
  }
]

複数の注文が関連づけられた親注文の price, size の値は、いずれも参考値です。

個別の注文の詳細なパラメータを取得するには、親注文の詳細を取得 する API を利用してください。 また、関連する注文の一覧を取得する場合は、注文の一覧を取得 する API を利用してください。

親注文の詳細を取得

リクエスト

GET /v1/me/getparentorder

クエリパラメータ

parent_order_id または parent_order_acceptance_id のどちらか片方のみを指定してください。

レスポンス

{
  "id": 4242,
  "parent_order_id": "JCO20150925-046876-036161",
  "order_method": "IFDOCO",
  "minute_to_expire": 10000,
  "parameters": [{
    "product_code": "BTC_JPY",
    "condition_type": "LIMIT",
    "side": "BUY",
    "price": 30000,
    "size": 0.1,
    "trigger_price": 0,
    "offset": 0
  }, {
    "product_code": "BTC_JPY",
    "condition_type": "LIMIT",
    "side": "SELL",
    "price": 32000,
    "size": 0.1,
    "trigger_price": 0,
    "offset": 0
  }, {
    "product_code": "BTC_JPY",
    "condition_type": "STOP_LIMIT",
    "side": "SELL",
    "price": 28800,
    "size": 0.1,
    "trigger_price": 29000,
    "offset": 0
  }],
  "parent_order_acceptance_id": "JRF20150925-060559-396699"
}

約定の一覧を取得

リクエスト

GET /v1/me/getexecutions

クエリパラメータ

レスポンス

[
  {
    "id": 37233,
    "child_order_id": "JOR20150707-060559-021935",
    "side": "BUY",
    "price": 33470,
    "size": 0.01,
    "commission": 0,
    "exec_date": "2015-07-07T09:57:40.397",
    "child_order_acceptance_id": "JRF20150707-060559-396699"
  },
  {
    "id": 37232,
    "child_order_id": "JOR20150707-060426-021925",
    "side": "BUY",
    "price": 33470,
    "size": 0.01,
    "commission": 0,
    "exec_date": "2015-07-07T09:57:40.397",
    "child_order_acceptance_id": "JRF20150707-060559-396699"
  }
]

建玉の一覧を取得

リクエスト

GET /v1/me/getpositions

クエリパラメータ

レスポンス

[
  {
    "product_code": "FX_BTC_JPY",
    "side": "BUY",
    "price": 36000,
    "size": 10,
    "commission": 0,
    "swap_point_accumulate": -35,
    "require_collateral": 120000,
    "open_date": "2015-11-03T10:04:45.011",
    "leverage": 3,
    "pnl": 965
  }
]

Realtime API

bitFlyer は、PubNub を利用してリアルタイムの更新情報を配信しています。 以下の Subscribe Key を使用して受信できます。

PubNub Subscribe Key: sub-c-52a9ab50-291b-11e5-baaa-0619f8945a4f

PubNub のドキュメントもご確認ください。

// Node.js のサンプル
var PubNub = require('pubnub');
var pubnub = new PubNub({
    subscribeKey: 'sub-c-52a9ab50-291b-11e5-baaa-0619f8945a4f'
});
pubnub.addListener({
    message: function (message) {
        console.log(message.channel, message.message);
    }
});
pubnub.subscribe({
    channels: ['lightning_ticker_BTC_JPY']
});

板情報

PubNub Channel Name

レスポンス

板情報のスナップショットを配信します。 データ量が大きくなる場合、板情報更新のたびに配信されることは保証されません。 更新のたびに情報を取得する場合、差分情報を利用してください。

サンプルレスポンスは 板情報 の項を参照してください。

asks, bids の配列の順序については保証していません。

板情報の差分

PubNub Channel Name

レスポンス

板の注文に更新があった場合、その差分情報を配信します。 以下のレスポンスは、33,350 円の bid 注文が更新され、その合計数量が 1 BTC になっていることを示します。

{
  mid_price: 35625,
  bids: [
    {
      price: 33350,
      size: 1
    }
  ],
  asks: []
}

Ticker

PubNub Channel Name

レスポンス

更新が発生するたびに配信されます。Ticker の項を参照してください。

約定

PubNub Channel Name

レスポンス

約定が発生するたびに配信されます。

[
  {
    "id": 39361,
    "side": "SELL",
    "price": 35100,
    "size": 0.01,
    "exec_date": "2015-07-07T10:44:33.547",
    "buy_child_order_acceptance_id": "JRF20150707-014356-184990",
    "sell_child_order_acceptance_id": "JRF20150707-104433-186048"
  }
]