Preguntas frecuentes avanzadas sobre la API

Última actualización: 5 de noviembre de 2026

Mediante los endpoints de depósito y retiro de la REST API, los clientes pueden depositar y retirar fondos de su cuenta de Kraken, así como solicitar el estado en tiempo real de una transacción de depósito o retiro.

Los depósitos y retiros pasan por varias etapas entre la solicitud inicial y la finalización de la transacción, por lo que los endpoints de depósito y retiro devolverán un valor de estado diferente en función del momento en que se consulten.

Ten en cuenta que los valores de estado procedían originalmente de las páginas 16 y 17 del documento Internet Financial Exchange Protocol (IFEX), pero se han modificado ligeramente para adaptarlos mejor a las transacciones de criptomonedas (por ejemplo, no se utilizan todos los valores de estado posibles).

Depósitos

Los posibles valores de estado de las transacciones de depósito son los siguientes:

  • •

    Liquidado = El depósito se ha recibido, pero aún necesita confirmaciones adicionales en la blockchain.

  • •

    Correcto = El depósito ha alcanzado el número de confirmaciones requerido en la blockchain.

  • •

    Fallo = El depósito ha fallado (por uno o varios motivos).

A continuación se muestran algunos ejemplos de cómo aparecerían los valores de estado anteriores en las respuestas del endpoint DepositStatus:

Estado Liquidado:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"QSB7IFM-Q3LT3X-NVAOKE","txid":"92c908ea2ea819d678d67130e4d20b625a8f97f3cfff45f906dde8cef41a046a","info":"D7SLwMBPqfFMCZ8EJDMoVEePpZAFFegLt8","amount":"997.00000000","fee":"0.00000000","time":1611308478,"status":"Settled"}]}

Estado Correcto:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"QSB7IFM-Q3LT3X-NVAOKE","txid":"92c908ea2ea819d678d67130e4d20b625a8f97f3cfff45f906tdde8cef41a046a","info":"D7SLwMBPqfFMCZ8EJDMoVEePpZAFFegLt8","amount":"997.00000000","fee":"0.00000000","time":1611308478,"status":"Success"}]}

Retiros

Los posibles valores de estado de las transacciones de retiro son los siguientes:

  • •

    Inicial = Se ha recibido la solicitud de retiro y se está comprobando su validez (por ejemplo, las restricciones de depósito y retiro de la cuenta).

  • •

    Pendiente = El retiro está a la espera de que nuestra pasarela de depósito y retiro lo procese.

  • •

    Liquidado = El retiro se ha enviado a la blockchain (en este momento, el ID de la transacción en la blockchain estaría disponible).

  • •

    Correcto = La transacción de retiro tiene al menos una confirmación en la blockchain.

  • •

    En espera = El retiro se ha retenido y nuestro equipo de depósito y retiro debe comprobarlo manualmente.

  • •

    Fallo = El retiro ha fallado (por uno o varios motivos).

A continuación se muestran algunos ejemplos de cómo aparecerían los valores de estado anteriores en las respuestas del endpoint WithdrawStatus:

Estado inicial:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":null,"info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Initial"}]}

Estado pendiente:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":null,"info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Pending"}]}

Estado liquidado:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":"064536e901f2cbfa6e279aa7a87c700b64e0ce561bf6e266788c47496f75106c","info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Settled"}]}

Estado correcto:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":"064536e901f2cbfa6e279aa7a87c700b64e0ce561bf6e266788c47496f75106c","info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Success"}]}

Estado fallido:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":null,"info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Failure","status-prop":"canceled"}]}

Encontrarás información adicional sobre los depósitos y retiros en nuestras páginas de soporte sobre depósitos y retiros en efectivo y depósitos y retiros de criptomonedas.

El endpoint OHLC de la REST API solo proporciona una cantidad limitada de datos históricos, concretamente 720 puntos de datos del intervalo solicitado. Por ejemplo, solicitar datos OHLC en intervalos de 1 minuto devolverá los 720 minutos más recientes (12 horas) de datos.

Para las aplicaciones que necesiten datos OHLC o de ticks adicionales, es posible obtener el historial completo de trading de nuestros mercados (los datos históricos de tiempo y ventas) a través del endpoint Trades de la REST API. A partir de los datos históricos de tiempo y ventas se pueden crear los datos OHLC de cualquier periodo y cualquier intervalo.

El endpoint Trades acepta un parámetro opcional llamado since, que especifica la fecha y hora iniciales de los datos. El valor de since es una marca de tiempo UNIX con resolución de nanosegundos (una marca de tiempo UNIX estándar en segundos con 9 dígitos adicionales).

Por ejemplo, una llamada al endpoint Trades como https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559347200000000000 devolvería los datos históricos de tiempo y ventas de XBT/USD desde el 01/06/2019 a las 00:00:00 UTC:

{"error":[],"result":{"XXBTZUSD":[["8552.90000","0.03190270",1559347203.7998,"s","m",""],["8552.90000","0.03155529",1559347203.8086,"s","m",""],["8552.90000","0.00510797",1559347203.9664,"s","m",""],["8552.90000","0.09047336",1559347203.9789,"s","m",""],["8552.90000","0.00328738",1559347203.9847,"s","m",""],["8552.90000","0.00492152",1559347203.9897,"s","m",""],["8552.90000","0.00201848",1559347203.9937,"s","m",""],["8552.90000","0.11422068",1559347203.9993,"s","m",""],["8552.90000","0.00425858",1559347204.071,"s","m",""],["8552.90000","0.00427679",1559347204.0762,"s","m",""],["8552.90000","0.06381401",1559347204.1662,"s","m",""]
...
["8579.50000","0.05379597",1559350785.248,"s","l",""],["8579.50000","0.94620403",1559350785.2936,"s","l",""],["8578.10000","0.45529068",1559350785.297,"s","l",""]],"last":"1559350785297011117"}}

En las llamadas posteriores al endpoint Trades, se debe sustituir el valor del parámetro since por el valor del parámetro last incluido en los resultados de la llamada anterior como en https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559350785297011117.

Usar el valor especial de since de 0 (cero) devolvería los datos históricos de tiempo y ventas desde el inicio del mercado (empezando por la primera operación).

Una referencia de usuario es un ID de orden proporcionado por el cliente que puede utilizarse en lugar del ID de orden real (proporcionado por la API) para algunas tareas de gestión de órdenes, especialmente para cancelar órdenes.

Las referencias de usuario están diseñadas para ser lo más flexibles posible y, por tanto, pueden utilizarse de distintas formas, entre ellas:

  • •

    como un ID único (cuando cada orden tiene una referencia de usuario diferente),

  • •

    para agrupar órdenes relacionadas (por ejemplo, órdenes con distintos niveles de apalancamiento),

  • •

    o como un ID de respaldo en caso de no conocer el ID de orden real.

Una referencia de usuario debe ser un valor numérico entre 1 y 2.147.483.647 (básicamente, cualquier número positivo de 32 bits), por lo que puede implementarse como un contador simple, como un valor aleatorio con signo de 32 bits o incluso como una marca de tiempo en segundos (aunque dejaría de funcionar después del 19/01/2038 a las 3:14:07 UTC).

Colocar órdenes con una referencia de usuario

Las órdenes pueden colocarse con una referencia de usuario asociada llamando al endpoint AddOrder e incluyendo el parámetro userref con la referencia de usuario como valor:

$ ./krakenapi AddOrder pair=xdgusd type=buy ordertype=limit price=0.1 volume=50 userref=27649653

{"error":[],"result":{"descr":{"order":"buy 50.00000000 XDGUSD @ limit 0.1000000"},"txid":["OQJSXE-F5FOM-IXHVL4"]}}

Consultar pedidos que tienen una referencia de usuario

Los pedidos que ya tienen una referencia de usuario asociada pueden consultarse llamando a los endpoints Open/Closed/QueryOrders e incluyendo el parámetro userref con la referencia de usuario existente como valor (en este caso, la referencia de usuario actúa como filtro y muestra solo los pedidos asociados):

$ ./krakenapi OpenOrders userref=27649653

{"error":[],"result":{"open":{"OQJSXE-F5FOM-IXHVL4":{"refid":null,"userref":27649653,"status":"open","opentm":1629618802.9812,"starttm":0,"expiretm":0,"descr":{"pair":"XDGUSD","type":"buy","ordertype":"limit","price":"0.1000000","price2":"0","leverage":"none","order":"buy 50.00000000 XDGUSD @ limit 0.1000000","close":""},"vol":"50.00000000","vol_exec":"0.00000000","cost":"0.000000000","fee":"0.000000000","price":"0.000000000","stopprice":"0.000000000","limitprice":"0.000000000","misc":"","oflags":"fciq"}}}}

$ ./krakenapi ClosedOrders userref=38695724

{"error":[],"result":{"closed":{"O7YEFN-3V4RK-FBNSNM":{"refid":null,"userref":38695724,"status":"canceled","reason":"User requested","opentm":1629619539.3593,"closetm":1629619542.2246,"starttm":0,"expiretm":0,"descr":{"pair":"XBTUSD","type":"buy","ordertype":"limit","price":"25000.0","price2":"0","leverage":"none","order":"buy 0.00010000 XBTUSD @ limit 25000.0","close":""},"vol":"0.00010000","vol_exec":"0.00000000","cost":"0.00000","fee":"0.00000","price":"0.00000","stopprice":"0.00000","limitprice":"0.00000","misc":"","oflags":"fciq"}},"count":1}}

Cancelar pedidos que tienen una referencia de usuario

Los pedidos que ya tienen una referencia de usuario asociada pueden cancelarse utilizando dicha referencia mediante el endpoint CancelOrder y usando la referencia de usuario como valor de txid (en lugar del valor del ID del pedido):

$ ./krakenapi CancelOrder txid=16764529

{"error":[],"result":{"count":1}}

Ten en cuenta que se cancelarían todos los pedidos abiertos con la misma referencia de usuario, por lo que es posible realizar una única llamada a CancelOrder para cancelar varios pedidos simultáneamente (como indica el valor count de 3 en la siguiente respuesta):

$ ./krakenapi CancelOrder txid=48695624

{"error":[],"result":{"count":3}}

Este problema puede estar relacionado con Cloudflare:

https://support.cloudflare.com/hc/en-us/articles/200169226-Why-am-I-getting-a-403-error-

NOTA: Kraken tiene habilitada la "Browser Integrity Check".

Esto puede ocurrir si tu solicitud contiene encabezados sospechosos. Por ejemplo, puede que a tu solicitud le falte un agente de usuario o que utilice uno no estándar; comprueba los encabezados de tu solicitud.

Si no puedes crear ninguna solicitud estándar que nuestro sistema permita, envíanos una copia completa de la solicitud o solicitudes que estás intentando realizar, incluida tu dirección IP y todos los encabezados. Esta información nos permitirá investigar el problema.

Entornos de prueba para REST, WebSocket y FIX

Para nuestra API REST/WebSocket spot y nuestra API FIX, además de nuestra API REST/WebSocket de derivados y nuestra API FIX, ofrecemos actualmente un entorno de pruebas para clientes cualificados. Para acceder a este entorno es necesario completar un proceso de incorporación que puede iniciarse poniéndote en contacto directamente con el equipo de la API.

Probar nuestra API mediante el parámetro de prueba Validate

Al colocar un pedido mediante el endpoint AddOrder de la REST API o el endpoint addOrder de la API WebSocket, puedes utilizar el parámetro de entrada validate para simular el pedido.

Al llamar a AddOrder/addOrder con el parámetro validate establecido en true (validate=1, validate=true, validate=anything, etc.), se comprobarán los detalles del pedido para detectar errores, pero la respuesta de la API nunca incluirá un ID de pedido (que siempre se devolvería en un pedido correcto sin el parámetro validate).

Ejemplo de llamada a AddOrder con el parámetro validate (observa que falta el ID del pedido):

bash

Bash

$ ./krakenapi AddOrder pair=xdgusd type=buy ordertype=market volume=5000 validate=true{"error":[],"result":{"descr":{"order":"buy 5000.00000000 XDGUSD @ market"}}}

Órdenes reales pequeñas u órdenes con precios extremos

Para realizar una prueba exhaustiva de la API mediante Validate Parameter, recomendamos colocar órdenes de mercado muy pequeñas (órdenes por el tamaño mínimo de la orden) u órdenes límite con precios muy alejados del precio de mercado actual (por ejemplo, colocar una orden límite para vender ETH/USD a 800 $ cuando el precio de mercado sea de 200 $).

Las pruebas con órdenes reales permiten que el código de tu API interactúe con nuestra API en condiciones reales, por lo que todos los aspectos de la prueba serán precisos (cómo afectan tus órdenes al libro de órdenes, etc.).

Por motivos de seguridad, hemos dejado de admitir TLS 1.0 y 1.1. Si aparecen mensajes de error de conexión SSL/TLS al intentar conectarte a nuestra API, probablemente se deba al uso de uno de estos estándares obsoletos. Tendrás que modificar tu cliente de API para forzar el uso de TLS 1.2/1.3 o actualizar tu versión de .NET a la 4.6 o posterior, que utiliza TLS 1.2/1.3 de forma estándar.

La siguiente hoja de Google se puede utilizar para calcular la firma de autenticación de la REST API para cualquier combinación de datos de entrada:

  • •

    Clave privada (secreta) de la API

  • •

    Endpoint de la API (Balance, TradeBalance, QueryOrders, etc.)

  • •

    Valor nonce (consulta nuestra página de soporte sobre qué es un nonce para obtener más información)

  • •

    Parámetros de entrada del endpoint (asset=doge, por ejemplo)

La calculadora se puede utilizar para verificar que el algoritmo de autenticación se ha implementado correctamente y evitar así posibles problemas (especialmente errores de clave no válida inesperados) más adelante en el ciclo de desarrollo.

Instrucciones de uso

  1. 1

    Abre la calculadora de autenticación de la REST API en Chrome (o en cualquier otro navegador web reciente)

  2. 2

    Haz una copia de la calculadora en tu propio Google Drive mediante el menú Archivo -> Hacer una copia (tendrás que iniciar sesión en tu cuenta de Google para completar este paso)

  3. 3

    Edita los campos clave de API, endpoint de la API, valor nonce y datos de entrada con tu propia clave de API y los detalles de la solicitud

  4. 4

    Compara la firma de autenticación de la API calculada con el valor calculado por tu propio código de API (los dos valores deben coincidir exactamente)

Por motivos de seguridad, recomendamos utilizar la calculadora de autenticación con una clave de API temporal y eliminar después la clave de API de tu cuenta cuando se haya demostrado que la implementación de la firma de autenticación es correcta.

Ejemplo

Screenshot_2021-06-21_at_14.42.35.png

La principal ventaja de utilizar nuestras bibliotecas cliente es que no necesitas dedicar tiempo ni esfuerzo a reinventar la rueda para crear firmas de API, ya que nosotros lo hemos hecho por ti.

Si solo tienes previsto realizar llamadas a métodos públicos, puedes optar por no utilizar bibliotecas cliente, ya que no se necesita autenticación.

Puedes consultar la lista de wrappers disponibles aquí.