API

En savoir plus sur notre API

API WebSockets

Documentation WebSockets

REST API

Usage Général

NOTE: Toutes les URL de l'API doivent utiliser le domaine api.kraken.com.

Les méthodes publiques peuvent utiliser GET ou POST.

Les méthodes privées doivent utiliser POST et être configurées comme suit:

Entête HTTP:

API-Key = Clé API
API-Sign = Signature du message avec le hachage HMAC-SHA512 (adresse URI + SHA256 (données nonce + POST)) et la valeur base64 de la clé d'API secret

Données Post:

nonce = Valeur incrémentielle d'entier non signé de 64 bits
otp = Authentification à 2 facteurs (dans le cas d'avoir 2FA activé, non requis autrement)

Note: Il n'est pas possible de réinitialiser la valeur du nonce à une valeur inférieure. Assurez-vous d'utiliser une méthode de génération qui ne génère jamais de nombres inférieurs à ceux existants. Il est recommandé d'utiliser un compteur persistant ou l'heure actuelle avec une précision au centième de seconde ou plus. Trop de demandes avec des valeurs de nonces inférieures à la dernière nonce valide (EAPI: Invalid nonce) peuvent entraîner des blocages de service temporaires.

Note: Certaines demandes peuvent arriver désordonnées ou le protocole NTP peut causer l'horloge à reculer, ce qui peut entraîner des problèmes avec le nonce. Si vous rencontrez ce problème, vous pouvez modifier l'intervalle de nonce à partir des paramètres de l'API de votre compte. La valeur de l'intervalle dépend de votre méthode pour augmenter le nonce. En fonction du type de connectivité disponible, il est recommandé de définir une valeur qui tolère 3 à 15 secondes de perturbations de réseau.

Les appels d'API devant indiquer une valeur d'actif/devise peuvent utiliser le nom ISO4217-A3 dans le cas de noms enregistrés ISO, leur code habituel à 3 lettres pour les noms non enregistrés ou leur code X-ISO4217-A3 (voir http://www.ifex-project.org/).

Les réponses seront en JSON sous la structure suivante:

error = tableau de messages d'erreur au format suivant:
    <char-severity code><string-error category>:<string-error type>[:<string-extra info>]
    le code de sévérité peut être E pour erreur ou W pour avertissement
result = résultat de l'appel API (peut ne pas être présent si des erreurs se produisent)

Note: Vous devez faire attention lorsque vous manipulez un nombre représenté sous forme de string, car cela pourrait déborder des types de données standard.

Limites de requêtes API

Nous avons également des mesures de sécurité pour nous protéger contre les abus ou les attaques de type DoS ainsi que contre la manipulation du carnet d’ordres causée par le placement et l’annulation rapides des transactions.

Chaque utilisateur de notre API a un "compteur d'appels" qui commence à 0.

Les appels de registre/trading augmentent le compteur de 2

La création/annulation d'un ordre n'affect pas le compteur

Tous les autres appels API augmentent le compteur de 1.

Le compteur de l'utilisateur est réduit toutes les quelques secondes et s'il dépasse le nombre maximal d'accès, les appels à l'API de l'utilisateur sont suspendus pendant 15 minutes. Les utilisateurs du niveau de base ont un maximum de 15 et leur nombre est réduit de 1 toutes les 3 secondes. Les utilisateurs des niveaux intermédiaire et pro en ont au maximum 20; Le nombre est réduit de 1 toutes les 2 secondes pour les utilisateurs de niveau intermédiaire et de 1 toutes les secondes pour les utilisateurs de niveau Pro.

Bien que la création et l'annulation d'ordres n'augmente pas le compteur, il existe des limites distinctes pour éviter toute manipulation du carnet d'ordres. Exécuter des ordres à compléter et maintenir l'exécution selon un rapport de 1 appel/seconde est généralement suffisant pour ne pas atteindre cette limite.

Données du marché public

Obtenez l'heure du serveur

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

Résultat: Heure du serveur

unixtime =  en horodatage unix
rfc1123 = en horodatage RFC 1123

Note: Aide à approximer l'écart entre le serveur et le client.

Obtenir l'information d'un actif

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

Input:

info = information souhaitée (facultatif):
    info = toute l'information (défaut)
aclass = classe d'actif (facultatif):
    currency (par défaut)
asset = liste d'actifs séparés par des virgules pour lesquels des données sont souhaitées (facultatif, par défaut = tous pour la classe d'actifs sélectionnée)

Résultat: tableau avec les noms des actifs et leurs informations associées

<asset_name> = nom de l'actif
    altname = nom alternatif
    aclass = classe d'actif
    decimals = scaling decimal places for record keeping
    display_decimals = nombre de décimales visibles souhaitées

Obtenir les pairs d'actifs négociables

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

Input:

info = Informations souhaitées (facultatif):
    info = toute l'information (par défaut)
    leverage = information de levier
    fees = grille tarifaire
    margin = information de marge
pair = liste séparée par des virgules de paires d'actifs pour lesquelles des données sont souhaitées (facultatif, par défaut = tout)

Résultat: tableau avec les noms des paires et leurs informations

<pair_name> = nom de la paire
    altname = nom alternatif de la paire
    wsname = Nom de la paire WebSocket (si disponible)
    aclass_base = classe d'actif de base
    base = ID d'actif de base
    aclass_quote = classe d'actif de cotation
    quote = ID d'actif de cotation
    lot = Taille du lot (volume)
    pair_decimals = nombre de décimales pour la paire
    lot_decimals = nombre de décimales pour le volume
    lot_multiplier = facteur de multiplication du volume du lot pour obtenir le volume de la devise
    leverage_buy = tableau de montants de levier disponibles lors de l'achat
    leverage_sell = tableau de montants de levier disponibles lors de la vente
    fees = tableau avec la grille de taux en tuples [volume, taux en pourcentage]
    fees_maker = tableau avec la grille de taux maker en tuples [volume, pourcentage des frais] (si le maker / taker s'applique)
    fee_volume_currency = devise d'escompte pour volume
    margin_call = niveau d'appel de marge
    margin_stop = niveau de liquidation de marge

Note: Si une paire d'actifs figure dans le tableau de type maker/taker, le taker sera affiché dans "fees" et maker sera affiché dans "fees_maker". Pour les paires qui ne sont pas maker/taker, elles seront seulement affichées dans "fees".

Information sur les Ticker

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

Entrée:

pair = liste séparée par des virgules de paires d'actifs pour lesquelles des données sont souhaitées

Résultat: tableau avec le nom des paires et l'information reliée à leur ticker

<pair_name> = nom de la paire
    a = tableau de demandes(<price>, <whole lot volume>, <lot volume>),
    b = tableau d'offres(<price>, <whole lot volume>, <lot volume>),
    c = tableau du dernier trade fermé(<price>, <lot volume>),
    v = tableau de volume(<today>, <last 24 hours>),
    p = tableau de prix du volume moyen (<today>, <last 24 hours>),
    t = tableau du nombre de trades(<today>, <last 24 hours>),
    l = tableau minimums(<today>, <last 24 hours>),
    h = tableau maximums(<today>, <last 24 hours>),
    o = prix d'ouverture aujourd'hui

Note: Le prix d'aujourd'hui commence à 00:00:00 UTC

Obtenir données OHLC (Ouverture, Maximum, Minimum, Fermeture

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

Entrée:

pair = paire d'actifs sur lesquels vous souhaitez obtenir des données OHLC
interval = intervalle de temps en minutes (facultatif):
	1 (défaut), 5, 15, 30, 60, 240, 1440, 10080, 21600
since = retourne les données OHLC validées depuis l'id donné (facultatif. exclusif)

Résultat: tableau de nom de paire et de données OHLC

<pair_name> = nom de paire
    tableau du tableau des entrées(<time>, <open>, <high>, <low>, <close>, <vwap>, <volume>, <count>)
last = ID à utiliser comme lors de la recherche de nouvelles données OHLC validées

Note: la dernière entrée du tableau OHLC concerne la trame actuelle non encore validée et sera toujours présente quelle que soit la valeur "since".

Obtenir livre des ordres

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

Input:

pair = paire d'actifs pour obtenir la profondeur du marché pour
count = nombre maximum de demandes/offres (facultatif)

Résultat: tableau de la paire et de la profondeur du marché

<pair_name> = nom de la paire
    asks = côté tableau d'entrées de tableau de demandes(<price>, <volume>, <timestamp>)
    bids = côté tableau d'entrées de tableau d'offres(<price>, <volume>, <timestamp>)

Obtenir trades récents

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

Entrée:

pair = paire d'actifs sur lesquels vous souhaitez obtenir des données de trades
since = retourne les données de trades à partir de l'heure indiquée (facultatif, exclusif)

Résultat: tableau de noms de paires et de données de trades récents

<pair_name> = nom de la paire
    tableau d'entrées(<price>, <volume>, <time>, <buy/sell>, <market/limit>, <miscellaneous>)
last = id à utiliser dans le champ since afin d'obtenir des nouvelles données de trades

Obtenir les données de spread récentes

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

Input:

pair = paire d'actifs pour obtenir des données de spread
since = retourne les données de spread depuis l'id donné (facultatif. inclusif)

Résultat: tableau du nom de la paire et des données de spread récentes

<pair_name> = nom de la paire
    tableau des entrées(<time>, <bid>, <ask>)
last = id à utiliser dans le champ since afin d'obtenir des nouvelles données de spread

Note: "since" est inclusif de sorte que toutes les données renvoyées avec la même heure que l'ensemble précédent doivent remplacer toutes les entrées de l'ensemble précédent

Private user data

Get account balance

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

Result: array of asset names and balance amount

Get trade balance

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

Input:

aclass = asset class (optional):
    currency (default)
asset = base asset used to determine balance (default = ZUSD)

Result: array of trade balance info

eb = equivalent balance (combined balance of all currencies)
tb = trade balance (combined balance of all equity currencies)
m = margin amount of open positions
n = unrealized net profit/loss of open positions
c = cost basis of open positions
v = current floating valuation of open positions
e = equity = trade balance + unrealized net profit/loss
mf = free margin = equity - initial margin (maximum margin available to open new positions)
ml = margin level = (equity / initial margin) * 100

Note: Rates used for the floating valuation is the midpoint of the best bid and ask prices

Get open orders

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

Input:

trades = whether or not to include trades in output (optional.  default = false)
userref = restrict results to given user reference id (optional)

Result: array of order info in open array with txid as the key

refid = Referral order transaction id that created this order
userref = user reference id
status = status of order:
    pending = order pending book entry
    open = open order
    closed = closed order
    canceled = order canceled
    expired = order expired
opentm = unix timestamp of when order was placed
starttm = unix timestamp of order start time (or 0 if not set)
expiretm = unix timestamp of order end time (or 0 if not set)
descr = order description info
    pair = asset pair
    type = type of order (buy/sell)
    ordertype = order type (See Add standard order)
    price = primary price
    price2 = secondary price
    leverage = amount of leverage
    order = order description
    close = conditional close order description (if conditional close set)
vol = volume of order (base currency unless viqc set in oflags)
vol_exec = volume executed (base currency unless viqc set in oflags)
cost = total cost (quote currency unless unless viqc set in oflags)
fee = total fee (quote currency)
price = average price (quote currency unless viqc set in oflags)
stopprice = stop price (quote currency, for trailing stops)
limitprice = triggered limit price (quote currency, when limit based order type triggered)
misc = comma delimited list of miscellaneous info
    stopped = triggered by stop price
    touched = triggered by touch price
    liquidated = liquidation
    partial = partial fill
oflags = comma delimited list of order flags
    viqc = volume in quote currency
    fcib = prefer fee in base currency (default if selling)
    fciq = prefer fee in quote currency (default if buying)
    nompp = no market price protection
trades = array of trade ids related to order (if trades info requested and data available)

Note: Unless otherwise stated, costs, fees, prices, and volumes are in the asset pair's scale, not the currency's scale. For example, if the asset pair uses a lot size that has a scale of 8, the volume will use a scale of 8, even if the currency it represents only has a scale of 2. Similarly, if the asset pair's pricing scale is 5, the scale will remain as 5, even if the underlying currency has a scale of 8.

Get closed orders

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

Input:

trades = whether or not to include trades in output (optional.  default = false)
userref = restrict results to given user reference id (optional)
start = starting unix timestamp or order tx id of results (optional.  exclusive)
end = ending unix timestamp or order tx id of results (optional.  inclusive)
ofs = result offset
closetime = which time to use (optional)
    open
    close
    both (default)

Result: array of order info

closed = array of order info.  See Get open orders.  Additional fields:
    closetm = unix timestamp of when order was closed
    reason = additional info on status (if any)
count = amount of available order info matching criteria

Note: Times given by order tx ids are more accurate than unix timestamps. If an order tx id is given for the time, the order's open time is used

Query orders info

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

Input:

trades = whether or not to include trades in output (optional.  default = false)
userref = restrict results to given user reference id (optional)
txid = comma delimited list of transaction ids to query info about (50 maximum)

Result: associative array of orders info

<order_txid> = order info.  See Get open orders/Get closed orders

Get trades history

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

Input:

type = type of trade (optional)
    all = all types (default)
    any position = any position (open or closed)
    closed position = positions that have been closed
    closing position = any trade closing all or part of a position
    no position = non-positional trades
trades = whether or not to include trades related to position in output (optional.  default = false)
start = starting unix timestamp or trade tx id of results (optional.  exclusive)
end = ending unix timestamp or trade tx id of results (optional.  inclusive)
ofs = result offset

Result: array of trade info

trades = array of trade info with txid as the key
    ordertxid = order responsible for execution of trade
    pair = asset pair
    time = unix timestamp of trade
    type = type of order (buy/sell)
    ordertype = order type
    price = average price order was executed at (quote currency)
    cost = total cost of order (quote currency)
    fee = total fee (quote currency)
    vol = volume (base currency)
    margin = initial margin (quote currency)
    misc = comma delimited list of miscellaneous info
        closing = trade closes all or part of a position
count = amount of available trades info matching criteria

If the trade opened a position, the follow fields are also present in the trade info:

    posstatus = position status (open/closed)
    cprice = average price of closed portion of position (quote currency)
    ccost = total cost of closed portion of position (quote currency)
    cfee = total fee of closed portion of position (quote currency)
    cvol = total fee of closed portion of position (quote currency)
    cmargin = total margin freed in closed portion of position (quote currency)
    net = net profit/loss of closed portion of position (quote currency, quote currency scale)
    trades = list of closing trades for position (if available)

Note:

  • Unless otherwise stated, costs, fees, prices, and volumes are in the asset pair's scale, not the currency's scale.
  • Times given by trade tx ids are more accurate than unix timestamps.

Query trades info

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

Input:

txid = comma delimited list of transaction ids to query info about (20 maximum)
trades = whether or not to include trades related to position in output (optional.  default = false)

Result: associative array of trades info

<trade_txid> = trade info.  See Get trades history

Get open positions

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

Input:

txid = comma delimited list of transaction ids to restrict output to
docalcs = whether or not to include profit/loss calculations (optional.  default = false)

Result: associative array of open position info

<position_txid> = open position info
    ordertxid = order responsible for execution of trade
    pair = asset pair
    time = unix timestamp of trade
    type = type of order used to open position (buy/sell)
    ordertype = order type used to open position
    cost = opening cost of position (quote currency unless viqc set in oflags)
    fee = opening fee of position (quote currency)
    vol = position volume (base currency unless viqc set in oflags)
    vol_closed = position volume closed (base currency unless viqc set in oflags)
    margin = initial margin (quote currency)
    value = current value of remaining position (if docalcs requested.  quote currency)
    net = unrealized profit/loss of remaining position (if docalcs requested.  quote currency, quote currency scale)
    misc = comma delimited list of miscellaneous info
    oflags = comma delimited list of order flags
        viqc = volume in quote currency

Note: Unless otherwise stated, costs, fees, prices, and volumes are in the asset pair's scale, not the currency's scale.

Get ledgers info

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

Input:

aclass = asset class (optional):
    currency (default)
asset = comma delimited list of assets to restrict output to (optional.  default = all)
type = type of ledger to retrieve (optional):
    all (default)
    deposit
    withdrawal
    trade
    margin
start = starting unix timestamp or ledger id of results (optional.  exclusive)
end = ending unix timestamp or ledger id of results (optional.  inclusive)
ofs = result offset

Result: associative array of ledgers info

<ledger_id> = ledger info
    refid = reference id
    time = unx timestamp of ledger
    type = type of ledger entry
    aclass = asset class
    asset = asset
    amount = transaction amount
    fee = transaction fee
    balance = resulting balance

Note: Times given by ledger ids are more accurate than unix timestamps.

Query ledgers

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

Input:

id = comma delimited list of ledger ids to query info about (20 maximum)

Result: associative array of ledgers info

<ledger_id> = ledger info.  See Get ledgers info

Get trade volume

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

Input:

pair = comma delimited list of asset pairs to get fee info on (optional)
fee-info = whether or not to include fee info in results (optional)

Result: associative array

currency = volume currency
volume = current discount volume
fees = array of asset pairs and fee tier info (if requested)
    fee = current fee in percent
    minfee = minimum fee for pair (if not fixed fee)
    maxfee = maximum fee for pair (if not fixed fee)
    nextfee = next tier's fee for pair (if not fixed fee.  nil if at lowest fee tier)
    nextvolume = volume level of next tier (if not fixed fee.  nil if at lowest fee tier)
    tiervolume = volume level of current tier (if not fixed fee.  nil if at lowest fee tier)
fees_maker = array of asset pairs and maker fee tier info (if requested) for any pairs on maker/taker schedule
    fee = current fee in percent
    minfee = minimum fee for pair (if not fixed fee)
    maxfee = maximum fee for pair (if not fixed fee)
    nextfee = next tier's fee for pair (if not fixed fee.  nil if at lowest fee tier)
    nextvolume = volume level of next tier (if not fixed fee.  nil if at lowest fee tier)
    tiervolume = volume level of current tier (if not fixed fee.  nil if at lowest fee tier)

Note: If an asset pair is on a maker/taker fee schedule, the taker side is given in "fees" and maker side in "fees_maker". For pairs not on maker/taker, they will only be given in "fees".

Request export report

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

Input:

description = report description info
report = report type (trades/ledgers)
format = (CSV/TSV) (optional.  default = CSV)
fields = comma delimited list of fields to include in report (optional.  default = all)
    Note: field options are based on report type
    <trades>
        ordertxid
        time
        ordertype
        price
        cost
        fee
        vol
        margin
        misc
        ledgers
    <ledgers>
        refid
        time
        type
        aclass
        asset
        amount
        fee
        balance
asset = comma delimited list of assets to restrict output to (optional.  default = all)
starttm = report start time (optional.  default = one year before now):
    <n> = unix timestamp of start time
endtm = report end time (optional.  default = now):
    <n> = unix timestamp of end time

Result:

id = report id

Errors: errors include (but are not limited to):

EGeneral:Invalid arguments
EQuery:Unknown asset pair

Get export statuses

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

Input:

report = report type (trades/ledgers)

Result: array of reports and their info

id = report id
descr = report description info
format = (CSV/TSV)
report = report type (trades/ledgers)
status = status of order:
    Queued = report has been queued for creation
    Processing = report is being processed
    Processed = report has been procesed
createdtm = time report was created
expiretm = time report expires
starttm = report start time
endtm = report end time
completedtm = time report was completed
aclass = asset class
asset = comma delimited list of assets
fields = comma delimited list of 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

Errors: errors include (but are not limited to):

EGeneral:Invalid arguments

Get export report

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

Input:

id = report id

Result: binary zip archive containing the report

Note: If content-type isn't application/json, text, or html, the binary report will be streamed back. If it is one of those types you can expect an error in the response.

Note: Depending on the report type chosen and fields chosen, the report could have the following fields. Fields with a * are always present.

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

Remove export report

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

Input:

type = remove type (cancel/delete)
id = report id

Result: bool with result of call

cancel/delete = remove type

Note: The delete remove type can only be used for a report that has already been processed. Use cancel for queued and processing statuses.

Errors: errors include (but are not limited to):

EGeneral:Invalid arguments
WExport:Already processed

Note: In the case where a cancel or delete operation has already taken place on a particular report id, you will get back the WExport:Already processed error.




Private user trading

Add standard order

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

Input:

pair = asset pair
type = type of order (buy/sell)
ordertype = order type:
    market
    limit (price = limit price)
    stop-loss (price = stop loss price)
    take-profit (price = take profit price)
    stop-loss-profit (price = stop loss price, price2 = take profit price)
    stop-loss-profit-limit (price = stop loss price, price2 = take profit price)
    stop-loss-limit (price = stop loss trigger price, price2 = triggered limit price)
    take-profit-limit (price = take profit trigger price, price2 = triggered limit price)
    trailing-stop (price = trailing stop offset)
    trailing-stop-limit (price = trailing stop offset, price2 = triggered limit offset)
    stop-loss-and-limit (price = stop loss price, price2 = limit price)
    settle-position
price = price (optional.  dependent upon ordertype)
price2 = secondary price (optional.  dependent upon ordertype)
volume = order volume in lots
leverage = amount of leverage desired (optional.  default = none)
oflags = comma delimited list of order flags (optional):
    viqc = volume in quote currency (not available for leveraged orders)
    fcib = prefer fee in base currency
    fciq = prefer fee in quote currency
    nompp = no market price protection
    post = post only order (available when ordertype = limit)
starttm = scheduled start time (optional):
    0 = now (default)
    +<n> = schedule start time <n> seconds from now
    <n> = unix timestamp of start time
expiretm = expiration time (optional):
    0 = no expiration (default)
    +<n> = expire <n> seconds from now
    <n> = unix timestamp of expiration time
userref = user reference id.  32-bit signed number.  (optional)
validate = validate inputs only.  do not submit order (optional)

optional closing order to add to system when order gets filled:
    close[ordertype] = order type
    close[price] = price
    close[price2] = secondary price

Result:

descr = order description info
    order = order description
    close = conditional close order description (if conditional close set)
txid = array of transaction ids for order (if order was added successfully)

Errors: errors include (but are not limited to):

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

Note:

  • See Get tradable asset pairs for specifications on asset pair prices, lots, and leverage.
  • Prices can be preceded by +, -, or # to signify the price as a relative amount (with the exception of trailing stops, which are always relative). + adds the amount to the current offered price. - subtracts the amount from the current offered price. # will either add or subtract the amount to the current offered price, depending on the type and order type used. Relative prices can be suffixed with a % to signify the relative amount as a percentage of the offered price.
  • For orders using leverage, 0 can be used for the volume to auto-fill the volume needed to close out your position.
  • If you receive the error "EOrder:Trading agreement required", refer to your API key management page for further details.

Cancel open order

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

Input:

txid = transaction id

Result:

count = number of orders canceled
pending = if set, order(s) is/are pending cancellation

Note: txid may be a user reference id.

Example API clients

Below are sample API client code libraries that can be used when writing your own API client. Please keep in mind that Payward nor the third party authors are responsible for losses due to bugs or improper use of the APIs. Payward has performed an initial review of the safety of the third party code before listing them but cannot vouch for any changes added since then. If you have concerns, please contact support.

C

See the third party authored https://github.com/hANSIc99/Kraken_C_API.

C#

See the third party authored https://bitbucket.org/arrivets/krakenapi.

C++

See the third party authored https://github.com/voidloop/krakenapi.

GO

See the third party authored https://github.com/Beldur/kraken-go-api-client.

Node.JS

See the third party authored https://github.com/nothingisdead/npm-kraken-api.

PERL

See the third party authored http://search.cpan.org/~philippe/Finance-Bank-Kraken-0.1/.

Python 3

See the third party authored https://github.com/veox/python3-krakenex.

Python 2

See the third party authored https://github.com/veox/python2-krakenex.

Ruby

See the third party authored https://github.com/jonatack/kraken_ruby_client.

PHP

The Kraken team has provided a basic PHP library for interfacing with the Kraken REST API. The source and usage examples are also available on Payward's kraken-api-client github repository and is MIT licensed.

Library

Use this library class to make calls to the Kraken REST API with a PHP client. It automatically determines the API method's correct URL path, generates a nonce for each request, and adds a signed header using your API secret and the generated nonce.

<?php
/**
* Implémentation de référence pour l'API REST de Kraken.
*
* Voir https://www.kraken.com/help/api pour plus d'informations.
*
*
* La licence MIT (MIT)
*
* Copyright (c) 2013 Payward, Inc
* 
* L'autorisation est accordée, gracieusement, à toute personne acquérant une copie
* de cette bibliothèque et des fichiers de documentation associés (la "Bibliothèque"),
* de commercialiser la Bibliothèque sans restriction, notamment les droits d'utiliser,
* de copier, de modifier, de fusionner, de publier, de distribuer, de sous-licencier
* et/ou de vendre des copies de la Bibliothèque, ainsi que d'autoriser les personnes
* auxquelles la Bibliothèque est fournie à le faire, sous réserve des conditions
* suivantes :
*
* La déclaration de copyright ci-dessus et la présente autorisation doivent être
* incluses dans toutes copies ou parties substantielles de la Bibliothèque.
*
* LA BIBLIOTHÈQUE EST FOURNIE "TELLE QUELLE", SANS GARANTIE D'AUCUNE
* SORTE, EXPLICITE OU IMPLICITE, NOTAMMENT SANS GARANTIE DE QUALITÉ
* MARCHANDE, D’ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE
* CONTREFAÇON. EN AUCUN CAS, LES AUTEURS OU TITULAIRES DU DROIT D'AUTEUR
* NE SERONT RESPONSABLES DE TOUT DOMMAGE, RÉCLAMATION OU AUTRE
* RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UN CONTRAT, D'UN DÉLIT OU
* AUTRE, EN PROVENANCE DE, CONSÉCUTIF À OU EN RELATION AVEC LA
* BIBLIOTHÈQUE OU SON UTILISATION, OU AVEC D'AUTRES ÉLÉMENTS DE LA
* BIBLIOTHÈQUE.
*/

class KrakenAPIException extends ErrorException {};

class KrakenAPI
{
protected $key; // clé API
protected $secret; // secret API
protected $url; // URL de base de l'API
protected $version; // version API
protected $curl; // curl handle

/**
* Constructeur pour l'API Kraken
*
* @param string $key clé API
* @param string $secret secret API
* @param string $url base URL pour l'API Kraken
* @param string $version version API
* @param bool $sslverify activer/désactiver la vérification de paire SSL. désactiver si vous utilisez 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ètre chaine de caractères $method nom de la méthode
* @paramètre tableau $request demande les paramètres
* @retourne un tableau, demande un résultat si réussi
* @lance une exception KrakenAPIException
*/
function QueryPublic($method, array $request = array())
{
// construction de la chaine de caractères POST
$postdata = http_build_query($request, '', '&');

// effectuer une requête
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));

// déchiffrer les résultats
$result = json_decode($result, true);
if(!is_array($result))
throw new KrakenAPIException('JSON decode error');

return $result;
}

/**
* 
* @paramètre chaine de caractères $path chemin de la méthode
* @paramètre tableau $request demande les paramètres
* @retourne un tableau, demande un résultat si réussi
* @lance une exception KrakenAPIException
*/
function QueryPrivate($method, array $request = array())
{
if(!isset($request['nonce'])) {
// génère un nonce 64 bit en utilisant un horodatage à une résolution à la micro seconde
// fonctions de chaine de caractères sont utilisées pour éviter les problèmes sur les systèmes 32 bit
$nonce = explode(' ', microtime());
$request['nonce'] = $nonce[1] . str_pad(substr($nonce[0], 2, 6), 6, '0');
}

// construction de la chaine de caractère de données POST
$postdata = http_build_query($request, '', '&');

// mettre la clé API en place et signer le 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)
);

// effectuer une requête
curl_setopt($this->curl, CURLOPT_URL, $this->url . $path);
curl_setopt($this->curl, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($this->curl, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($this->curl);
if($result===false)
throw new KrakenAPIException('CURL error: ' . curl_error($this->curl));

// déchiffrer les résultats
$result = json_decode($result, true);
if(!is_array($result))
throw new KrakenAPIException('JSON decode error');

return $result;
}
}
Example usage

Below are the steps involved in initializing the KrakenAPI library class, as well a number of example API method calls. Formatted result sets are shown beneath each respective API call snippet.

Initialization

Include the library file and supply your API key and secret when instantiating a KrakenAPI object.

<?php

require_once 'KrakenAPIClient.php';
$kraken = new KrakenAPI('YOUR API KEY', 'YOUR API SECRET');
Method calls

Query a public list of active assets and their properties:

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

Returned assets are keyed by their ISO-4217-A3-X names, example output:

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
                )
            ...
)

Query public ticker info for XBT/USD pair:

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

Example output:

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
                        )

                    ...
        )
)

Query public recent trades for XBT/EUR pair since 2013-08-07T18:20:42+00:00:

NOTE: the 'since' parameter is subject to change in the future: it's precision may be modified, and it may no longer be representative of a timestamp. The best practice is to base it on the 'last' value returned in the result set.

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

Example output:

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
        )
)

Query private asset balances:

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

Example output:

Array
(
    [error] => Array
        (
        )

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

)

Query private open orders and included related trades:

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

Example output:

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] =>
                        )
                    ...
                )
        )
)

Add a standard order: sell 1.123 XBT/USD @ limit $120

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

Example output:

Array
(
    [error] => Array
        (
        )

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

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

        )

)

Add a standard order: buy €300 worth of XBT at market at 2013-08-12T09:27:22+0000

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

Example output:

Array
(
    [error] => Array
        (
        )

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

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

        )

)

Add a standard order: buy 2.12345678 XBTUSD @ limit $101.9901 with 2:1 leverage, with a follow up stop loss, take profit sell order: stop at -5% loss, take profit at +$10 price increase (signed stop/loss prices determined automatically using # notation):

$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);

Example output:

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
                )

        )

)

Financement utilisateur privé

NOTE:Ceci est une tentative d'API de financement et peut être mis à jour dans le futur. Veuillez consulter la page API principale pour plus d'informations sur comment utiliser l'API.

Obtenir les méthodes de dépôt

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

Entrée:

aclass = classe d'actif (optionnel):
devise (par défaut)
asset = actif entrain d'être déposé

Résultat: tableau associatif des méthodes de dépôt:

method = nom de la méthode de dépôt
limit = montant net maximum qui peut être déposé maintenant, ou false s'il n'y a pas de limite
fee = montant des frais qui seront payés
address-setup-fee = selon si la méthode a des frais de mise en place d'adresse ou non (optionnel)

Obtenir les adresses de dépôt

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

Entrée:

aclass = classe d'actif (optionnel):
devise (par défaut)
asset = actif entrain d'être déposé
method = nom de la méthode de dépôt
new = selon s'il faut générer une nouvelle adresse ou non (optionnel. par défaut = false)

Result: tableau associatif des adresses de dépôt:

address = adresse de dépôt
expiretm = date d'expiration en horodatage unix, ou 0 s'il n'y a pas d'expiration
new = selon si l'adresse a déjà été utilisée ou non

Obtenir le statut des dépôts récents

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

Entrée:

aclass = classe d'actif (optionnel):
devise (par défaut)
asset = actif entrain d'être déposé
method = nom de la méthode de dépôt

Résultat: tableau de tableau d'information de statut du dépôt:

method = nom de méthode de dépôt utilisée
aclass = classe d'actif
asset = code d'actif X-ISO4217-A3
refid = id de référence
txid = id de transaction de la méthode
info = informations de transaction de la méthode
amount = montant déposé
fee = frais payés
time = horodatage unix de quand la demande a été effectuée
status = statut du dépôt
status-prop = propriétés de statut additionnel (si disponible)
return = une transaction de retour initié par Kraken
onhold = dépôt en attente d'examen
Pour plus d'informations à propos du statut, veuillez vous référer aux états d'une transaction financière IFEX.

Obtenir des informations de retrait

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

Entrée:

aclass = classe d'actif (optionnel):
devise (par défaut)
asset = actif entrain d'être retiré
key = nom de la clé de retrait, comme mis en place sur votre compte
amount = montant à retirer

Résultat: tableau associatif des informations de retrait:

method = nom de la méthode de retrait qui sera utilisée
limit = montant net maximum qui peut être retiré maintenant
fee = montant des frais qui seront payés

Retirer des fonds

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

Entrée:

aclass = classe d'actif (optionnel):
devise (par défaut)
asset = actif entrain d'être retiré
key = nom de la clé de retrait, comme mis en place sur votre compte
amount = montant à retirer, incluant les frais

Résultat: tableau associatif de la transaction de retrait:

refid = id de référence

Obtenir le statut des retraits récents

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

Entrée:

aclass = classe d'actif (optionnel):
devise (par défaut)
asset = actif entrain d'être retiré
method = nom de la méthode de retrait (optionnel)

Résultat: tableau associatif des informations de statut du retrait:

method = nom de la méthode de retrait utilisée
aclass = classe d'actif
asset = code d'actif X-ISO4217-A3
refid = id de référence
txid = id de transaction de la méthode
info = information de transaction de la méthode
amount = montant retiré
fee = frais payés
time = horodatage unix de quand la demande a été effectuée
status = statut du retrait
status-prop = propriétés de statut additionnel (si disonible)
cancel-pending = annulation demandée
canceled = annulé
cancel-denied = annulation demandée mais a été rejetée
return = une transaction de retour initiée par Kraken; elle ne peut pas être annulée
onhold = retrait en attente d'examen
Pour plus d'informations à propos du statut, veuillez vous référer aux états d'une transaction financière IFEX.

Demander une annulation de retrait

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

Entrée:

aclass = classe d'actif (optionnel):
devise (par défaut)
asset = actif entrain d'être retiré
refid = id de référence du retrait

Résultat: true si réussi

Note: L'annulation ne peut pas être garantie. Ceci mettra en place une demande d'annulation. En fonction de l'étape du processus de retrait, il se peut qu'il ne soit pas possible d'annuler le retrait.