API

APIについて

WebSockets API

WebSockets 参考資料

REST API

一般的な使用法

注意:すべてのAPI URLは、api.kraken.comのドメインを使用する必要があります。

Publicメソッドでは、GETまたはPOSTのいずれかを使用することができます。

PrivateメソッドではPOSTを使用し、以下のように設定する必要があります。

HTTPヘッダー:

API-Key = APIキー
API-Sign =  (URI path + SHA256(nonce + POSTデータ))のHMAC-SHA512を使った署名とおよびbase64で解読されたAPI秘密鍵

POSTデータ:

nonce = 常に増加する符号なしの64ビット整数
otp = 2段階認証(未設定の場合は不要)

注: ナンスをより低い値にリセットすることはできませんので、以前使用したナンスより低い値が生成されないようにしてください。永続カウンターや100分の1秒以上の正確な数値での現在の時刻の使用がお勧めです。以前使用したナンス(EAPI:Invalid nonce) より低いナンスによる連続したリクエストが行われた場合、一時的に操作が無効となります。

注:リクエストは必ずしも時系列で処理されるわけではなく、またNTPによりコンピューターの内部時計が戻されナンスに問題を起こす場合があります。この問題に直面した場合、APIの設定ページよりナンスウィンドウを変更することが可能です。設定の数値は、ナンスの増加方法により異なります。 接続状況によっては、3-15秒間のネットワーク問題に対応する設定をお勧めします。

通貨資産を必要とするAPIコールは、ISOに登録されている名前がある場合はISO4217-A3の名前を使用し、未登録の場合は通常使用されている3文字もしくは、X-ISO4217-A3 コードhttp://www.ifex-project.org/)を使用してください。

サーバーからのレスポンスはJSON式で、以下の通り表示されます。

error = 以下の形式のエラーメッセージの配列
    <char-severity code><string-error category>:<string-error type>[:<string-extra info>]
    severity code (深刻度コード)は、エラーの場合はE、または警告の場合はWと表示されます。
result = APIコールの結果(エラーが発生した場合に表示されない場合もあります)

注:数字を文字列として扱う場合は、標準データタイプにオーバーフローが発生する場合がありますのでご注意ください。

APIコールレートリミット

弊社ではサイトの悪用、DoS攻撃、またはオーダーの注文・キャンセルを繰り返すことで発生するオーダーブックの操作等を防ぐための安全対策を取っています。

すべてのAPIユーザーは0から始まる「コールカウンター」を持っています。

アカウント明細・取引履歴コールではカウンターが2増加します。

注文・キャンセルではカウンターは変わりません。

他のすべてのAPIコールはカウンターが1増加します。

ユーザーのカウンターは2秒毎に少なくなりますが、ユーザーのAPIアクセスが最大制限を越えると15分間アクセスができなくなります。初級レベルを取得済みのユーザーはAPIのリミットが15で、3秒毎に1ずつ減少します。中級レベルとプロレベルを取得済みのユーザーはAPIのリミットが20で、中級レベルの場合は2秒毎に1、プロレベルの場合は毎秒1ずつそれぞれ減少します。

注文を出したりキャンセルしたりすることでカウンター数が増えることはありませんが、オーダーブックを意図的に操作することを防ぐため、別途リミットが設けられています。約定が目的である注文を出し、レートを毎秒1に留めていれば、通常リミットに達することはありません。

公開市場データ

サーバータイムを表示

URL: https://api.kraken.com/0/public/Time

結果:サーバータイム

unixtime = UNIXのタイプスタンプ
rfc1123 = RFC 1123タイムフォーマット

注:サーバー、クライアント間の時差を概算するために使用します。

資産情報の表示

URL: https://api.kraken.com/0/public/Assets

入力

info = 取得する情報(任意):
    info = すべての情報(デフォルト)
aclass = 資産クラス(任意):
    通貨 (デフォルト)
asset = 情報を取得する資産のリスト(カンマ区切り)(任意、 デフォルト = 付与された全資産クラス)

結果:資産名と情報の配列

<asset_name> = 資産名
    altname = 代替名
    aclass = 資産クラス
    decimals = 記録用の少数桁数
    display_decimals = 表示される少数桁数

取引可能な資産ペアの取得

URL: https://api.kraken.com/0/public/AssetPairs

入力:

info = 取得する情報(任意):
    info = すべての情報(デフォルト)
    leverage = レバレッジ情報
    fees = 手数料
    margin = 証拠金
pair = 情報を取得する資産のカンマ区切りリスト(任意、 デフォルト = all)

結果:ペア名と情報の配列

<pair_name> = ペア名
    altname = 代替ペア名
    wsname = WebSocketのペア名(該当する場合)
    aclass_base = 基軸通貨の資産クラス
    base = 基軸通貨の資産ID
    aclass_quote = 決済通貨の資産ID
    quote = 決済通貨の資産ID
    lot = 出来高のロットサイズ
    pair_decimals = ペアの少数桁数
    lot_decimals = 出来高の少数桁数
    lot_multiplier = 通貨出来高を得るために掛け合わせる出来高
    leverage_buy = 購入の際に使用可能なレバレッジの配列
    leverage_sell = 売却の際に使用可能なレバレッジの配列
    fees =  [出来高、手数料の割合]タプルの手数料の配列
    fees_maker = [出来高、手数料の割合]タプルのメイカー手数料の配列(メイカー/テイカーの場合)
    fee_volume_currency = 手数料割引の計算に使われる通貨
    margin_call = マージンコールレベル
    margin_stop = ストップアウト/清算マージンレベル

注:資産ペアがメイカー/テイカーの手数料を採用する場合、テイカー手数料には"fees"が用いられ、メイカー手数料には"fees_maker"が用いられます。メイカー/テイカーが採用されないペアには、"fees"が用いられます。

ティッカー情報の取得

URL: https://api.kraken.com/0/public/Ticker

入力:

pair = 情報を取得する資産ペアのリスト(カンマ区切り)

結果:ペア名とティッカー情報の配列

<pair_name> = ペア名
    a = 買い配列(<price>, <whole lot volume>, <lot volume>),
    b = 売り配列(<price>, <whole lot volume>, <lot volume>),
    c = 最終取引クローズ配列(<price>, <lot volume>),
    v = ボリューム配列(<today>, <last 24 hours>),
    p = 出来高加重平均価格配列(<today>, <last 24 hours>),
    t = 取引数配列の数(<today>, <last 24 hours>),
    l = 低配列(<today>, <last 24 hours>),
    h = 高配列(<today>, <last 24 hours>),
    o = 本日の開始価格

注:本日の取引は、00:00:00 UTCに開始されます。

OHLCデータ

URL: https://api.kraken.com/0/public/OHLC

入力:

pair = OHLCデータを取得する資産ペア
interval = タイムフレーム間隔(分単位)(任意):
	1 (デフォルト)、5、15、30、60、240、1440、10080、21600
since = 付与されたID以降のコミットされたOHLCデータを返す(任意、排他的)

結果:ペア名とOHLCデータの配列

<pair_name> = ペア名
    配列入力のペア名配列(<time>, <open>, <high>, <low>, <close>, <vwap>, <volume>, <count>)
last = 新しくコミットされたOHLCデータをポーリングして以降、使用されるID

注:OHLC 配列の最終項目は、現在のまだコミットしていないフレームになります。"since".の値に関わらず最終項目が、常に現在の最新情報となります。

オーダーブックの取得

URL: https://api.kraken.com/0/public/Depth

入力:

pair = 市場の厚みを取得する資産ペア
count = 買い/売り注文の最大数(任意)

結果:ペア名と市場の厚みの配列

<pair_name> =ペア名
    asks = 配列入力の買い側配列(<price>, <volume>, <timestamp>)
    bids = 配列入力の売り側配列(<price>, <volume>, <timestamp>)

最新の取引の取得

URL: https://api.kraken.com/0/public/Trades

入力:

pair = 取引データを取得する資産ペア
since = 付与されたID以降の取引データを返す(任意、 排他的)

結果:ペア名と最新の取引データの配列

<pair_name> = ペア名
配列入力のペア名配列(<price>, <volume>, <time>, <buy/sell>, <market/limit>, <miscellaneous>)
last = 新規取引データをポーリングして以降、使用されるID

最新のスプレッドデータの取得

URL: https://api.kraken.com/0/public/Spread

入力:

pair =スプレッドデータを取得する資産ペア
since = 付与されたID以降のスプレッドデータのリターン(任意、包括的)

結果:ペア名と最新のスプレッドデータの配列

<pair_name> = ペア名
配列入力のペア名配列(<time>, <bid>, <ask>)
last = 新規スプレッドデータを引き出して以降、使用されるID

注:"since" は包括的ですので、過去のセットと同時刻に返されたすべてのデータは、過去のセットのすべてを上書きしなければなりません。

ユーザーのデータ

アカウント残高の取得

URL: https://api.kraken.com/0/private/Balance

結果:資産名とアカウント残高の配列

取引残高を取得

URL: https://api.kraken.com/0/private/TradeBalance

入力:

aclass = 資産クラス(任意):
    通貨 (デフォルト)
asset = 残高を計算するベース資産 (デフォルト = ZUSD)

結果:取引残高情報の配列

eb = 取引総残高(全通貨を合算した残高)
tb = 取引残高(有効証拠金として使用可能な通貨を合算した残高)
m = オープンポジションの証拠金額
n = オープンポジションの評価損益
c = オープンポジションの原価基準
v = オープンポジションの現在の流動評価
e = 有効証拠金= 取引残高 + 評価損益
mf = 余剰証拠金 = 有効証拠金 - 当初証拠金(新規のオープンポジションに利用可能な最大証拠金)
ml = 証拠金維持率= (有効証拠金 / 当初証拠金) * 100

注:流動評価に使用されるレートは、最良の売り値と買い値の中間点です。

オープン注文の取得

URL: https://api.kraken.com/0/private/OpenOrders

入力:

trades = 取引を出力に含むかどうか (任意、デフォルト = false)
userref = 付与されたユーザー参照IDのみに結果を制限(任意)

結果:キーとしてのtxidを伴うオープン配列の注文情報の配列

refid = この注文を作成した参照注文トランザクションID
userref = ユーザー参照ID
status = 注文状況:
    pending = オーダーブックに記載保留の注文
    open =  オープン注文
    closed = クローズされた注文
    canceled = キャンセル済みの注文
    expired = 期限切れの注文
opentm = 発注時のUNIXタイムスタンプ
starttm = 注文開始時のUNIXタイムスタンプ(設定されていない場合は0)
expiretm = 注文終了時のUNIXタイムスタンプ(設定されていない場合は0)
descr = 注文の詳細
    pair = 資産ペア
    type = 注文タイプ(買い/売り)
    ordertype = 注文タイプ(標準注文を追加をご覧ください)
    price = 1次価格
    price2 = 2次価格
    leverage = レバレッジの倍数
    order =  注文の説明
    close = 条件付きクローズ注文の説明(条件が設定されている場合)
vol = 注文の出来高(oflagsでviqcが設定されていない場合、基軸通貨)
vol_exec = 実行された出来高(oflagsでviqcが設定されていない場合、基軸通貨)
cost = 合計費用(oflagsでviqcが設定されていない場合、決済通貨)
fee = 合計手数料(決済通貨)
price = 平均価格(oflagsでviqcが設定されていない場合、決済通貨)
stopprice = ストップ価格(トレーリングスタップでは決済通貨)
limitprice = 注文が実行される指値価格(指値注文の場合には決済通貨)
misc = その他の情報(カンマ区切り)
    stopped = ストップ価格で実行
    touched = タッチ価格で実行
    liquidated = 清算
    partial = 部分的約定
oflags =  注文フラッグのカンマ区切りのリスト
    viqc = 決済通貨の総額
    fcib =  基軸通貨で手数料の支払いを希望(売り注文の場合のデフォルト)
    fciq =  決済通貨で手数料の支払いを希望(買い注文の場合のデフォルト)
    nompp = 成行価格保護なし
    trades =  注文に関連する取引IDの配列(取引情報がリクエストされ、データが利用できる場合)

注:別途注記のない場合、費用、手数料、価格、出来高は、通貨基準ではなく、資産ペアが基準となります。たとえば、資産ペアがスケール8のロットサイズを使用する場合、表示する通貨がスケール2のみであってもボリュームはスケール8を使用します。同様に、資産ペアの価格スケールが5の場合は、基礎通貨がスケール8であってもスケールは5のままです。

クローズされた注文の取得

URL: https://api.kraken.com/0/private/OpenOrders

入力:

trades = 取引を出力に含むかどうか (任意、デフォルト = false)
userref = 付与されたユーザー参照IDに結果を制限(任意)
start = 開始時のUNIXタイムスタンプ、または結果の注文TX ID(任意、排他的)
end = 終了時のUNIXタイムスタンプ、または結果の注文TX ID(任意、包括的)
ofs = 結果のオフセット
closetime = 使用する時間(任意)
    open
    close
    both (デフォルト)

結果:注文情報の配列

closed = 注文情報の配列。オープン注文の取得をご覧ください。追加フィールド:
    closetm = 注文クローズ時のUNIXタイムスタンプ
    reason = 注文状況に関する追加情報(該当する場合)
count = 基準に一致する利用可能な注文情報の量

注:注文TX IDに表示されている時刻は、UNIXタイムスタンプより正確です。注文TX IDに時刻がついている場合は、注文オープン時の時刻が使用されます。

注文情報のクエリ

URL: https://api.kraken.com/0/private/QueryOrders

入力:

trades = 取引を出力に含むかどうか (任意、デフォルト = false)
userref = 付与されたユーザー参照IDに結果を制限(任意)
txid = 情報をクエリするトランザクションIDのリスト(カンマ区切り、最大50)

結果: 注文情報に関連した配列

<order_txid> = オーダー情報  オープン注文の取得/クローズされた注文の取得をご覧ください。

取引履歴を取得

URL: https://api.kraken.com/0/private/TradesHistory

入力:

type = 取引のタイプ(任意)
    all = すべてのタイプ(デフォルト)
    any position = すべてのポジション(オープンまたはクローズ)
    closed position = クローズされたポジション
    closing position = ポジションの全部または一部をクローズする注文
    no position = ポジションを伴わない取引
trades = ポジションに関連する取引を出力に含めるかどうか(任意、デフォルト = false)
start = 開始時のUNIXタイムスタンプ、または結果の取引TX ID(任意、排他的)
end = 終了時のUNIXタイムスタンプ、または結果の取引TX ID(任意、包括的)
ofs = 結果のオフセット

結果:取引情報の配列

trades = TXIDをキーとした取引情報の配列
    ordertxid = 取引の実行を伴った注文
    pair = 資産ペア
    time = 取引のUNIXタイムスタンプ
    type = 注文のタイプ(買い/売り)
    ordertype = 注文タイプ
    price = 注文が(決済通貨)にて実行された平均価格
    cost = 注文の合計費用(決済通貨)
    fee = 合計手数用(決済通貨)
    vol = 出来高(基軸通貨)
    margin = 当初証拠金(決済通貨)
    misc = その他の情報のリスト(カンマ区切り)
        closing = ポジションの全部または一部をクローズする取引
count = 基準に一致する利用可能な取引情報の数

取引でポジションをオープンした場合、次のフィールドは、取引情報にも存在します。

    posstatus = ポジションのステータス(オープン/クローズ)
    cprice = ポジションのクローズした部分の平均価格(決済通貨)
    ccost = ポジションのクローズした部分の合計費用(決済通貨)
    cfee = ポジションのクローズした部分の合計手数料(決済通貨)
    cvol = ポジションのクローズした部分の合計手数料(決済通貨)
    cmargin = ポジションのクローズした部分で開放された合計証拠金(決済通貨)
    net = ポジションのクローズした部分の純利益/損失(決済通貨、決済通貨スケール)
    trades = ポジションをクローズした取引のリスト(該当する場合)

注:

  • 別途注記のない場合、費用、手数料、価格、出来高は、通貨のスケールではなく、資産ペアのスケールとなります。
  • 注文TX IDに付与された時刻は、UNIXタイムスタンプより正確です。

取引情報のクエリ

URL: https://api.kraken.com/0/private/QueryTrades

入力:

txid = 情報をクエリするトランザクションIDのリスト(カンマ区切り、最大20)
trades = ポジションに関連する取引を出力に含めるかどうか(任意、デフォルト = false)

結果:取引情報に関連した配列

<trade_txid>  = 取引情報。取引履歴を取得をご覧ください。

オープンポジションの取得

URL: https://api.kraken.com/0/private/OpenPositions

入力:

txid = 出力を制限するトランザクションIDのリスト(カンマ区切り)
docalcs = 利益/損失の計算を含めるかどうか(任意、デフォルト = false)

結果:オープンポジション情報に関連した配列

<position_txid> =オープンポジション情報
    ordertxid = 取引の実行した注文
    pair = 資産ペア
    time = 取引のUNIXタイムスタンプ
    type = ポジションをオープンするために使用した注文のタイプ(買い/売り)
    ordertype = ポジションをオープンするために使用した注文のタイプ
    cost = ポジションのオープン時の費用(oflagsでviqcが設定されていない限り決済通貨)
    fee = ポジションのオープン時の手数料(決済通貨)
    vol = ポジションの出来高(oflagsでviqcが設定されていない限り基軸通貨)
    vol_closed = クローズされたポジション出来高(oflagsでviqcが設定されていない限り基軸通貨)
    margin = 当初証拠金(決済通貨)
    value = 残っているポジションの現在価値(docalcsがリクエストされた場合、決済通貨)
    net = 残っているポジションの評価損益(docalcsがリクエストされた場合、決済通貨、決済通貨スケール)
    misc = その他の情報(カンマ区切り)
    oflags = 注文フラッグのリスト(カンマ区切り)
        viqc = 決済通貨での出来高

注:別途注記のない場合、費用、手数料、価格、出来高は、通貨のスケールではなく、資産ペアのスケールとなります。

アカウント明細の取得

URL: https://api.kraken.com/0/private/Ledgers

入力:

aclass = 資産クラス(任意):
    currency(デフォルト)
asset = 出力を制限する資産のリスト(カンマ区切り)(任意、デフォルト = all)
type = 取得するアカウント明細のタイプ(任意):
    all(デフォルト)
    deposit
    withdrawal
    trade
    margin
start = 開始時のUNIXタイムスタンプまたは結果の明細ID(任意、排他的)
end = 終了時のUNIXタイムスタンプまたは結果の明細ID(任意、包括的)
ofs = 結果のオフセット

結果: アカウント明細に関連した配列

<ledger_id> = アカウント明細
    refid = 参照ID
    time = 明細のUNIXタイムスタンプ
    type = 明細のタイプ
    aclass = 資産クラス
    asset = 資産
    amount = トランザクション金額
    fee = トランザクション手数料
    balance = 残高

注:明細IDに付与された時刻は、UNIXタイムスタンプより正確です。

明細のクエリ

URL: https://api.kraken.com/0/private/QueryLedgers

入力:

id = 情報をクエリする明細IDのリスト(カンマ区切り、最大20)

結果: 明細情報に関連した配列

<ledger_id> = 明細情報。明細情報の取得をご覧ください。

取引額の取得

URL: https://api.kraken.com/0/private/TradeVolume

入力:

pair = 手数料情報を取得する資産ペアのリスト(カンマ区切り)(任意)
fee-info = 手数料情報を結果に含むかどうか(任意)

結果:関連する配列

currency = 通貨額
volume = 現在の割引額
fees = 資産ペアと手数料レベル情報の配列(リクエストされた場合)
    fee = 現在の手数料(%)
    minfee = ペアの最小手数料(固定手数料でない場合)
    maxfee = ペアの最大手数料(固定手数料でない場合)
    nextfee = ペアの次の手数料レベル(固定手数料でない場合、最低の手数料レベルの場合はnil)
    nextvolume = 次の出来高レベル(固定手数料でない場合、最低の手数料レベルの場合はnil)
    tiervolume = 現在の出来高レベル(固定手数料でない場合、最低の手数料認証レベルの場合はnil)
fees_maker =メイカー/テイカー手数料体系の資産ペアとメイカー手数料レベルの配列(リクエストされた場合)
 fee = 現在の手数料(%)
    minfee = ペアの最小手数料(固定手数料でない場合)
    maxfee = ペアの最大手数料(固定手数料でない場合)
    nextfee = ペアの次の手数料レベル(固定手数料でない場合、最低の手数料レベルの場合はnil)
    nextvolume = 次の出来高レベル(固定手数料でない場合、最低の手数料レベルの場合はnil)
    tiervolume = 現在の出来高レベル(固定手数料でない場合、最低の手数料認証レベルの場合はnil)

注:資産ペアがメイカー/テイカーの手数料を採用する場合、テイカー手数料には"fees"が用いられ、メイカー手数料には"fees_maker"が用いられます。メイカー/テイカーが採用されないペアには、"fees"が用いられます。

エクスポートのリクエスト/h3>

URL: https://api.kraken.com/0/private/AddExport

入力:

description = レポートの情報
report = レポートのタイプ(取引/明細)
format = CSV/TSV形式(任意。デフォルト= CSV)
fields = レポートに表示する項目のカンマ区切りリスト(任意、 デフォルト = all) 
    注:項目のオプションはレポートのタイプによります。
    <trades>
        ordertxid
        time
        ordertype
        price
        cost
        fee
        vol
        margin
        misc
        ledgers
    <ledgers>
        refid
        time
        type
        aclass
        asset
        amount
        fee
        balance
asset = 出力を制限する資産のリスト(カンマ区切り)(任意、デフォルト = all)
starttm = レポート開始時間(任意、デフォルト= 直近1年間)
    <n> = 開始時のUNIXタイムスタンプ
endtm = レポート終了時刻(任意、デフォルト=現時点)
    <n> = 終了時のUNIXタイムスタンプ

結果:

id = レポートID

エラー: エラーには次のものがあります(これらに限るものではありません)

EGeneral:Invalid arguments
EQuery:Unknown asset pair

エクスポートのステータスの取得

URL: https://api.kraken.com/0/private/ExportStatus

入力:

report = レポートのタイプ(取引/明細)

結果:レポートとその情報の配列

id = レポートのID
descr = レポートの情報
format = CSV/TSVのファイル形式
report = レポートのタイプ(取引/明細)
status = 注文のステータス
    Queued = レポート作成のリクエストが送信された状態
    Processing = レポートが作成されている状態
    Processed = レポート作成が完了した状態
createdtm = レポートが作成された時間
expiretm = レポートが期限切れになる時間
starttm = レポート開始時刻
endtm = レポート終了時刻
completedtm = レポートが完了した時間
aclass = 資産クラス
asset = カンマ区切りの資産リスト
fields = カンマ区切りの項目
    <trades>
        txid
        ordertxid
        pair
        time
        type
        ordertype
        price
        cost
        fee
        vol
        margin
        misc
        ledgers
    <ledgers>
        txid
        refid
        time
        type
        aclass
        asset
        amount
        fee
        balance

エラー: エラーには次のものがあります(これらに限るものではありません)

EGeneral:Invalid arguments

エクスポートレポートの取得

URL: https://api.kraken.com/0/private/RetrieveExport

入力:

id = レポートID

結果:レポートを含むbinary zip アーカイブ

注:コンテンツタイプが、json、text、 htmlでない場合、バイナリレポートが送信されます。コンテンツがこれらのタイプの場合には、エラーが発生する可能性があります。

注:レポートのタイプと選択された項目によっては、以下の項目が表示されます。* が表示されている項目は、常に表示されます。

<trades>
    *txid
    ordertxid
    *pair
    time
    *type
    ordertype
    price
    cost
    fee
    vol
    margin
    misc
    ledgers
<ledgers>
    *txid
    refid
    time
    type
    aclass
    asset
    amount
    fee
    balance

エクスポートの消去

URL: https://api.kraken.com/0/private/RemoveExport

入力:

type = 消去のタイプ(キャンセル/削除)
id = レポートのID

結果:コールの結果のブール

cancel/delete = 消去のタイプ

注:レポートがすでに作成されている場合にのみ、削除タイプを使用することが可能です。待機中や作成中のステータスの場合にはキャンセルをご使用ください。

エラー: エラーには次のものがあります(これらに限るものではありません)

EGeneral:Invalid arguments
WExport:Already processed

注:該当レポートIDに既に削除やキャンセルのリクエストが存在する場合には、WExport:Already processedエラーが発生します。




プライベートユーザー取引

スタンダード注文の追加

URL: https://api.kraken.com/0/private/AddOrder

入力:

pair = 資産ペア
type = 注文のタイプ(買い/売り)
ordertype = 注文のタイプ:
    market
    limit(price = 指値価格)
    stop-loss(price = ストップロス価格)
    take-profit(price = テイクプロフィット価格)
    stop-loss-profit(price = ストップロス価格, price2 = テイクプロフィット価格)
    stop-loss-profit-limit(price = ストップロス価格, price2 = テイクプロフィット価格)
    stop-loss-limit(price = ストップロスを実行する価格, price2 = 実行指定された指値価格)
    take-profit-limit(price = テイクプロフィットを実行する価格, price2 = 実行指定された指値価格)
    trailing-stop(price = トレーリングストップオフセット)
    trailing-stop-limit(price = トレーリングストップオフセット, price2 = 実行指定された指値オフセット)
    stop-loss-and-limit(price = ストップロス価格, price2 = 指値価格)
settle-position = ポジションの決済
price = price(任意、order typeに依存)
price2 = 2次価格(任意、order typeに依存)
volume = 注文出来高(ロット単位)
leverage = 希望のレバレッジ倍数(任意、デフォルト = none)
oflags =  注文フラグのリスト(カンマ区切り)(任意):
    viqc = 決済通貨での出来高(レバレッジを使用した注文には使用不可)
    fcib = 基軸通貨で手数料の支払いを希望する場合
    fciq = 決済通貨で手数料の支払いを希望する場合
     nompp = 成行注文停止機能なし
 post = post onlyの注文(指値注文を実行した場合にのみ使用可能)
starttm = スケジュールされたスタート時間(任意):
    0 = 現在(デフォルト)
    +<n> = スタート時間を現在から <n> 秒後にスケジュール
    <n> = スタート時間のUNIXタイムスタンプ
expiretm = 期限切れの時間(任意):
    0 = 期限なし(デフォルト)
    +<n>  = 現在から <n> 秒後に期限切れ
    <n>  = 期限切れ時間のUNIXタイムスタンプ
userref = ユーザー参照ID。32ビットの符号つき数字(任意)
validate = 入力のみを認証する。注文を送信しない(任意)

注文が約定した場合に、クローズ注文をシステムに追加するオプション:
    close[ordertype] = 注文タイプ
    close[price] = 価格
    close[price2] = 2次価格

結果:

descr = 注文説明情報
    order = 注文説明
    close = 条件付きクローズ注文の説明(条件付きクローズが設定されている場合)
txid = 注文のトランザクションIDの配列(注文が正常に追加された場合)

エラー:エラーには次のものがあります(これらに限るものではありません)。

EGeneral:Invalid arguments
EService:Unavailable
ETrade:Invalid request
EOrder:Cannot open position
EOrder:Cannot open opposing position
EOrder:Margin allowance exceeded
EOrder:Margin level too low
EOrder:Insufficient margin (exchange does not have sufficient funds to allow margin trading)
EOrder:Insufficient funds (insufficient user funds)
EOrder:Order minimum not met (volume too low)
EOrder:Orders limit exceeded
EOrder:Positions limit exceeded
EOrder:Rate limit exceeded
EOrder:Scheduled orders limit exceeded
EOrder:Unknown position

注:

  • 資産ペア価格、ロット、レバレッジの仕様については、取引可能な資産ペアをご覧ください。
  • 価格の前には+、-、または#を付け、その価格が相対価格であるかどうかを指定できます(例外: トレーリングストップは常に相対価格となります)。+ 現在提供されている価格に金額を加算します。- 現在提供されている価格に金額を減算します。#は、使用するタイプと注文タイプに応じて、現在提供されている価格に対し、金額を加算または減算します。相対価格は%を末尾に付けて、提供されている価格の割合として相対価格を指定できます。
  • レバレッジを使用した注文では、0 をボリュームとして指定すると、ポジションをクローズするのに必要なボリュームを自動的に設定します。
  • "EOrder:Trading agreement required"のエラーが表示された場合には、APIキーの管理画面にて詳細をご確認ください。

オープン注文のキャンセル

URL: https://api.kraken.com/0/private/CancelOrder

入力:

txid = トランザクションID

結果:

count = キャンセルされた注文の数
pending = 設定された場合、注文のキャンセルは保留中です。

注:txidはユーザー参照IDの場合があります。

APIクライアントの例

以下は、ユーザーが独自のAPIクライアントを開発する場合に使用できるAPIクライアントコードライブラリのサンプルです。Paywardまたは第三者のAPI作成者は、APIのバグまたは不正な使用による損失について一切の責任を負わないことをご理解ください。Paywardは、第三者のコードについては、掲載前に安全性の初回検証を行っていますが、それ以降に加えられた変更については保証できません。この件に関しご質問がある場合はカスタマーサポートまでご連絡ください。

C

第三者によるコードhttps://github.com/hANSIc99/Kraken_C_APIを参照してください。

C#

第三者によるコードhttps://bitbucket.org/arrivets/krakenapiを参照してください。

C++

第三者によるコードhttps://github.com/voidloop/krakenapiを参照してください。

GO

第三者によるコードhttps://github.com/Beldur/kraken-go-api-clientを参照してください。

Node.JS

第三者によるコードhttps://github.com/nothingisdead/npm-kraken-apiを参照してください。

PERL

第三者によるコードhttp://search.cpan.org/~philippe/Finance-Bank-Kraken-0.1/を参照してください。

Python 3

第三者によるコードhttps://github.com/veox/python3-krakenexを参照してください。

Python 2

第三者によるコードhttps://github.com/veox/python2-krakenexを参照してください。

Ruby

第三者によるコードhttps://github.com/jonatack/kraken_ruby_clientを参照してください。

PHP

Krakenチームは、Kraken REST APIとのインタフェース用に、基本的なPHPライブラリを提供しています。ソースと使用例についてはPaywardのkraken-api-client github repositoryでご確認いただけます。これらはMITがライセンスを保有しています

ライブラリ

PHPクライアントを使用してKraken REST APIを呼び出すには、このライブラリクラスをご使用ください。APIメソッドの正しいURL pathを自動的に判別し、各リクエストにnonceを生成し、APIの秘密鍵と生成されたnonceを使用して署名済みのヘッダーを追加します。

<?php
/**
 * Reference implementation for Kraken's REST API.
 *
 * See https://www.kraken.com/help/api for more info.
 *
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2013 Payward, Inc
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

class KrakenAPIException extends ErrorException {};

class KrakenAPI
{
    protected $key;     // API key
    protected $secret;  // API secret
    protected $url;     // API base URL
    protected $version; // API version
    protected $curl;    // curl handle

    /**
     * Constructor for KrakenAPI
     *
     * @param string $key API key
     * @param string $secret API secret
     * @param string $url base URL for Kraken API
     * @param string $version API version
     * @param bool $sslverify enable/disable SSL peer verification.disable if using beta.api.kraken.com
     */
    function __construct($key, $secret, $url='https://api.kraken.com', $version='0', $sslverify=true)
    {
        $this->key = $key;
        $this->secret = $secret;
        $this->url = $url;
        $this->version = $version;
        $this->curl = curl_init();

        curl_setopt_array($this->curl, array(
            CURLOPT_SSL_VERIFYPEER => $sslverify,
            CURLOPT_SSL_VERIFYHOST => 2,
            CURLOPT_USERAGENT => 'Kraken PHP API Agent',
            CURLOPT_POST => true,
            CURLOPT_RETURNTRANSFER => true)
        );
    }

    function __destruct()
    {
        curl_close($this->curl);
    }

    /**
     * Query public methods
     *
     * @param string $method method name
     * @param array $request request parameters
     * @return array request result on success
     * @throws KrakenAPIException
     */
    function QueryPublic($method, array $request = array())
    {
        // build the POST data string
        $postdata = http_build_query($request, '', '&');

        // make request
        curl_setopt($this->curl, CURLOPT_URL, $this->url .'/' .$this->version .'/public/' .$method);
        curl_setopt($this->curl, CURLOPT_POSTFIELDS, $postdata);
        curl_setopt($this->curl, CURLOPT_HTTPHEADER, array());
        $result = curl_exec($this->curl);
        if($result===false)
            throw new KrakenAPIException('CURL error:' . curl_error($this->curl));

        // decode results
        $result = json_decode($result, true);
        if(!is_array($result))
            throw new KrakenAPIException('JSON decode error');

        return $result;
    }

    /**
     * Query private methods
     *
     * @param string $path method path
     * @param array $request request parameters
     * @return array request result on success
     * @throws KrakenAPIException
     */
    function QueryPrivate($method, array $request = array())
    {
        if(!isset($request['nonce'])) {
            // generate a 64 bit nonce using a timestamp at microsecond resolution
            // string functions are used to avoid problems on 32 bit systems
            $nonce = explode(' ', microtime());
            $request['nonce'] = $nonce[1] . str_pad(substr($nonce[0], 2, 6), 6, '0');
        }

        // build the POST data string
        $postdata = http_build_query($request, '', '&');

        // set API key and sign the message
        $path = '/' .$this->version .'/private/' .$method;
        $sign = hash_hmac('sha512', $path . hash('sha256', $request['nonce'] .$postdata, true), base64_decode($this->secret), true);
        $headers = array(
            'API-Key:' .$this->key,
            'API-Sign:' . base64_encode($sign)
        );

        // make request
        curl_setopt($this->curl, CURLOPT_URL, $this->url .$path);
        curl_setopt($this->curl, CURLOPT_POSTFIELDS, $postdata);
        curl_setopt($this->curl, CURLOPT_HTTPHEADER, array());
        $result = curl_exec($this->curl);
        if($result===false)
            throw new KrakenAPIException('CURL error:' . curl_error($this->curl));

        // decode results
        $result = json_decode($result, true);
        if(!is_array($result))
            throw new KrakenAPIException('JSON decode error');

        return $result;
    }
}

使用例

以下は、KrakenAPIライブラリクラスの初期化に関係する手順と、APIメソッドの呼び出しを示したものです。形式化された結果セットは各APIコールスニペットの下に表示されています。

初期化

KrakenAPIオブジェクトのインスタンス化を作成する場合には、ライブラリファイルを含め、APIキーと秘密鍵を提供します。

<?php

require_once 'KrakenAPIClient.php';
$kraken = new KrakenAPI('YOUR API KEY', 'YOUR API SECRET');
メソッド呼び出し

アクティブな資産とプロパティの公開リストへのクエリ:

$res = $kraken->QueryPublic('Assets');
print_r($res);

返り値の資産はISO-4217-A3-Xの名前で表示されます。以下は出力例です。

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [XXBT] => Array
                (
                    [aclass] => currency
                    [altname] => XBT
                    [decimals] => 10
                    [display_decimals] => 5
                )

            [XLTC] => Array
                (
                    [aclass] => currency
                    [altname] => LTC
                    [decimals] => 10
                    [display_decimals] => 5
                )

            [XXRP] => Array
                (
                    [aclass] => currency
                    [altname] => XRP
                    [decimals] => 8
                    [display_decimals] => 5
                )

            [ZEUR] => Array
                (
                    [aclass] => currency
                    [altname] => EUR
                    [decimals] => 4
                    [display_decimals] => 2
                )
            ...
)

XBT/USDペアのパブリックティッカー情報のクエリ:

$res = $kraken->QueryPublic('Ticker', array('pair' => 'XXBTZUSD'));
print_r($res);

出力例:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [XXBTZUSD] => Array
                (
                    [a] => Array
                        (
                            [0] => 106.09583
                            [1] => 111
                        )

                    [b] => Array
                        (
                            [0] => 105.53966
                            [1] => 4
                        )

                    [c] => Array
                        (
                            [0] => 105.98984
                            [1] => 0.13910102
                        )

                    ...
        )
)

2013-08-07T18:20:42+00:00以降の、最新のXBT/EURペアの取引をクエリする:

注:「since」パラメーターは将来変更になる場合があります。例えばその精度が変更になる場合があるか、またはタイムスタンプを表示しなくなる場合もあります。最善の方法は、結果セットに返却される「last」値をベースにすることです。

$res = $kraken->QueryPublic('Trades', array('pair' => 'XXBTZEUR', 'since' => '137589964200000000'));
print_r($res);

出力例:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [XXBTZEUR] => Array
                (
                    [0] => Array
                        (
                            [0] => 78.60500
                            [1] => 2.03990000
                            [2] => 1375897934.1176
                            [3] => s
                            [4] => m
                            [5] =>
                        )

                    [1] => Array
                        (
                            [0] => 79.41809
                            [1] => 2.02203000
                            [2] => 1375898123.0771
                            [3] => b
                            [4] => m
                            [5] =>
                        )

                    [2] => Array
                        (
                            [0] => 79.86999
                            [1] => 7.00000000
                            [2] => 1375898123.2587
                            [3] => b
                            [4] => m
                            [5] =>
                        )
                    ...
            )
            [last] => 137589925237491170
        )
)

プライベート資産残高のクエリ:

$res = $kraken->QueryPrivate('Balance');
print_r($res);

出力例:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [ZUSD] => 3415.8014
            [ZEUR] => 155.5649
            [XXBT] => 149.9688412800
            [XXRP] => 499889.51600000
        )

)

プライベートオープン注文と、それに含まれる関連取引のクエリ:

$res = $kraken->QueryPrivate('OpenOrders', array('trades' => true));
print_r($res);

出力例:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [open] => Array
                (
                    [O7ICPO-F4CLJ-MVBLHC] => Array
                        (
                            [refid] =>
                            [userref] =>
                            [status] => open
                            [opentm] => 1373750306.9819
                            [starttm] => 0
                            [expiretm] => 0
                            [descr] => Array
                                (
                                    [order] => sell 3.00000000 XBTUSD @ limit 500.00000
                                )

                            [vol] => 3.00000000
                            [vol_exec] => 0.00000000
                            [cost] => 0.00000
                            [fee] => 0.00000
                            [price] => 0.00000
                            [misc] =>
                            [oflags] =>
                        )
                    ...
                )
        )
)

標準注文の追加:指値価格$120で 1.123 XBT/USD ペアの売り注文をする場合。

$res = $kraken->QueryPrivate('AddOrder', array(
    'pair' => 'XXBTZUSD',
    'type' => 'sell',
    'ordertype' => 'limit',
    'price' => '120',
    'volume' => '1.123'
));
print_r($res);

出力例:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [descr] => Array
                (
                    [order] => sell 1.12300000 XBTUSD @ limit 120.00000
                )

            [txid] => Array
                (
                    [0] => OAVY7T-MV5VK-KHDF5X
                )

        )

)

標準注文の追加: 2013-08-12T09:27:22+0000 に成行価格で €300相当のXBT買い注文をする場合

$res = $kraken->QueryPrivate('AddOrder', array(
    'pair' => 'XXBTZEUR',
    'type' => 'buy',
    'ordertype' => 'market',
    'oflags' => 'viqc',
    'volume' => '300',
    'starttm' => '1376299642'
));
print_r($res);

出力例:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [descr] => Array
                (
                    [order] => buy 300.00000000 XBTEUR @ market
                )

            [txid] => Array
                (
                    [0] => ONQN65-L2GNR-HWJLF5
                )

        )

)

標準注文の追加:指値価格 $101.9901で2.12345678 XBT/USDペアの買い、レバレッジ 2:1、ストップロス、テイクプロフィット注文: 逆指値 -5% 損失、利益確定 +$10 価格上昇(#表記により、符号付ストップ/ロス価格は自動的に決定されます)の注文をする場合

$res = $kraken->QueryPrivate('AddOrder', array(
    'pair' => 'XXBTZUSD',
    'type' => 'buy',
    'ordertype' => 'limit',
    'price' => '101.9901',
    'volume' => '2.12345678',
    'leverage' => '2:1',
    'close' => array(
        'ordertype' => 'stop-loss-profit',
        'price' => '#5%',  // stop loss price (relative percentage delta)
        'price2' => '#10'  // take profit price (relative delta)
    )
));
print_r($res);

出力例:

Array
(
    [error] => Array
        (
        )

    [result] => Array
        (
            [descr] => Array
                (
                    [order] => buy 2.12345678 XBTUSD @ limit 101.99010 with 2:1 leverage
                    [close] => close position @ stop loss -5.0000%, take profit +10.00000
                )

            [txid] => Array
                (
                    [0] => OFMYYE-POAPQ-63IMWL
                )

        )

)

プライベートユーザー入出金

注意:これは一時的な入出金APIで、将来変更される可能性があります。APIの詳細についてはAPIのページをお読み下さい。

入金方法の取得

URL: https://api.kraken.com/0/private/DepositMethods

入力:

aclass = 資産クラス(任意):
   currency (デフォルト)
asset = 入金される資産

結果: 入金方法に関連した配列:

method = 入金方法の名前
limit = 現時点で入金できる最大金額。無制限の場合にはfalse
fee = 手数料金額
address-setup-fee = 入金方法にアドレス設定手数料があるか否か(任意)

入金アドレスの取得

URL: https://api.kraken.com/0/private/DepositAddresses

入力:

aclass = 資産クラス(任意):
    currency (デフォルト)
asset = 入金される資産
method = 入金方法の名前
new = 新しいアドレスを作成するか否か(任意、デフォルト = false)

結果: 入金アドレスに関連した配列:

address = 入金アドレス
expiretm = expiration time in unixのタイムスタンプでの有効期限、ずっと有効な場合は0
new = アドレスが使用されたか否か

最近の入金のステータスを取得

URL: https://api.kraken.com/0/private/DepositStatus

入力:

aclass = 資産クラス(任意):
    currency (デフォルト)
asset = 入金される資産
method = 入金方法の名前

結果:入金ステータス情報の配列:

method = 使用された入金方法の名前
aclass = 資産クラス
asset =資産のX-ISO4217-A3 コード
refid = 参照ID
txid = 送金ID
info = 送金情報
amount = 入金金額
fee = 支払われた手数料金額
time = リクエスト時のunixのタイムスタンプ
status = 入金ステータス
status-prop = 追加のステータス情報 (存在する場合のみ)
    return = Krakenによる返金送金
    onhold = 入金の保留
ステータスについて、詳しくはIFEX金融取引ステータスをご覧下さい。

出金情報の取得

URL: https://api.kraken.com/0/private/WithdrawInfo

入力:

aclass = 資産クラス(任意):
    currency (デフォルト)
asset = 出金される資産
key = アカウントに設定されている出金キーの名前
amount = 出金金額

結果: 出金情報に関連した配列:

method = 使用される出金方法の名前
limit = 現時点で出金できる最大金額
fee = 手数料金額

資金を出金

URL: https://api.kraken.com/0/private/Withdraw

入力:

aclass = 資産クラス(任意):
    currency (デフォルト)
asset = 出金される資産
key = アカウントに設定されている出金キーの名前
amount = 手数料を含めた出金金額

結果:出金送金に関連した配列:

refid = 参照ID

最近の出金のステータスを取得

URL: https://api.kraken.com/0/private/WithdrawStatus

入力:

aclass = 資産クラス(任意):
    currency (デフォルト)
asset = 出金される資産
method = 出金方法の名前(任意)

結果: 出金ステータス情報の配列:

method = 使用された出金方法の名前
aclass = 資産クラス
asset = 資産のX-ISO4217-A3コード
refid = 参照ID
txid = 送金ID
info = 送金情報
amount = 出金金額
fee = 支払われた手数料金額
time = リクエスト時のunixのタイムスタンプ
status = 出金ステータス
status-prop = 追加のステータス情報 (存在する場合のみ)
    cancel-pending = キャンセルのリクエスト
    canceled = キャンセル済
    cancel-denied = キャンセルがリクエストされたが拒否
    return = Krakenによる返金送金; キャンセルは不可 
    onhold = 出金の保留
ステータスについて、詳しくはIFEX金融取引ステータスをご覧下さい。

出金のキャンセルをリクエストする

URL: https://api.kraken.com/0/private/WithdrawCancel

入力:

aclass = 資産クラス(任意):
    currency (デフォルト)
asset = 出金される資産
refid = 出金の参照ID

結果: 成功の場合はtrue

注意: キャンセルの実行は保証されません。これによりキャンセルのリクエストがされますが、出金の処理段階によっては出金をキャンセルできない場合があります。