API
Conozca sobre nuestra API
Uso General
NOTA: Todas las URLs de la API deben usar el dominio api.kraken.com.
Debe proporcionar una cadena de agente de usuario al crear una cabecera de solicitud o de lo contrario, no podrá conectarse a la API.
Kraken tiene habilitada la 'Revisión de integridad del navegador'.
Puede recibir un error si a sus encabezados de solicitud les falta un agente de usuario o tiene un agente de usuario no estándar.
Si no puede crear ninguna solicitud estándar aceptada por nuestro sistema, envíenos una copia completa de la(s) solicitud(es) que intenta obtener, incluyendo las direcciones de IP completas y todos los encabezados. Esta información nos permitirá investigar más a fondo.
Los métodos públicos pueden utilizar GET o POST.
Los métodos privados deben utilizar POST y ser configurados de la siguiente manera:
Encabezado HTTP:
API-Key = Clave API API-Sign = Firma del mensaje utilizando HMAC-SHA512 de (dirección URI + SHA256(nonce + POST data)) y la clave API secreta descodificada de la base64
PUBLICAR Datos:
nonce = siempre aumenta el entero de 64 bits sin signo. otp = contraseña de la verificación en dos pasos (en caso de tener la verificación en dos pasos activado, de lo contrario no es requerido)
Nota: No es posible reiniciar el nonce a un valor menor así que, asegúrese de utilizar un método de generación de nonce que no genere números menores a los nonce previos. Se recomienda un contador persistente o la hora actual con una precisión de centésimas de segundo o mayor. Demasiadas peticiones con nonces inferiores al último nonce válido (EAPI:nonce inválido) pueden resultar en bloqueos temporales.
Nota: Algunas peticiones pueden llegar fuera de orden o el protocolo NTP puede ocasionar que su reloj se retrase, resultando en problemas con el nonce. Si se encuentra con este problema, puede cambiar el nonce window en la página de configuración de la API de su cuenta. La cantidad a configurar dependerá de cómo incremente el nonce. Dependiendo de su conectividad, se recomienda establecer un valor que tolere los problemas de red entre 3-15 segundos.
Las llamadas API que requieren un activo de divisa se pueden referenciar utilizando sus nombres ISO4217-A3 en el caso de los nombres registrados ISO, sus nombres de 3 letras comúnmente utilizados en el caso de nombres no registrados, o de su código X-ISO4217-A3 (vea http://www.ifex-project.org/).
Las respuestas están codificadas en JSON en forma de::
error = vector de mensajes de error con el siguiente formato: <char-severity code><string-error category>:<string-error type>[:<string-extra info>] código severo puede ser E en caso de error o W si se trata de una advertencia result = resultado de la llamada API (puede no existir en caso de haber errores)
Nota: Se debe tener cuidado al tratar cualquier número representado como string, ya que estos pueden desbordar los tipos de datos estándar.
Límite de tarifa de llamada API
También disponemos de medidas de seguridad para proteger contra los abusos o ataques DoS así como la manipulación del libro de órdenes causada por la rápida colocación y cancelación de órdenes.
Cada usuario de nuestra API tiene un "contador de llamadas" que comienza en 0.
Las llamadas del historial del libro mayor/operaciones aumentan el contador en 2.
Las llamadas de Crear/Cancelar órdenes no afectan al contador.
Todas las demás llamadas de la API aumentan el contador en 1.
El contador del usuario se reduce cada dos segundos, y si el contador supera el acceso a la API máximo del usuario, se suspende durante 15 minutos. Los usuarios de nivel Básico tienen un máximo de 15 y su recuento se reduce en 1 cada 3 segundos. Los usuarios de nivel Intermedio y Pro tienen un máximo de 20; la cuenta se reduce en 1 cada 2 segundos para usuarios de nivel Intermedio, y se reduce en 1 cada segundo para usuarios de nivel Pro.
Aunque crear y cancelar órdenes no aumenta el contador, existen límites separados para evitar la manipulación del libro de órdenes. Solo realizando órdenes que tenga la intención de completar y manteniendo la tasa baja a 1 por segundo generalmente es suficiente para no alcanzar este límite.
Datos de mercado públicos
Obtener la hora del servidor
URL: https://api.kraken.com/0/public/Time
Resultado: Hora del servidor
unixtime = marca de tiempo unix rfc1123 = formato de tiempo RFC 1123
Esto es para ayudar a aproximar el tiempo de desviación entre el servidor y el cliente.
Obtener información del activo
URL: https://api.kraken.com/0/public/Assets
Entrada:
info = información para recuperar (opcional): info = toda la información (por defecto) aclass = clase del activo (opcional): divisa (por defecto) asset = lista delimitada por comas de activos para obtener información (opcional. por defecto = todo para la clase de activo seleccionado)
Resultado: vector de nombres de activos y su información asociada
<asset_name> = nombre del activo altname = nombre alternativo aclass = clase del activo decimals = número de decimales deseado en los registros display_decimals = número de decimales a mostrar en la salida
Obtener pares de activos negociables
URL: https://api.kraken.com/0/public/AssetPairs
Entrada:
info = información para recuperar (opcional): info = toda la información (por defecto) leverage = información del apalancamiento fees = tabla de tarifas margin = información del margen pair = lista delimitada por comas de pares de activos para obtener información (opcional. por defecto = todo)
Resultado: vector de nombres de pares y su información asociada
<pair_name> = nombre del par altname = nombre del par alternativo wsname = nombre del par WebSocket (si está disponible) aclass_base = clase de activo del componente base base = identificación (id) del activo del componente base aclass_quote = clase de activo del componente de cotización quote = identificación (id) del activo del componente de cotización lot = tamaño del lote (volumen) pair_decimals = número de decimales para el par lot_decimals = número de decimales para el volumen lot_multiplier = cantidad para multiplicar el volumen del lote para obtener el volumen de la moneda leverage_buy = vector de las cantidades de apalancamiento disponibles al comprar leverage_sell = vector de las cantidades de apalancamiento disponibles al vender fees = vector de tabla de tarifas en tuples [volumen, tarifa porcentual] fees_maker = vector de tabla de tarifas tipo maker en tuples [volumen, tarifa porcentual] (si se aplica maker/taker) fee_volume_currency = divisa del descuento por volumen margin_call = nivel de llamada de margen margin_stop = nivel de margen de liquidación/stop-out
Nota: Si un par de activos está en la tabla de tarifas tipo maker/taker, el lado taker se proporcionará en "fees" y el maker en "fees_maker". El resto de pares se proporcionarán en "fees".
Obtener información de Ticker
URL: https://api.kraken.com/0/public/Ticker
Entrada:
pair = lista delimitada por comas de pares de activos para obtener información
Resultado: vector de nombres de pares y la información asociada de su ticker
<pair_name> = nombre del par a = vector de ofertas(<precio>, <lote completo de volumen>, <lote del volumen>), b = vector de demandas(<precio>, <lote completo de volumen>, <lote del volumen>), c = vector de las últimas operaciones (trades) cerradas(<precio>, <lote del volumen>), v = vector de volumen(<hoy>, <últimas 24 horas>), p = vector del precio promedio ponderado por volumen(<hoy>, <últimas 24 horas>), t = vector de número de operaciones(<hoy>, <últimas 24 horas>), l = vector de mínimos(<hoy>, <últimas 24 horas>), h = vector de máximos(<hoy>, <últimas 24 horas>), o = precio de apertura de hoy
Nota: Los precios de hoy comienzan a las 00:00:00 UTC
Obtener datos OHLC (Apertura, Máximo, Mínimo, Cierre)
URL: https://api.kraken.com/0/public/OHLC
Entrada:
pair = par de activos para obtener datos OHLC para el intervalo = intervalo de tiempo en minutos (opcional): 1 (por defecto), 5, 15, 30, 60, 240, 1440, 10080, 21600 since = devuelve datos OHLC comprometidos desde la identificación dada (opcional. exclusivo)
Resultado: vector de nombre de par y datos OHLC
<pair_name> = nombre del par vector de entradas formadas(<hora>, <apertura>, <máximo>, <mínimo>, <cierre>, <vwap>, <volumen>, <count>) last = identificación (id) para ser utilizado como desde cuando se sondeaban datos OHLC nuevos y comprometidos
Nota: la última entrada en el vector OHLC es para el intervalo actual, aun no comprometido y siempre estará presente, independientemente del valor de "since".
Obtener libro de órdenes
URL: https://api.kraken.com/0/public/Depth
Entrada:
pair = par de activos para obtener profundidad del mercado count = número máximo de ofertas/demandas (opcional)
Resultado: vector del nombre de par y profundidad del mercado
<pair_name> = nombre del par asks = vector lateral de ofertas de las entradas formadas(<precio>, <volumen>, <timestamp>) bids = vector lateral de demandas de las entradas formadas(<precio>, <volumen>, <timestamp>)
Obtener operaciones recientes
URL: https://api.kraken.com/0/public/Trades
Input:
pair = par de activos para obtener datos de operación since = devuelve datos de la operación desde la identificación dada (id) (opcional. exclusivo)
Result: vector de nombre de par y datos de operación recientes
<pair_name> = nombre del par vector de entradas formadas(<precio>, <volumen>, <hora>, <compra/venta>, <mercado/limite>, <varios>) last = identificación (id) para ser utilizada como desde cuando se sondeaban nuevos datos de difusión
Obtener datos de difusión recientes
URL: https://api.kraken.com/0/public/Spread
Entrada:
pair = par de activos para obtener los datos difundidos since = devuelve los datos difundidos desde la identificación dada (opcional. inclusivo)
Resultado: vector de nombre de par y datos de difusión recientes
<pair_name> = nombre del par vector de entradas formadas(<hora>, <demanda>, <oferta>) last = identificación (id) para ser utilizada como desde cuando se sondeaban nuevos datos de operaciones
Nota: "since" es inclusivo por lo que, cualquier dato devuelto con el mismo tiempo que el vector anterior, debe sobrescribir todas las entradas del vector anterior en ese momento
Datos privados del usuario
Obtener balance de la cuenta
URL: https://api.kraken.com/0/private/Balance
Resultado: vector de nombres de activos y balance de la cuenta
Obtener el balance para operar
URL: https://api.kraken.com/0/private/TradeBalance
Entrada:
aclass = clase del activo (opcional): divisa (por defecto) asset = activo base utilizado para determinar el balance (predeterminado = ZUSD)
Resultado: vector de la información del balance para operar
eb = balance equivalente (balance combinado de todas las divisas) tb = balance para operar (saldo combinado de todas las monedas de renta variable) m = cantidad del margen para las posiciones abiertas n = ganancia/pérdida neta no realizada de posiciones abiertas c = coste base de las posiciones abiertas v = valoración flotante actual de las posiciones abiertas e = capital = balance de operaciones + ganancia/pérdida neta no realizada mf = margen libre = capital - margen inicial (margen máximo disponible para abrir nuevas posiciones) ml = nivel de margen = (capital / margen inicial) * 100
Nota: Las tasas utilizadas para la valoración flotante son la media entre los mejores precios de oferta y demanda
Obtener órdenes abiertas
URL: https://api.kraken.com/0/private/OpenOrders
Entrada:
trades = incluir las operaciones o no en la salida (opcional. por defecto = falso) userref = restringir los resultados a la identificación (id) de referencia de usuario dada (opcional)
Resultado: vector de información de la orden en vector abierto con txid como clave
refid = identificación de la transacción de orden de referencia que creó esta orden userref = identificación (id) de referencia del usuario status = estado de la orden: pending = entrada de libro de órdenes pendiente open = orden abierta closed = orden cerrada canceled = orden cancelada expired = orden caducada opentm = marca de tiempo Unix de cuando se realizó la orden starttm = marca de tiempo Unix de la hora de inicio de la orden (o 0 si no está configurada) expiretm = marca de tiempo Unix de la hora de finalización de la orden (o 0 si no está configurada) descr = información de descripción de la orden pair = par de activos type = tipo de orden (compra/venta) ordertype = tipo de orden (Ver Añadir orden estándar) price = precio primario price2 = precio secundario leverage = cantidad de apalancamiento order = descripción de la orden close = descripción de orden de cierre condicional (si se establece cierre condicional) ol = volumen de la orden (divisa base a menos que viqc se establezca en oflags) vol_exec = volumen ejecutado (divisa base a menos que viqc se establezca en oflags) cost = coste total (divisa de cotización a menos que viqc se establezca en oflags) fee = tarifa total (divisa de cotización) price = precio promedio (divisa de cotización a menos que viqc se establezca en oflags) stopprice = stop precio (divisa de cotización, para stops finales) limitprice = precio límite activado (divisa de cotización, cuando se activa el tipo de orden basado en el límite) misc = lista delimitada por comas de información variada stopped = activado por precio stop touched = activado por precio de táctil liquidated = liquidación partial = llenado parcial oflags = lista delimitada por comas de indicadores de orden viqc = volumen en divisa de cotización fcib = tarifa preferida en la divisa base (por defecto si se vende) fciq = tarifa preferida en divisa de cotización (por defecto si compra) nompp = sin protección de precio de mercado trades = vector de identificaciones (ids) de operaciones relacionadas con la orden (si se solicita información de las operaciones y los datos disponibles)
Nota: A menos que se indique lo contrario, los costos, tarifas, precios y volúmenes están en la escala del par de activos, no en la escala de la divisa. Por ejemplo, si el par de activos usa un tamaño de lote que tiene una escala de 8, el volumen usará una escala de 8, incluso si la divisa que representa solo tiene una escala de 2. De manera similar, si la escala de precios del par de activos es 5, la escala permanecerá como 5, incluso si la divisa subyacente tiene una escala de 8.
Obtener órdenes cerradas
URL: https://api.kraken.com/0/private/ClosedOrders
Entrada:
trades = incluir o no operaciones en la salida (opcional. por defecto = falso) userref = restringir los resultados a la identificación de referencia de usuario dada (opcional) start = inicio de marca de tiempo Unix o la orden tx de la identificación de los resultados (opcional. exclusivo) end = fin de la marca de tiempo Unix o la orden tx de la identifación de los resultados (opcional. inclusivo) ofs = resultado offset closetime = que tiempo usar (opcional) open (apertura) close (cierre) both (ambos - por defecto)
Resultado: vector de información de la orden
closed = vector de información de la orden. Consulte Obtener órdenes abiertas. Campos Adicionales: closetm = marca de tiempo unix de cuando la orden fue cerrada reason = información adicional sobre el estado (si existe) count = cantidad de información de la orden disponible que coincide con los criterios
Nota: Los tiempos dados por las identificaciones (ids) tx de la orden son más precisos que las marcas de tiempo de Unix. Si se proporciona una identificación de tx de la orden para el tiempo, se utiliza el tiempo de apertura de la orden
Consultar información de las órdenes
URL: https://api.kraken.com/0/private/QueryOrders
Entrada:
trades = si se incluyen o no las operaciones en la salida (opcional. predeterminado = falso) userref = restringir los resultados a una identificación de referencia de usuario dada (opcional) txid = lista delimitada por comas con las identificaciones de transacción sobre la que que se desea consultar la información (50 como máximo)
Resultado: vector asociativo de la información de órdenes
<order_txid> = información de la orden. Consulte Obtener órdenes abiertas/Obtener órdenes cerradas
Obtener historial de operaciones
URL: https://api.kraken.com/0/private/TradesHistory
Entrada:
type = tipo de operación (opcional) all = todos los tipos (por defecto) any position = cualquier posición (abierta o cerrada) closed position = posiciones que han sido cerradas closing position = cualquier operación que cierre total o parcialmente de una posición no position = operaciones no posicionales trades = si se incluyen o no operaciones relacionadas con la posición en la salida (opcional. predeterminado = falso) start = inicio de la marca de tiempo Unix o la identificación de la operación tx de los resultados (opcional. exclusivo) end = fin de la marca de tiempo Unix o la identificación de la operación tx de los resultados (opcional. inclusivo) ofs = resultado offset
Resultado: vector de la información de la operación
trades = vector de la información la operación con txid como clave ordertxid = orden responsable de la ejecución de la operación pair = par de activos time = marca de tiempo Unix de la operación type = tipo de orden (compra/venta) ordertype = tipo de orden price = precio promedio sobre el que fue ejecutada la orden (divisa de cotización) cost = costo total de la orden (divisa de cotización) fee = tarifa total (divisa de cotización) vol = volumen (divisa base) margin = margen inicial (divisa de cotización) misc = lista delimitada por comas de información variada closing = la operación cierra todo o parte de una posición count = cantidad de información de las operaciones disponibles que coinciden con los criterios
Si la operación abrió una posición, los siguientes campos también están presentes en la información de la operación:
posstatus = estado de la posición (abierto/cerrado) cprice = precio promedio de la parte cerrada de la posición (divisa de cotización) ccost = costo total de la parte cerrada de la posición (divisa de cotización) cfee = tarifa total de la parte cerrada de la posición (divisa de cotización) cvol = tarifa total de la parte cerrada de la posición (divisa de cotización) cmargin = margen total liberado en la parte cerrada de la posición (divisa de cotización) net = ganancia/pérdida neta de la parte cerrada de la posición (divisa de cotización, escala de divisa de cotización) trades = lista de operaciones de cierre para la posición (si está disponible)
Nota:
- A menos que se indique lo contrario, los costes, tarifas, precios y volúmenes están en la escala del par de activos, no en la escala de la divisa.
- Los tiempos dados por las identificaciones (ids) de tx de las órdenes son más precisos que las marcas de tiempo de Unix.
Información de consultas de operaciones
URL: https://api.kraken.com/0/private/QueryTrades
Entrada:
txid = lista delimitada por comas de las identificaciones (ids) de la transacción para consultar información sobre (20 como máximo) trades = si se incluyen o no las operaciones relacionadas con la posición en la salida (opcional. predeterminado = falso)
Resultado: vector asociativo de información de operaciones
<trade_txid> = información de la operación. Consulte Obtener historial de transacciones
Obtener posiciones abiertas
URL: https://api.kraken.com/0/private/OpenPositions
Entrada:
txid = lista delimitada por comas de las identificaciones (ids) de transacción para restringir la salida docalcs = si se incluyen o no los cálculos de ganancias/pérdidas (opcional. predeterminado = falso) consolidation = en qué consolidar los datos de las posiciones (opcional). market = consolidará las posiciones basadas en el par del mercado
Resultado: vector asociativo con información de la posición abierta
Nota:
El uso del campo opcional de consolidación dará como resultado una vista consolidada de los datos que se devuelven.
<position_txid> = información de la posición abierta ordertxid = orden responsable de la ejecución de la operación pair = par de activos time = marca de tiempo unix para la operación type = tipo de orden utilizada para abrir la posición (compra/venta) ordertype = tipo de orden usado para abrir la posición cost = costo de apertura de la posición (divisa de cotización a menos que viqc se establezca en oflags) fee = tarifa de apertura de la posición (divisa de cotización) vol = volumen de la posición (divisa base a menos que viqc se establezca en oflags) vol_closed = volumen de posición cerrado (divisa base a menos que viqc establecido en oflags) margin = margen inicial (divisa de cotización) value = valor actual de la posición restante (si se solicita docalcs. divisa de cotización) net = ganancia/pérdida no realizada de la posición restante (si se solicita docalcs. divisa de cotización, escala de divisa de cotización) misc = lista delimitada por comas de información variada oflags = lista delimitada por comas de indicadores de orden viqc = volumen en divisa cotizada
Nota: a menos que se indique lo contrario, los costos, tarifas, precios y volúmenes se encuentran en la escala del par de activos, no en la escala de la divisa.
Obtener información de los libros mayores
URL: https://api.kraken.com/0/private/Ledgers
Entrada:
aclass = clase de activo (opcional): divisa (por defecto) asset = lista delimitada por comas de activos para restringir la salida a (opcional. predeterminado = todo) type = tipo de libro mayor a obtener (opcional): all (todo. por defecto) deposit (depósito) withdrawal (retiro) trade (operación) margin (margen) start = inicio de marca de tiempo de Unix o libro mayor con la identificación (id) de los resultados (opcional. exclusivo) end = fin de marca de tiempo de Unix o libro mayor con la identificación (id) de los resultados (opcional. inclusive) ofs = resultado offset
Resultado: vector asociativo con información de los libros mayores
<ledger_id> = información del libro mayor refid = identificación (id) de referencia time = marca de tiempo unix del libro mayor type = tipo de entrada de libro mayor aclass = clase de activo asset = activo amount = cantidad de la transacción fee = tarifa de transacción balance = balance resultante
Nota: los tiempos dados por los identificadores del libro mayor son más precisos que las marcas de tiempo Unix.
Consulta de libros mayores
URL: https://api.kraken.com/0/private/QueryLedgers
Entrada:
id = lista delimitada por comas de la identificación (id) del libro mayor para obtener información (20 como máximo)
Resultado: vector asociativo de información de los libros mayores
<ledger_id> = información del libro mayor. Consulte Obtenga información de los libros mayores
Obtener volumen de operaciones
URL: https://api.kraken.com/0/private/TradeVolume
Entrada:
pair = lista delimitada por comas de pares de activos para obtener información sobre tarifas (opcional) fee-info = si se incluye o no la información de la tarifa en los resultados (opcional)
Resultado: vector asociativo
currency = divisa de volumen volume = volumen de descuento actual fees = vector de pares de activos e información de nivel de tarifa (si se solicita) fee = tarifa actual en porcentaje minfee = tarifa mínima por par (si no es tarifa fija) maxfee = tarifa máxima por par (si no es tarifa fija) nextfee = tarifa del nivel siguiente del par (si no es tarifa fija. nil si está en el nivel de tarifa más bajo) nextvolume = nivel de volumen del nivel siguiente (si no es tarifa fija. nil si está en el nivel de tarifa más bajo) tiervolume = nivel de volumen del nivel actual (si no es una tarifa fija. nil si está en el nivel de tarifa más bajo) fees_maker = vector de pares de activos e información del nivel de tarifa maker (si se solicita) para cualquier par en el listado maker/taker fee = tarifa actual en porcentaje minfee = tarifa mínima por par (si no es tarifa fija) maxfee = tarifa máxima por par (si no es tarifa fija) nextfee = tarifa del siguiente nivel por par (si no es tarifa fija. nil si está en el nivel de tarifa más bajo) nextvolume = nivel de volumen del siguiente nivel (si no es tarifa fija. nil si está en el nivel de tarifa más bajo) tiervolume = nivel de volumen del nivel actual (si no es una tarifa fija. nil si está en el nivel de tarifa más bajo)
Nota: si un par de activos está en una lista de tarifas de maker/taker, el lado del taker se da en "fees" y el lado del maker en "fees_maker". Para pares que no están en maker/taker, sólo se darán en "fees".
Solicitar informe de exportación
URL: https://api.kraken.com/0/private/AddExport
Entrada:
description = información de descripción del reporte report = tipo de reporte (operaciones/libro mayor) format = (CSV/TSV) (opcional. por defecto = CSV) fields = lista delimitada por comas de los campos a incluir en el reporte (opcional. por defecto = todos) Nota: las opciones de campo se basan en el tipo de reporte <operaciones> ordertxid time ordertype price cost fee vol margin misc ledgers <libro mayor> refid time type aclass asset amount fee balance asset = lista delimitada por comas de los activos a los cuales se restringe la salida (opcional. por defecto = todos) starttm = hora de inicio del reporte (opcional. por defecto = un (1) año antes de hoy): <n> = marca de tiempo unix para la hora de inicio endtm = hora final del reporte (opcional. por defecto = ahora mismo): <n> = marca de tiempo unix para la hora final
Resultado:
id = identificación (id) del reporte
Errores: Los errores incluyen (pero no están limitados a ):
EGeneral: Argumentos inválidos EQuery: Par de activos desconocidos
Obtener estados de exportación
URL: https://api.kraken.com/0/private/ExportStatus
Entrada:
report = tipo de reporte (operaciones/libro mayor)
Resultado: vector de reportes y su información asociada
id = identificación de reporte descr = información de descripción del reporte format = (CSV/TSV) report = tipo de reporte (operaciones/libros mayores) status = estado de la solicitud: Queued = El reporte se ha puesto en cola para su creación Processing = el reporte está siendo procesado Processed = el reporte ha sido procesado createdtm = fecha de creación del reporte expiretm = fecha de vencimiento del reporte starttm = fecha de inicio del reporte endtm = fecha final del reporte completedtm = fecha en la que se completó el reporte aclass = clase de activo asset = lista delimitada por comas de los activos fields = lista delimitada por comas de los campos <Operaciones> txid ordertxid pair time type ordertype price cost fee vol margin misc ledgers <Libro mayor> txid refid time type aclass asset amount fee balance
Errores: Los errores incluyen (pero no se limitan a):
EGeneral: Argumentos inválidos
Obtener informe de exportación
URL: https://api.kraken.com/0/private/RetrieveExport
Entrada:
id = identificación de reporte
Resultado: archivo binario comprimido en formato zip que contiene el reporte
Nota: Si el tipo de contenido no es application/json, text, o html, el reporte binario será transmitido de nuevo. Si es uno de esos tipos puede encontrar un error en la respuesta.
Nota: Dependiendo del tipo de reporte y los campos elegidos, el reporte podría tener los siguientes campos. Los campos con un * siempre están presentes.
<operaciones> *txid ordertxid *pair time *type ordertype price cost fee vol margin misc ledgers <libro mayor> *txid refid time type aclass asset amount fee balance
Eliminar informe de exportación
URL: https://api.kraken.com/0/private/RemoveExport
Entrada:
type = Tipo de eliminación (cancelar/borrar) id = identificación del reporte
Resultado: booleano con resultado de llamada
cancel/delete = tipo de eliminación
Nota: El tipo de eliminación sólo puede usarse para un reporte que ya ha sido procesado mientras que cancelar se utiliza para estados en cola y procesando.
Errores: los errores incluyen (pero no se limitan a):
EGeneral:Argumentos inválidos WExport:Procesado previamente
Nota: En el caso de que ya se haya realizado una operación de cancelación o eliminación en una identificación de un reporte en particular, obtendrá el error WExport: Procesado previamente.
Trading de usuario privado
Añadir una orden estándar
URL: https://api.kraken.com/0/private/AddOrder
Entrada:
pair = par de activos type = tipo de orden (compra/venta) ordertype = tipo de orden: market limit (precio = precio límite) stop-loss (precio = precio de stop loss) take-profit (precio = precio de take profit) stop-loss-profit (precio = precio de stop loss, price2 = precio de take profit) stop-loss-profit-limit (precio = precio de activación de stop loss, price2 = precio de take profit) stop-loss-limit (precio = precio de activación de stop loss, price2 = precio límite activado) take-profit-limit (precio = precio de activación de take profit, price2 = precio límite activado) trailing-stop (precio = trailing stop offset) trailing-stop-limit (precio = trailing stop offset, price2 = límite de compensación activado) stop-loss-and-limit (precio = precio de stop loss, price2 = precio límite) settle-position price = precio (opcional. depende del tipo de orden) price2 = precio secundario (opcional. depende del tipo de orden) volume = volumen de orden en lotes leverage = cantidad de apalancamiento deseado (opcional. predeterminado = ninguno) oflags = lista delimitada por comas de indicadores de orden (opcional): viqc = volumen en divisa de cotización (no disponible para órdenes apalancadas) fcib = tarifa preferente en la divisa base fciq = tarifa preferente en la divisa cotizada nompp = sin protección de precios de mercado post = publicar solo la orden (disponible cuando ordertype = limit) starttm = hora de inicio programada (opcional): 0 = ahora (por defecto) + <n> = hora de inicio programada <n> segundos a partir de ahora <n> = marca de tiempo Unix de hora de inicio expiretm = hora de expiración (opcional): 0 = sin caducidad (por defecto) + <n> = expirar <n> segundos a partir de ahora <n> = marca de tiempo Unix de hora de expiración userref = identificación (id) de referencia del usuario. Número firmado de 32 bits. (Opcional) validate = validar solo las entradas, no enviar la orden (opcional) orden de cierre opcional para agregar al sistema cuando la orden se completa: close[ordertype] = tipo de orden close[price] = precio close[price2] = precio secundario
Resultado:
descr = información de descripción de la orden order = descripción de la orden close = descripción de la orden de cierre condicional (si es un vector de cierre condicional) txid = vector de identificaciones (ids) de transacción para las órdenes (si la orden se añadió correctamente)
Errores: los errores incluyen (pero no se limitan a):
EGeneral:Argumentos inválidos EService:No disponible ETrade:Solicitud inválida EOrder:No se puede abrir la posición EOrder:No se puede abrir la posición opuesta EOrder:Margen de tolerancia excedido EOrder:Nivel de margen demasiado bajo EOrder:Margen insuficiente (el exchange no tiene fondos suficientes para permitir operaciones con margen) EOrder:Fondos insuficientes (fondos de usuario insuficientes) EOrder:Orden mínima no cumplida (volumen demasiado bajo) EOrder:Límite de órdenes excedido EOrder:Límite de posiciones excedido EOrder:Límite de tasa excedido EOrder:Límite de órdenes programadas excedidas EOrder:Posición desconocida
Nota:
- Consulte Obtenga pares de activos de negociables para obtener especificaciones sobre precios, lotes y apalancamiento de pares de activos.
- Los precios pueden ir precedidos por +, -, o # para indicar el precio como una cantidad relativa (con la excepción de trailing stops, que son siempre relativas). + agrega la cantidad al precio actual ofrecido. - Resta la cantidad del precio actual ofrecido. # agregará o restará la cantidad al precio actual ofrecido, dependiendo del tipo y el tipo de orden utilizado. Los precios relativos pueden tener el sufijo con un % para indicar la cantidad relativa como un porcentaje del precio ofrecido.
- Para las órdenes que usan apalancamiento, se puede usar 0 para que el volumen se complete automáticamente hasta el volumen necesario para cerrar su posición.
- Si recibe el error "EOrder: Se requiere un acuerdo de trading", consulte la página de administración de la clave de la API para obtener más detalles.
Cancelar orden abierta
URL: https://api.kraken.com/0/private/CancelOrder
Entrada:
txid = identificación (id) de transacción
Resultado:
count = número de órdenes canceladas pending = si está configurado, la(s) orden(es) que tienen cancelación pendiente
Nota: txid puede ser una identificación (id) de referencia de usuario.
Depósitos y retiros de usuarios privados
NOTA:Esta es una API de depósitos y retiros provisional y puede actualizarse en el futuro. Por favor consulte la página principal de API para obtener más información sobre el uso de la API.
Obtener métodos de depósito
URL: https://api.kraken.com/0/private/DepositMethods
Entrada:
aclass = clase de activo (opcional): divisa (por defecto) asset = activo siendo depositado
Resultado: vector asociativo de métodos de depósito:
method = nombre del método de depósito limit = cantidad neta máxima que se puede depositar en este momento, o falso si no hay límite fee = cantidad de tarifas que se pagarán address-setup-fee = si el método tiene o no una tarifa de configuración de dirección (opcional)
Obtener direcciones de depósito
URL: https://api.kraken.com/0/private/DepositAddresses
Entrada:
aclass = clave de activo (opcional): divisa (por defecto) asset = activo siendo depositado method = nombre del método de depósito new = si generar o no una nueva dirección (opcional. por defecto = falso)
Resultado: vector asociativo de direcciones de depósito:
address = dirección de depósito expiretm = tiempo de expiración en la marca de tiempo de Unix, o 0 si no caduca new = si se ha utilizado alguna vez o no la dirección
Obtener estado de depósitos recientes
URL: https://api.kraken.com/0/private/DepositStatus
Entrada:
aclass = clave de activo (opcional): divisa (por defecto) asset = activo siendo depositado method = nombre del método de depósito
Resultado: vector de información de estado de depósito formado:
method = nombre del método de depósito utilizado aclass = clase de activo asset = código X-ISO4217-A3 del activo refid = identificación (id) de referencia txid = identificación (id) del método de transacción info = información de transacción del método amount = cantidad depositada fee = tarifas pagadas time = marca de tiempo de unix cuando se realizó la solicitud status = estado del depósito status-prop = propiedades de estado adicionales (si están disponibles) return = una transacción de devolución iniciada por Kraken onhold = el depósito está en espera pendiente de revisiónPara obtener información sobre el estado, consulte los estados de transacciones financieras de IFEX.
Obtener información de retiros
URL: https://api.kraken.com/0/private/WithdrawInfo
Entrada:
aclass = clave de activo (opcional): divisa (por defecto) asset = activo siendo retirado key = nombre de la clave de retiro, como está configurado en su cuenta amount = cantidad a retirar
Resultado: vector asociativo de información de retiro:
method = nombre del método de retiro que se usará limit = cantidad neta máxima que se puede retirar en este momento fee = cantidad de tarifas que se pagarán
Retirar fondos
URL: https://api.kraken.com/0/private/Withdraw
Entrada:
aclass = clave de activo (opcional): divisa (por defecto) asset = activo siendo retirado key = nombre de la clave de retiro, como está configurado en su cuenta amount = cantidad a retirar, incluyendo tarifas
Resultado: vector asociativo de transacciones de retiro:
refid = identificación (id) de referencia
Obtener el estado de los retiros recientes
URL: https://api.kraken.com/0/private/WithdrawStatus
Entrada:
aclass = clase de activo (opcional): divisa (por defecto) asset = activo siendo retirado method = nombre del método de retiro (opcional)
Resultado: vector de información del estado de retiro formado:
method = nombre del método de retiro utilizado aclass = clase de activo asset = código X-ISO4217-A3 del activo refid = identificación (id) de referencia txid = identificación (id) del método de transacción info = información del método de transacción amount = cantidad retirada fee = tarifas pagadas time = marca de tiempo de Unix cuando se realizó la solicitud status = estado del retiro status-prop = propiedades de estado adicionales (si están disponibles) cancel-pending = cancelación solicitada canceled = cancelada cancel-denied = cancelación solicitada pero fue denegada return = una transacción de devolución iniciada por Kraken; no se puede cancelar onhold = el retiro está en espera pendiente de revisiónPara obtener información sobre el estado, consulte los estados de transacciones financieras de IFEX.
Solicitar cancelación de retiro
URL: https://api.kraken.com/0/private/WithdrawCancel
Entrada:
aclass = clase de activo (opcional): divisa (por defecto) asset = activo siendo retirado refid = identificación (id) de referencia del retiro
Resultado: Cierto al tener éxito
Nota: No se puede garantizar la cancelación. Esto pondrá en una solicitud de cancelación. Dependiendo de qué tan avanzado esté el proceso de retiro puede que no sea posible cancelar el retiro.
Transferencia de monedero
URL: https://api.kraken.com/0/private/WalletTransfer
Entrada:
asset = activo siendo retirado to = a qué monedero se transfieren los fondos Monedero de Futuros (por defecto) from = desde qué monedero se transfieren los fondos Monedero Spot (por defecto) amount = cantidad a retirar, incluyendo tarifas
Resultado: vector asociativo de transacción de transferencia:
refid = identificación (id) de referencia
Autenticación de WebSockets
El cliente API debe solicitar un "token" de autenticación a través del siguiente punto final de la REST API "GetWebSocketsToken" para conectarse a los puntos finales privados de WebSockets. El token debe ser utilizado dentro de los 15 minutos posteriores a la creación. El token no expira una vez que se mantiene una conexión a un mensaje privado de la API de WebSockets (openOrders o ownTrades).
URL: https://api.kraken.com/0/private/GetWebSocketsToken
El token resultante se debe proporcionar en el campo "token" de cualquier nuevo feed de suscripción privada de WebSocket:
{ "event": "subscribe", "subscription": { "name": "ownTrades", "token": "secretwstoken123" } }
Por favor seleccione los permisos de 'Acceso a la API de WebSockets' mientras crea la clave API para generar el token de autenticación.
Clientes API de ejemplo
A continuación se muestran ejemplos de bibliotecas de código de cliente de API que se pueden usar al escribir su propio cliente de API. Tenga en cuenta que ni Payward y ni autores terceros son responsables de las pérdidas debidas a errores o al uso incorrecto de las API. Payward ha realizado una revisión inicial de la seguridad del código de terceros antes de enumerarlos, pero no puede responder por ningún cambio agregado desde entonces. Si tiene alguna duda, por favor contacte con nuestro equipo de soporte.
C
Ver proyecto externo https://github.com/hANSIc99/Kraken_C_API.
C#
Ver la autoría de terceros https://bitbucket.org/arrivets/krakenapi.
C++
Ver la autoría de terceros https://github.com/voidloop/krakenapi.
GO
Ver la autoría de terceros https://github.com/Beldur/kraken-go-api-client.
Node.JS
Ver la autoría de terceros https://github.com/nothingisdead/npm-kraken-api.
PERL
Ver la autoría de terceros http://search.cpan.org/~philippe/Finance-Bank-Kraken-0.1/.
Python 3
Ver la autoría de terceros https://github.com/veox/python3-krakenex.
Python 2
Ver la autoría de terceros https://github.com/veox/python2-krakenex.
Ruby
Ver la autoría de terceros https://github.com/jonatack/kraken_ruby_client.
PHP
El equipo de Kraken ha proporcionado una biblioteca de PHP básica para interactuar con la API REST de Kraken. Los ejemplos de fuentes y uso también están disponibles en el repositorio github kraken-api-client de Payward y tiene licencia MIT.
Libreria
Utilice esta clase de biblioteca para realizar llamadas a la API REST de Kraken con un cliente PHP. Determina automáticamente la ruta URL correcta del método API, genera un nonce para cada solicitud y añade un encabezado firmado utilizando su API secreta y el nonce generado.
<?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, $headers); $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; } }
Ejemplo de uso
A continuación se detallan los pasos necesarios para iniciar la clase de biblioteca KrakenAPI, así como una serie de llamadas a métodos de API de ejemplo. Los vectores de resultados formateados se muestran debajo de cada fragmento de llamada a la API correspondiente.
Inicialización
Incluya el archivo de la biblioteca y proporcione su clave API y su secreto al crear instancias de un objeto KrakenAPI.
<?php require_once 'KrakenAPIClient.php'; $kraken = new KrakenAPI('SU CLAVE API', 'SU SECRETO API');
Llamadas al método
Consulta una lista pública de activos y sus propiedades:
$res = $kraken->QueryPublic('Assets'); print_r($res);
Los activos devueltos están codificados por sus nombres ISO-4217-A3-X, ejemplo de salida:
Vector ( [error] => Vector ( ) [result] => Vector ( [XXBT] => Vector ( [aclass] => divisa [altname] => XBT [decimals] => 10 [display_decimals] => 5 ) [XLTC] => Vector ( [aclass] => divisa [altname] => LTC [decimals] => 10 [display_decimals] => 5 ) [XXRP] => Vector ( [aclass] => divisa [altname] => XRP [decimals] => 8 [display_decimals] => 5 ) [ZEUR] => Vector ( [aclass] => divisa [altname] => EUR [decimals] => 4 [display_decimals] => 2 ) ... )
Consulte la información del ticker público para el par XBT/USD:
$res = $kraken->QueryPublic('Ticker', array('pair' => 'XXBTZUSD')); print_r($res);
Ejemplo de salida:
Vector ( [error] => Vector ( ) [result] => Vector ( [XXBTZUSD] => Vector ( [a] => Vector ( [0] => 106.09583 [1] => 111 ) [b] => Vector ( [0] => 105.53966 [1] => 4 ) [c] => Vector ( [0] => 105.98984 [1] => 0.13910102 ) ... ) )
Consultar operaciones recientes públicas para el par XBT/EUR desde 2013-08-07T18:20:42+00:00:
NOTA: el parámetro 'since' está sujeto a cambios en el futuro: su precisión puede modificarse y ya no puede ser representativa de una marca de tiempo. La mejor práctica es basarlo en el valor 'last' devuelto en el conjunto de resultados.
$res = $kraken->QueryPublic('Trades', array('pair' => 'XXBTZEUR', 'since' => '137589964200000000')); print_r($res);
Ejemplo de salida:
Vector ( [error] => Vector ( ) [result] => Vector ( [XXBTZEUR] => Vector ( [0] => Vector ( [0] => 78.60500 [1] => 2.03990000 [2] => 1375897934.1176 [3] => s [4] => m [5] => ) [1] => Vector ( [0] => 79.41809 [1] => 2.02203000 [2] => 1375898123.0771 [3] => b [4] => m [5] => ) [2] => Vector ( [0] => 79.86999 [1] => 7.00000000 [2] => 1375898123.2587 [3] => b [4] => m [5] => ) ... ) [last] => 137589925237491170 ) )
Consultar balances de activos privados:
$res = $kraken->QueryPrivate('Balance'); print_r($res);
Ejemplo de salida:
Vector ( [error] => Vector ( ) [result] => Vector ( [ZUSD] => 3415.8014 [ZEUR] => 155.5649 [XXBT] => 149.9688412800 [XXRP] => 499889.51600000 ) )
Consulta de órdenes privadas abiertas y operaciones relacionadas incluidas:
$res = $kraken->QueryPrivate('OpenOrders', array('trades' => true)); print_r($res);
Ejemplo de salida:
Vector ( [error] => Vector ( ) [result] => Vector ( [open] => Vector ( [O7ICPO-F4CLJ-MVBLHC] => Vector ( [refid] => [userref] => [status] => abrir [opentm] => 1373750306.9819 [starttm] => 0 [expiretm] => 0 [descr] => Vector ( [order] => vender 3.00000000 XBTUSD @ límite 500.00000 ) [vol] => 3.00000000 [vol_exec] => 0.00000000 [cost] => 0.00000 [fee] => 0.00000 [price] => 0.00000 [misc] => [oflags] => ) ... ) ) )
Añadir una orden estándar: vender 1.123 XBT/USD @ límte $120
$res = $kraken->QueryPrivate('AddOrder', array( 'pair' => 'XXBTZUSD', 'type' => 'vender', 'ordertype' => 'límite', 'price' => '120', 'volume' => '1.123' )); print_r($res);
Ejemplo de salida:
Vector ( [error] => Vector ( ) [result] => Vector ( [descr] => Vector ( [order] => vender 1.12300000 XBTUSD @ límite 120.00000 ) [txid] => Vector ( [0] => OAVY7T-MV5VK-KHDF5X ) ) )
Agregue una orden estándar: compre XBT por un valor de 300€ en el mercado a las 2013-08-12T09:27:22+0000
$res = $kraken->QueryPrivate('AddOrder', array( 'pair' => 'XXBTZEUR', 'type' => 'comprar', 'ordertype' => 'market', 'oflags' => 'viqc', 'volume' => '300', 'starttm' => '1376299642' )); print_r($res);
Ejemplo de salida:
Vector ( [error] => Vector ( ) [result] => Vector ( [descr] => Vector ( [order] => comprar 300.00000000 XBTEUR @ market ) [txid] => Vector ( [0] => ONQN65-L2GNR-HWJLF5 ) ) )
Agregue una orden estándar: compre 2.12345678 XBTUSD @ límite $101.9901 con un apalancamiento de 2:1, con un seguimiento de stop loss, orden de venta take profit: stop loss en -5%, take profit tras un aumento de precio de $10 (los precios de stop/loss firmados se determinan automáticamente usando la notación #):
$res = $kraken->QueryPrivate('AddOrder', array( 'pair' => 'XXBTZUSD', 'type' => 'comprar', 'ordertype' => 'límite', 'price' => '101.9901', 'volume' => '2.12345678', 'leverage' => '2:1', 'close' => array( 'ordertype' => 'stop-loss-profit', 'price' => '#5%', // precio stop loss (porcentaje relativo delta) 'price2' => '#10' // precio take profit (relativo delta) ) )); print_r($res);
Ejemplo de salida:
Vector ( [error] => Vector ( ) [result] => Vector ( [descr] => Vector ( [order] => comprar 2.12345678 XBTUSD @ límite 101.99010 con 2:1 de apalancamiento [close] => cerrar posición @ stop loss -5.0000%, take profit +10.00000 ) [txid] => Vector ( [0] => OFMYYE-POAPQ-63IMWL ) ) )