FAQ da API Avançada

Última atualização: 25 de novembro de 2025

Utilizando os pontos de extremidade de financiamento da REST API, os clientes podem depositar/levantar fundos para/da sua conta Kraken e solicitar o estado em tempo real de uma transação de depósito/levantamento.

Os depósitos/levantamentos passam por várias fases entre o pedido inicial e a conclusão da transação, pelo que os pontos de extremidade de financiamento devolverão um valor de estado diferente, dependendo do momento em que são chamados.

Note-se que os valores de estado vieram originalmente das páginas 16/17 do documento Internet Financial Exchange Protocol (IFEX), mas os valores foram ligeiramente modificados para serem mais adequados para transações de cripto (nem todos os valores de estado possíveis são utilizados, por exemplo).

Depósitos

Os possíveis valores de estado para transações de depósito são os seguintes:

  • Liquidado = O depósito foi recebido, mas ainda necessita de confirmações adicionais na blockchain.

  • Sucesso = O depósito atingiu o número necessário de confirmações na blockchain.

  • Falha = O depósito falhou (por uma ou mais de várias razões).

Seguem-se alguns exemplos de como os valores de estado acima apareceriam nas respostas do ponto de extremidade 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 Sucesso:{"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"}]}

Levantamentos

Os possíveis valores de estado para transações de levantamento são os seguintes:

  • Inicial = O pedido de levantamento foi recebido e está a ser verificado quanto à validade (quaisquer restrições de financiamento na conta, etc.).

  • Pendente = O levantamento está à espera de ser processado pelo nosso gateway de financiamento.

  • Liquidado = O levantamento foi enviado para a blockchain (neste ponto, o ID da transação da blockchain ficaria disponível).

  • Sucesso = A transação de levantamento tem pelo menos 1 confirmação na blockchain.

  • Em espera = O levantamento foi retido e tem de ser verificado manualmente pela nossa equipa de financiamento.

  • Falha = O levantamento falhou (por uma ou mais de várias razões).

Seguem-se alguns exemplos de como os valores de estado acima apareceriam nas respostas do ponto de extremidade 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 Pendente:{"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 Sucesso:{"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 Falha:{"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"}]}

Informações adicionais sobre depósitos/levantamentos estão disponíveis nas nossas páginas de suporte de financiamento em dinheiro e financiamento em criptomoedas.

O ponto de extremidade OHLC da REST API fornece apenas uma quantidade limitada de dados históricos, especificamente 720 pontos de dados do intervalo solicitado. Por exemplo, solicitar dados OHLC em intervalos de 1 minuto devolverá os 720 minutos mais recentes (12 horas) de dados.

Para aplicações que requerem dados OHLC ou de tick adicionais, é possível recuperar todo o histórico de negociação dos nossos mercados (o tempo e as vendas históricos) através do ponto de extremidade Trades da REST API. O OHLC para qualquer período de tempo e qualquer intervalo pode então ser criado a partir dos dados históricos de tempo e vendas.

O ponto de extremidade Trades aceita um parâmetro opcional chamado since, que especifica a data/hora de início dos dados. O valor since é um carimbo de data/hora UNIX com resolução de nanossegundos (um carimbo de data/hora UNIX padrão em segundos com 9 dígitos adicionais).

Por exemplo, uma chamada para o ponto de extremidade Trades, como https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559347200000000000 devolveria o tempo e as vendas históricos para XBT/USD a partir de 1 de junho de 2019 às 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"}}

Chamadas subsequentes para o ponto de extremidade Trades devem substituir o valor do parâmetro since pelo valor do parâmetro last dos resultados da chamada anterior, como https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559350785297011117.

Utilizar o valor especial since de 0 (zero) devolveria o tempo e as vendas históricos desde o início do mercado (começando com a primeira negociação).

Uma referência de utilizador é um ID de ordem fornecido pelo cliente que pode ser utilizado em vez do ID de ordem real (fornecido pela API) para algumas tarefas de gestão de ordens (notavelmente o cancelamento de ordens).

As referências de utilizador são implementadas para serem o mais flexíveis possível e, portanto, podem ser utilizadas de várias formas diferentes, incluindo:

  • como um ID único (onde cada ordem tem uma referência de utilizador diferente),

  • para agrupar ordens relacionadas (como agrupar ordens com diferentes níveis de alavancagem),

  • ou como um ID de backup no caso de o ID de ordem real não ser conhecido.

Uma referência de utilizador deve ser um valor numérico entre 1 e 2.147.483.647 (essencialmente qualquer número positivo de 32 bits), e poderia, portanto, ser implementada como um contador simples, como um valor aleatório assinado de 32 bits, ou mesmo como um carimbo de data/hora em segundos (embora isso falhasse após 19 de janeiro de 2038 às 3:14:07 UTC).

Colocar ordens com uma referência de utilizador

As ordens podem ser colocadas com uma referência de utilizador anexada, chamando o ponto de extremidade AddOrder e incluindo o parâmetro userref com a referência de utilizador 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"]}}

Visualizar ordens que têm uma referência de utilizador

As ordens que já têm uma referência de utilizador anexada podem ser visualizadas chamando os pontos de extremidade Open/Closed/QueryOrders e incluindo o parâmetro userref com a referência de utilizador existente como valor (neste caso, a referência de utilizador atua como um filtro, exibindo apenas as ordens associadas):

$ ./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 ordens que têm uma referência de utilizador

As ordens que já têm uma referência de utilizador anexada podem ser canceladas utilizando a referência de utilizador, chamando o ponto de extremidade CancelOrder e utilizando a referência de utilizador como o valor txid (em vez do valor do ID da ordem):

$ ./krakenapi CancelOrder txid=16764529

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

Note-se que todas as ordens abertas com a mesma referência de utilizador seriam canceladas, pelo que é possível fazer uma única chamada CancelOrder para cancelar várias ordens simultaneamente (conforme indicado pelo valor count de 3 na seguinte resposta):

$ ./krakenapi CancelOrder txid=48695624

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

Este problema pode estar relacionado com o Cloudflare:

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

NOTA: A Kraken tem o "Browser Integrity Check" ativado.

Isto pode ocorrer se o seu pedido contiver cabeçalhos suspeitos. Por exemplo, o seu pedido pode estar a faltar um agente de utilizador, ou usar um agente de utilizador não padrão; por favor, verifique os cabeçalhos do seu pedido.

Se não conseguir criar quaisquer pedidos padrão que o nosso sistema permita, envie-nos uma cópia completa do(s) pedido(s) que está a tentar, incluindo o seu endereço IP e todos os cabeçalhos. Esta informação permitir-nos-ia investigar mais a fundo.

API de Futuros

Para as nossas APIs REST e WebSocket de Futuros (futures.kraken.com), oferecemos um ambiente de teste completo utilizando o URL da API demo-futures.kraken.com.

Ambientes de Teste REST, WebSocket e FIX

Para a nossa API REST/WebSocket spot e API FIX, atualmente oferecemos um ambiente de teste para clientes qualificados. O acesso a este ambiente requer um processo de integração que pode ser iniciado contactando diretamente a equipa da API.

Testar a nossa API utilizando o parâmetro de teste Validate

Ao colocar uma ordem através dos endpoints AddOrder da API REST ou addOrder da API WebSocket, o parâmetro de entrada validate pode ser utilizado para simular a ordem.

Chamar AddOrder/addOrder com o parâmetro validate definido como verdadeiro (validate=1, validate=true, validate=anything, etc.) fará com que os detalhes da ordem sejam verificados quanto a erros, mas a resposta da API nunca incluirá um ID de ordem (que seria sempre devolvido para uma ordem bem-sucedida sem o parâmetro validate).

Exemplo de chamada AddOrder com o parâmetro validate (note o ID de ordem em falta):

bash

Bash

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

Ordens reais pequenas e/ou ordens com preços extremos

Para um teste abrangente da API utilizando o Parâmetro Validate, recomendamos colocar ordens de mercado muito pequenas (ordens para o tamanho mínimo da ordem), ou ordens limite com preços muito distantes do preço de mercado atual (por exemplo, colocar uma ordem limite para vender ETH/USD a 800 $ quando o preço de mercado é 200 $).

Testar utilizando ordens em tempo real permite que o seu código API interaja com a nossa API em condições reais, pelo que todos os aspetos do teste serão precisos (como as suas ordens afetam o livro de ordens, etc.).

Por razões de segurança, descontinuámos recentemente o suporte para TLS 1.0 e 1.1. Se estiver a encontrar mensagens de erro de ligação SSL/TLS ao tentar ligar-se à nossa API, é provável que seja devido à utilização de um destes padrões descontinuados. Terá de modificar o seu cliente API para forçar a utilização de TLS 1.2/1.3 ou atualizar a sua versão do .NET para 4.6 ou superior, que utiliza TLS 1.2/1.3 como padrão.

A seguinte Folha de Cálculo Google pode ser utilizada para calcular a assinatura de autenticação da API REST para qualquer combinação de dados de entrada:

  • Chave privada (secreta) da API

  • Endpoint da API (Balance, TradeBalance, QueryOrders, etc.)

  • Valor nonce (consulte a nossa página de suporte o que é um nonce para mais detalhes)

  • Parâmetros de entrada do endpoint (asset=doge, por exemplo)

A calculadora pode ser utilizada para verificar se o algoritmo de autenticação foi corretamente implementado, evitando assim potenciais problemas (nomeadamente erros inesperados de invalid key) mais tarde no ciclo de desenvolvimento.

Instruções de utilização

  1. 1

    Abra a calculadora de autenticação da API REST no Chrome (ou em qualquer outro navegador web recente)

  2. 2

    Faça uma cópia da calculadora para o seu Google Drive através do menu Ficheiro -> Fazer uma cópia (terá de iniciar sessão na sua conta Google para este passo)

  3. 3

    Edite os campos API key, API endpoint, nonce value e input data com a sua própria chave API e detalhes do pedido

  4. 4

    Compare a assinatura de autenticação da API calculada com o valor calculado pelo seu próprio código API (os dois valores devem corresponder exatamente)

Por razões de segurança, recomendamos utilizar a calculadora de autenticação com uma chave API temporária, e depois eliminar a chave API da sua conta assim que a sua implementação da assinatura de autenticação se mostre correta.

Exemplo

Screenshot_2021-06-21_at_14.42.35.png

O principal benefício de utilizar os nossos wrappers de biblioteca de cliente é que não precisa de gastar tempo/esforço a reinventar a roda para criar assinaturas API, pois já está feito para si.

Se apenas pretende fazer chamadas para métodos públicos, então pode optar por não utilizar bibliotecas de cliente, uma vez que não é necessária autenticação.

A lista de wrappers disponíveis pode encontrar aqui.

Precisa de mais ajuda?