Eksempel på REST API-forespørsel ved hjelp av bash

Sist oppdatert: 31. mars 2025

Introduksjon

Implementering av et Kraken REST API-grensesnitt ved hjelp av Bourne Again shell (bash) og noen tilknyttede kommandoer (openssl, base64, xxd, osv.) kan være en praktisk og effektiv løsning for å samhandle med Krakens markeder (selv om det ikke ville være den raskeste implementeringen sammenlignet med kompilert kode).

Bash og de nødvendige kommandoene er lett tilgjengelige (forhåndsinstallert) på de fleste UNIX-, Linux- og macOS-systemer, og kan enkelt installeres på Windows og andre systemer, slik at all nødvendig programvare er tilgjengelig uten å bruke ytterligere tredjeparts API-verktøy eller -biblioteker.

Ved å bruke en enkel tekstredigerer (selv en gammeldags redigerer som vi) og noen få kodelinjer, er det mulig å få tilgang til både offentlige markedsdata og private kontodata, samt å plassere/kansellere ordrer på Krakens markeder.

Eksempelkoden

Følgende kode viser en bash-kodeimplementering for å kalle REST API Balance-endepunktet:

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

og den tilhørende koden kan også lastes ned (som en kapi_bash.sh-fil).

Videre bruk/utvikling

For å hente dine egne kontosaldoer, bør eksempel-API-nøkkelen erstattes med en API-nøkkel fra din egen Kraken-konto, og ytterligere API-endepunkter kan aktiveres ganske enkelt ved å endre api_endpoint-variabelen og api_post-variabelen (om nødvendig).

Trenger du mer hjelp?