Exempel på REST API-förfrågan med bash

Senast uppdaterad: 31 mars 2025

Introduktion

Att implementera ett Kraken REST API-gränssnitt med hjälp av Bourne Again shell (bash) och några associerade kommandon (openssl, base64, xxd, etc.) kan vara en bekväm och effektiv lösning för att interagera med Krakens marknader (även om det inte skulle vara den snabbaste implementeringen jämfört med kompilerad kod).

Bash och de nödvändiga kommandona är lätt tillgängliga (förinstallerade) på de flesta UNIX-, Linux- och macOS-system, och kan enkelt installeras på Windows och andra system, så all nödvändig programvara är tillgänglig utan att använda några ytterligare tredjeparts API-verktyg eller bibliotek.

Med hjälp av en enkel textredigerare (även en gammaldags redigerare som vi) och några rader kod är det möjligt att komma åt både offentlig marknadsdata och privat kontodata, samt att lägga/avbryta ordrar på Krakens marknader.

Exempelkod

Följande kod visar en bash-kodimplementering för att anropa REST API Balance-slutpunkten:

#!/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

och den matchande koden kan också laddas ner (som en kapi_bash.sh-fil).

Vidare användning/utveckling

För att hämta dina egna kontosaldon bör exempel-API-nyckeln ersättas med en API-nyckel från ditt eget Kraken-konto, och ytterligare API-slutpunkter kan aktiveras genom att helt enkelt ändra variabeln api_endpoint och variabeln api_post (vid behov).

Behöver du mer hjälp?