For information on changes for our US clients, please visit our Support Center article.

Debido al aumento de la demanda, la verificación de la cuenta puede retrasarse. Evite enviar varias solicitudes y, para obtener mejores resultados, revise previamente nuestros requisitos de documentación.
Buscar
Cliente de línea de comandos de la API REST de Kraken
Instrucciones de instalación (#install)
Comandos ejemplo (#usage)
Código Python (#python)
El cliente de línea de comandos REST API de Kraken permite acceso completo al REST API de Kraken a través de la línea de comandos (como Terminal en macOS), por lo que no se requieren conocimientos de programación o experiencia con API.
Todas las características de REST API (https://www.kraken.com/features/api) son accesibles, incluyendo:
endpoints de datos del mercado públicos
endpoints de gestión de cuenta privados
endpoints de trading
endpoints de depósitos y retiros privados
endpoints de staking privados
El cliente de línea de comandos puede ser utilizado como un cliente API independiente, o se puede llamar desde otros programas (otros lenguajes interpretados como scripts Bash o lenguajes compilados como C/C++).

Instalación

1. Instale Python 3 (si es necesario).
macOS y Linux probablemente ya tengan Python 3 instalado.
Windows probablemente no tenga Python 3 instalado, pero puede hacerse desde https://www.python.org/ (https://www.python.org/).
2. Descargue y guarde el archivo krakenapi.py (https://support.kraken.com/hc/article_attachments/4401801782932/krakenapi.py) en su ordenador en la carpeta (directorio) de su elección. Por ejemplo:
Macintosh HD > Users > Satoshi > KrakenAPI

3. Abra un símbolo del sistema (como el Terminal de MacOS), y navegue a la carpeta (directorio) elegida en el paso anterior.
Puede utilizar el comando "cd" (cambiar directorio) para navegar. Por ejemplo:
cd /Users/Satoshi/KrakenAPI

4. Convierta el archivo krakenapi.py a ejecutable.
Puede utilizar el comando "chmod 755" (cambiar modo). Por ejemplo:
chmod 755 krakenapi.py

5. Añada sus claves API a la misma carpeta donde se encuentra el archivo krakenapi.py.
Copie/pegue su clave pública de API desde gestión de cuenta dentro de un archivo de texto sin formato llamado "API_Public_Key".
Copie/pegue su clave privada API (secreta) dentro de un archivo de texto sin formato llamado "API_Private_Key".
Consulte: ¿Cómo generar un par de claves API? (https://support.kraken.com/hc/articles/360000919966-How-to-generate-an-API-key-pair-)
Una clave de API solamente es necesaria si planea utilizar los endpoints de API privados para acceder a su cuenta de Kraken (como consultas de balance, generar/cancelar órdenes, exportar historial de cuenta, etc).

Comandos Ejemplo

El uso del cliente de línea de comandos REST API se muestra a continuación:
./krakenapi.py endpoint [parameters]
El cliente de línea de comandos soporta todos los endpoints de REST API. Los siguientes son solo algunos ejemplos de comandos:
./krakenapi.py Time./krakenapi.py Ticker pair=xbtusd./krakenapi.py Trades pair=etheur since=1574067140000000000./krakenapi.py Balance./krakenapi.py TradeBalance asset=xbt./krakenapi.py QueryOrders txid=O7MN22-ZCX7J-TGLQHD./krakenapi.py AddOrder pair=xbtusd type=buy ordertype=limit price=6500 volume=0.002 leverage=5./krakenapi.py CancelOrder txid=O7MN22-ZCX7J-TGLQHD

Código Python

#!/usr/bin/env python# Kraken Rest API## Usage: ./krakenapi.py endpoint [parameters]# Example: ./krakenapi.py Time# Example: ./krakenapi.py OHLC pair=xbtusd interval=1440# Example: ./krakenapi.py Balance# Example: ./krakenapi.py TradeBalance asset=xdg# Example: ./krakenapi.py OpenPositions# Example: ./krakenapi.py AddOrder pair=xxbtzusd type=buy ordertype=market volume=0.003 leverage=5import sysimport platformimport timeimport base64import hashlibimport hmacif int(platform.python_version_tuple()[0]) > 2:import urllib.request as urllib2else:import urllib2api_public = {"Time", "Assets", "AssetPairs", "Ticker", "OHLC", "Depth", "Trades", "Spread", "SystemStatus"}api_private = {"Balance", "BalanceEx", "TradeBalance", "OpenOrders", "ClosedOrders", "QueryOrders", "TradesHistory", "QueryTrades", "OpenPositions", "Ledgers", "QueryLedgers", "TradeVolume", "AddExport", "ExportStatus", "RetrieveExport", "RemoveExport", "GetWebSocketsToken"}api_trading = {"AddOrder", "CancelOrder", "CancelAll", "CancelAllOrdersAfter"}api_funding = {"DepositMethods", "DepositAddresses", "DepositStatus", "WithdrawInfo", "Withdraw", "WithdrawStatus", "WithdrawCancel", "WalletTransfer"}api_staking = {"Staking/Assets", "Stake", "Unstake", "Staking/Pending", "Staking/Transactions"}api_domain = "https://api.kraken.com"api_data = ""if len(sys.argv) < 2:api_method = "Time"elif len(sys.argv) == 2:api_method = sys.argv[1]else:api_method = sys.argv[1]for count in range(2, len(sys.argv)):if count == 2:api_data = sys.argv[count]else:api_data = api_data + "&" + sys.argv[count]if api_method in api_private or api_method in api_trading or api_method in api_funding or api_method in api_staking:api_path = "/0/private/"api_nonce = str(int(time.time()*1000))try:api_key = open("API_Public_Key").read().strip()api_secret = base64.b64decode(open("API_Private_Key").read().strip())except:print("API public key and API private (secret) key must be in plain text files called API_Public_Key and API_Private_Key")sys.exit(1)api_postdata = api_data + "&nonce=" + api_nonceapi_postdata = api_postdata.encode('utf-8')api_sha256 = hashlib.sha256(api_nonce.encode('utf-8') + api_postdata).digest()api_hmacsha512 = hmac.new(api_secret, api_path.encode('utf-8') + api_method.encode('utf-8') + api_sha256, hashlib.sha512)api_request = urllib2.Request(api_domain + api_path + api_method, api_postdata)api_request.add_header("API-Key", api_key)api_request.add_header("API-Sign", base64.b64encode(api_hmacsha512.digest()))api_request.add_header("User-Agent", "Kraken REST API")elif api_method in api_public:api_path = "/0/public/"api_request = urllib2.Request(api_domain + api_path + api_method + '?' + api_data)api_request.add_header("User-Agent", "Kraken REST API")else:print("Usage: %s method [parameters]" % sys.argv[0])print("Example: %s OHLC pair=xbtusd interval=1440" % sys.argv[0])sys.exit(1)try:api_reply = urllib2.urlopen(api_request).read()except Exception as error:print("API call failed (%s)" % error)sys.exit(1)try:api_reply = api_reply.decode()except Exception as error:if api_method == 'RetrieveExport':sys.stdout.buffer.write(api_reply)sys.exit(0)print("API response invalid (%s)" % error)sys.exit(1)if '"error":[]' in api_reply:print(api_reply)sys.exit(0)else:print(api_reply)sys.exit(1)