Exemplo de solicitação de API REST usando bash

Última atualização: 31 de mar. de 2025

Introdução

A implementação de uma interface API REST da Kraken usando o shell Bourne Again (bash) e alguns comandos associados (openssl, base64, xxd, etc.) pode ser uma solução conveniente e eficiente para interagir com os mercados da Kraken (embora não seja a implementação mais rápida em comparação com código compilado).

O Bash e os comandos necessários estão prontamente disponíveis (pré-instalados) na maioria dos sistemas UNIX, Linux e macOS, e podem ser facilmente instalados no Windows e em outros sistemas, de modo que todo o software necessário está disponível sem o uso de ferramentas ou bibliotecas de API de terceiros adicionais.

Usando um editor de texto simples (até mesmo um editor da velha guarda como o vi) e algumas linhas de código, é possível acessar dados de mercado públicos e dados de conta privados, e também fazer/cancelar ordens nos mercados da Kraken.

Exemplo de Código

O código a seguir mostra uma implementação de código bash para chamar o endpoint Balance da API REST:

#!/usr/bin/env bash

# API public/private keys copied from account management web site

api_key='gxTXpC4Ag/N0QPKlYnRhL1qVB2G/HZV1eB2drl7eOXga30dEKoB+EUMs'
api_private='62kRfRX7BI8G8T/jl7clnZ+vSfJt7YmQN23JQkJfHCE6oxecJX4fN4i2RitmRhyFzfJ4efKy2yCo4H068rfv0A=='

# API variables (URL, endpoint, nonce, etc.)

api_host='https://api.kraken.com'
api_endpoint='/0/private/Balance'
api_nonce=`date +%s`
api_post="nonce=$api_nonce"

# Authentication algorithm (SHA256 and HMAC SHA512)

api_private_hex=`echo -n $api_private base64 -d xxd -p tr -d "\n"`
echo -n $api_endpoint > kapi_bash.bin
echo -n $api_nonce$api_post openssl dgst -sha256 -binary >> kapi_bash.bin
api_sign=`cat kapi_bash.bin openssl dgst -binary -sha512 -mac HMAC -macopt hexkey:$api_private_hex base64`

# HTTP request (POST)

curl --header "API-Key: $api_key" --header "API-Sign: $api_sign" --data $api_post $api_host$api_endpoint

e o código correspondente também pode ser baixado (como um arquivo kapi_bash.sh).

Uso/Desenvolvimento Adicional

Para recuperar os saldos da sua própria conta, a chave de API de exemplo deve ser substituída por uma chave de API da sua própria conta Kraken, e endpoints de API adicionais podem ser ativados simplesmente modificando a variável api_endpoint e a variável api_post (se necessário).

Precisa de mais ajuda?