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

Devido à crescente demanda, a verificação da conta poderá demorar. Evite enviar várias solicitações, e para melhores resultados, veja nossos Requisitos de documentação em primeiro lugar.
Buscar
Mensagens de erro da API

Introdução

A maioria das solicitações de API é concluída com êxito, mas às vezes as coisas dão errado e uma mensagem de erro é retornada em vez da resposta esperada.
Nossa API fornece uma variedade de mensagens de erro descritivas destinadas a informar o motivo do erro e oferecer sugestões para a solução apropriada. 
As mensagens de erro da API podem ser divididas em vários grupos diferentes (dependendo do tipo de erro, da causa subjacente e da solução ideal), mas o formato delas é consistente, conforme a seguir:
"Nível de gravidade""Categoria do erro":"Mensagem de erro"
O "Nível de gravidade" pode ser E para erro ou W para aviso. A "Categoria do erro" pode ser Geral, API, Consulta, Ordem, Negociação, Depósitos e retiradas ou Serviço. A "Mensagem de erro" pode ser qualquer string de texto que descreva o motivo do erro (como Argumentos inválidos).
Por exemplo, um erro indicando que um par de moedas inválido foi usado em uma consulta de ticker seria o seguinte:
EQuery:Par de ativos desconhecido
Observe que alguns softwares de terceiros (aplicativos móveis, bots de negociação etc.) optam por ocultar o erro da API original e apresentar um erro personalizado, portanto, um formato ou conteúdo de erro alternativo é possível, dependendo do software que está sendo usado.

Erros de uso geral

EGeneral:Permissão negada
Os erros de permissão negada são retornados quando o cliente da API está tentando uma tarefa para a qual a chave API não tem permissão. Por exemplo, se um cliente da API tentasse recuperar o saldo da conta usando uma chave API que foi configurada para permitir o acesso de negociação, mas não o acesso à gestão de contas, o erro de permissão negada seria retornado. Você pode revisar suas chaves API e suas configurações (como suas permissões) por meio da guia Configurações -> API da gestão de contas. Você precisaria certificar-se de que as chaves API usadas por seus aplicativos de terceiros tenham todas as configurações e permissões necessárias para seus aplicativos.
EAPI:Chave inválida
Esse erro é retornado quando a chave API usada para a chamada está expirada ou desativada. Revise a chave API na guia Configurações -> API da gestão de contas ou gere uma nova e atualize sua solicitação.
EQuery:Par de ativos desconhecido
Você pode obter a lista completa dos nossos pares de ativos da chamada pública AssetPairs e procurar o nome do par como a entrada dos cabeçalhos JSON ou pelo parâmetro "altname": https://api.kraken.com/0/public/AssetPairs
EGeneral:Argumentos inválidos
Esse erro é retornado quando um método é chamado sem os parâmetros necessários. Por exemplo, chamar o método QueryOrders sem especificar um parâmetro de ID de transação (txid) válido faria com que o erro de argumentos inválidos fosse retornado. Chamar um método com parâmetros desnecessários ainda não retornaria o erro de argumentos inválidos porque os parâmetros desnecessários seriam simplesmente ignorados.
EAPI:Assinatura inválida
Erros de assinatura inválida ocorrem se a chave API ou o segredo de API forem gravados incorretamente no programa ou porque os dados POST usados na autenticação e os dados POST enviados à API não coincidem.
Para referência adicional, o exemplo a seguir é o código Python para implementar o algoritmo de assinatura da API. A chave API pública apropriada deve ser copiada e colada da gestão de contas, e o método API e os dados POST devem ser atualizados adequadamente. O valor de saída pode ser usado diretamente como o valor do cabeçalho HTTP API-Sign.
#!/usr/bin/env python# Import required Python librariesimport timeimport base64import hashlibimport hmac# Decode API private key from base64 format displayed in account managementapi_secret = base64.b64decode("nmlrD83t1J+yVWKUBx9vD6j26C5zhC11tFfXpN+Ww+8oOVuGgse5AeADcvl95jYaD+UAi3D5CrVfFr8GfQ7zhA==")# Variables (API method, nonce, and POST data)api_path = "/0/private/TradeBalance"api_nonce = str(int(time.time()*1000))api_post = "nonce=" + api_nonce + "&asset=xxbt"# Cryptographic hash algorithmsapi_sha256 = hashlib.sha256(api_nonce + api_post).digest()api_hmac = hmac.new(api_secret, api_path + api_sha256, hashlib.sha512)# Encode signature into base64 format used in API-Sign valueapi_signature = base64.b64encode(api_hmac.digest())# API authentication signature for use in API-Sign HTTP headerprint(api_signature)
O SHA256 é calculado usando o próprio valor nonce e os dados POST para o método de API, e os DADOS POST são compostos pelos pares nome/valor para os parâmetros do método nonce (novamente) e API. Um exemplo dos dados que devem ser passados para o SHA256 para o método TradeBalance seria o seguinte:
SHA256 = SHA256 of "1541933977000nonce=1541933977000&asset=xxbt"
O valor da string que é passado para o SHA256 não deve conter nenhum valor nulo adicional (\0) e o valor da string não deve ser codificado como base64 ou hex (ou seja, o valor da string deve ser uma string de texto simples).
O caminho de URI é a URL inteira do método API, exceto para o prefixo "https://api.kraken.com", de modo que o caminho de URI do método TradeBalance (por exemplo) seria o valor de string "/0/private/TradeBalance" sem nenhum valor nulo adicional.
O HMAC SHA512 é calculado usando o caminho de URI e o digest SHA256 previamente calculado, com a chave API privada decodificada base64 como a chave HMAC. Um exemplo dos dados que devem ser passados para o HMAC seria o seguinte:
HMAC SHA512 usando a chave privada decodificada base64 = HMAC de "/0/private/TradeBalanceSHA256"
Os cabeçalhos HTTP API-Sign e API-Key são os únicos dois cabeçalhos HTTP personalizados necessários. O cabeçalho API-Key é uma duplicata exata da chave API pública da gestão de contas. O cabeçalho API-Sign é o digest HMAC SHA512 codificado usando base64.
EAPI:Nonce inválido
ESession:Sessão inválida
Erros de sessão inválida são retornados por meio da API WebSocket, quando é feita uma tentativa de assinar um feed autenticado (privado) usando um token de autenticação que não é mais válido (que já expirou, por exemplo).
A solução é simplesmente solicitar um novo token de autenticação por meio do endpoint GetWebSocketsToken da REST API, e usar o novo token para todas as solicitações de assinatura autenticadas subsequentes (privadas).

Erros de limite de taxa

EAPI:Limite de taxa excedido
EOrder:Limite de taxa excedido
Embora a adição e o cancelamento de ordens não sejam contabilizados em relação aos nossos limites de contador de API padrão, essas operações têm seu próprio contador de adição e cancelamento de ordens. Este contador funciona de forma que, quanto mais tempo as ordens forem deixadas no livro de ofertas, mais ordens os clientes serão capazes de adicionar ou cancelar.
EGeneral:Bloqueio temporário
Mensagens de erro de bloqueio temporário podem ocorrer se você tiver muitas chamadas de API com falha ou muitos erros de nonce inválidos em um curto período de tempo ou assinaturas inválidas. Embora essas chamadas retornem um erro, esse erro ainda conta em seus limites de API e pode resultar em um bloqueio temporário.
Os bloqueios temporários duram aproximadamente 15 minutos. Depois de receber o erro de bloqueio temporário, aguarde 15 minutos antes de enviar novas solicitações de API. Se você estiver acionando vários erros de nonce inválidos, aumente a janela nonce, pois isso pode ajudar a reduzir a frequência com que esses erros ocorrerão. Tente também reduzir a frequência de suas chamadas de API privadas.

Erros de negociação

EOrder:Não é possível abrir a posição
A abertura de novas posições spot na margem foi temporariamente suspensa para a manutenção do mecanismo de negociação. O recurso voltará em breve e você poderá acompanhar as atualizações no site status.kraken.com.
Outros motivos podem ser que as posições spot na margem não estejam disponíveis atualmente para clientes que residem em determinados países.
EOrder:Não é possível abrir uma posição oposta
Na Kraken, não é possível abrir uma posição long e short para o mesmo par.
Se desejar abrir uma posição long e short para a mesma moeda, escolha pares de negociação diferentes com a mesma moeda que a moeda base ou a moeda de cotação. Exemplo: short de XBT/USD, long de XBT/EUR.
EOrder:Permissão de margem excedida
Esse erro ocorre quando você excedeu os limites de permissão de margem para o seu nível de verificação atual. Os limites de permissão de margem para cada moeda variam com base no seu nível de verificação atual.
EOrder:Margem insuficiente
Temos fundos limitados disponíveis para extensões de margem. A mensagem "margem insuficiente" indica que estamos sem fundos no pool de margem aplicável para o momento. Isso pode mudar a qualquer momento. Você pode conseguir realizar sua ordem com sucesso apenas segundos ou minutos depois, mas ordens de alto volume e ordens feitas durante momentos de alto volume podem levar mais tempo. Pedimos desculpas por qualquer inconveniente.
EOrder:Fundos insuficientes (fundos de usuário insuficientes)
Você não tem os fundos disponíveis para realizar esta ordem. Revise suas posições e ordens em aberto para itens que possam estar retendo seus fundos.
EOrder:Ordem mínima não atingida (volume muito baixo)
Você não atendeu ao volume mínimo de ordens para este ativo.
EOrder:Limite de ordens excedido
Você excedeu a quantidade máxima de ordens em aberto disponíveis para sua conta.
Esses limites são baseados no seu nível de verificação. Feche algumas das suas ordens em aberto ou verifique sua conta para um nível mais alto.
EOrder:Limite de posições excedido
Você excedeu a quantidade máxima de posições em aberto disponíveis para sua conta.
Esses limites são baseados no seu nível de verificação. Feche ou liquide algumas ou todas as suas posições em aberto ou verifique sua conta para um nível mais alto, se possível.

Erros de status do serviço

EService:Indisponível ou eService:Ocupado
Os erros de serviço que você está enfrentando devem ser apenas temporários. Você pode reenviar suas solicitações se houver falha. Monitoraremos os problemas e atualizaremos nossa página: https://status.kraken.com/

Erros internos

EGeneral:Erro interno
Quando estamos enfrentando problemas de degradação da API, eles podem se traduzir em problemas para a Kraken e para a cryptowat.ch na forma de mensagens de serviço indisponível, erros 8XX em cryptowat.ch e interrupções no site.
ETrade:Bloqueado
Esse problema está relacionado à segurança da sua conta, que pode ter sido comprometida. Altere sua senha e autenticação de dois fatores e entre em contato com nossa central de suporte.
EAPI:Recurso desativado
Esse erro ocorre quando um parâmetro de referência ou de entrada é desativado de forma temporária ou permanente. O erro deve vir de uma das entradas passadas. Entre em contato com nosso suporte, enviando um registro com as informações completas usadas para a chamada que gerou o erro.

Erros do Cloudflare

Códigos de status HTTP 5xx e 10xx
Esses erros 5xx e 10xx não são, na verdade, erros da API, mas sim erros de servidor Web do Cloudflare. Os erros da API são sempre retornados no formato JSON como "erro":["ErrorType:ErrorMessage"], portanto, sempre que um erro em um formato diferente for recebido (como um código de status HTTP de 520, 504, 502, 1020 etc.), a solução provisória será tentar a chamada da API novamente logo em seguida, o que deve fazer com que a chamada seja bem-sucedida.
Um efeito colateral desse problema é que uma ordem pode ser realizada com sucesso, mesmo que um erro 5xx ou 10xx seja retornado em vez da resposta esperada. Isso é possível porque, às vezes, o Cloudflare apresenta o erro após a chamada para a API ter sido tratada, e portanto, bem-sucedida, mas retornar os resultados via Cloudflare não teve o mesmo êxito.
Uma solução para esse efeito colateral é usar referências de usuário (o parâmetro userref) para todas as ordens. Ao realizar cada ordem com uma referência de usuário exclusiva, o método OpenOrders pode ser usado para confirmar se a ordem foi realizada com sucesso ou não, determinando, assim, se precisa ser feita novamente ou não.
Por exemplo, se uma chamada para o método AddOrder para uma ordem limite incluir o parâmetro "userref=12345678", uma chamada subsequente para o método OpenOrders usando o parâmetro "userref=12345678" retornaria as informações da ordem (incluindo o ID) para ordens feitas com sucesso, mas não retornaria nenhuma informação (como somente "resultado":"aberto":) das ordens com falha.