FAQ da API Avançada

Última atualização: 25/11/2025

Utilizando os endpoints de financiamento da API REST, os clientes podem depositar/levantar fundos das suas contas 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 endpoints de financiamento devolverão um valor de estado diferente dependendo do momento em que são chamados.

Note 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 usados, 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 razões diversas).

Seguem-se alguns exemplos de como os valores de estado acima apareceriam nas respostas do 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 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 à sua validade (quaisquer restrições de financiamento na conta, etc.).

  • Pendente = O levantamento está à espera de ser processado pela nossa 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 razões diversas).

Seguem-se alguns exemplos de como os valores de estado acima apareceriam nas respostas do 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 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 endpoint OHLC da API REST 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 vendas históricos) através do endpoint Trades da API REST. 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 endpoint Trades aceita um parâmetro opcional chamado since, que especifica a data/hora de início dos dados. O valor since é um timestamp UNIX com resolução de nanossegundos (um timestamp UNIX padrão em segundos com 9 dígitos adicionais).

Por exemplo, uma chamada para o endpoint Trades como https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559347200000000000 devolveria o tempo e 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 ao endpoint 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.

Usar o valor especial since de 0 (zero) devolveria o tempo e 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 usado em vez do ID de ordem real (fornecido pela API) para algumas tarefas de gestão de ordens (nomeadamente o cancelamento de ordens).

As referências de utilizador são implementadas para serem o mais flexíveis possível e, portanto, podem ser usadas de várias maneiras 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 caso o ID de ordem real não seja 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 pode, 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 endpoint 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 endpoints 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 usando a referência de utilizador, chamando o endpoint CancelOrder e usando 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 que todas as ordens abertas com a mesma referência de utilizador seriam canceladas, sendo assim 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 user agent, ou usar um user agent não padrão; por favor, verifique os seus cabeçalhos de 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 fazer, 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 usando 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, oferecemos atualmente 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 Usando o Parâmetro de Teste de Validação

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

Chamar AddOrder/addOrder com o parâmetro de validação 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 de validação).

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 usando o Parâmetro de Validação, recomendamos colocar ordens de mercado muito pequenas (ordens para o tamanho mínimo da ordem), ou ordens limite que estejam muito longe do preço de mercado atual (colocar uma ordem limite para vender ETH/USD a $800 quando o preço de mercado é $200, por exemplo).

Testar usando ordens reais 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, recentemente descontinuámos 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 se deva ao uso de um destes padrões descontinuados. Terá de modificar o seu cliente API para forçar o uso de TLS 1.2/1.3 ou atualizar a sua versão do .NET para 4.6 ou superior, que usa TLS 1.2/1.3 como padrão.

A seguinte Folha de Cálculo Google pode ser usada 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 usada para verificar se o algoritmo de autenticação foi implementado corretamente, evitando assim potenciais problemas (nomeadamente erros inesperados de chave inválida) 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 chave API, endpoint API, valor nonce e dados de entrada 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 usar a calculadora de autenticação com uma chave API temporária e, em seguida, eliminar a chave API da sua conta assim que a sua implementação da assinatura de autenticação se mostrar correta.

Exemplo

Screenshot_2021-06-21_at_14.42.35.png

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

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

A lista de wrappers disponíveis pode ser encontrada aqui.

Precisa de mais ajuda?