All
Filtrer efter:
Hvordan indbetaler jeg kontanter på min konto?
Jeg har brug for hjælp til kontoverificering
Hvorfor kan jeg ikke få adgang til min konto?
Er der gebyrer for kryptoudbetaling?
Jeg har brug for hjælp til at logge ind på min konto
REST API kommandolinjeklienten i NodeJS giver fuld adgang til Kraken REST API via kommandolinjen (såsom Terminal på macOS), og derfor kræves der ingen programmeringskendskab eller API-erfaring.
Alle REST API-funktioner er tilgængelige, herunder:
offentlige markedsdata-endpoints
private endpoints til kontostyring
trading-endpoints
private finansierings-endpoints
private staking-endpoints*
Kommandolinjeklienten kan bruges som en selvstændig API-klient, eller den kan kaldes fra andre programmer (såsom andre fortolkede sprog som Bash-scripts eller kompilerede sprog som C/C++).
1. Installer NodeJS (om nødvendigt).
macOS og Linux har sandsynligvis allerede NodeJS installeret.
Windows har sandsynligvis ikke NodeJS installeret, men det kan installeres fra https://www.nodejs.org/.
2. Download og gem krakenapi.js filen på din computer i den mappe (directory), du vælger. For eksempel:
Macintosh HD > Users > Satoshi > KrakenAPI
3. Åbn en kommandoprompt (såsom macOS' Terminal), og naviger til den mappe (directory), der blev valgt i det forrige trin.
Du kan bruge kommandoen "cd" (change directory) til at navigere. For eksempel:
cd /Users/Satoshi/KrakenAPI
4. Tilføj dine API-nøgler til den samme mappe, hvor du opbevarer krakenapi.js filen.
Kopiér/indsæt din offentlige API-nøgle fra kontostyring i en almindelig tekstfil kaldet "API_PUBLIC_KEY".
Kopiér/indsæt din private (hemmelige) API-nøgle i en almindelig tekstfil kaldet "API_PRIVATE_KEY".
En API-nøgle er kun nødvendig, hvis du planlægger at bruge de private API-endpoints til at få adgang til din Kraken-konto (såsom saldoforespørgsler, afgivelse/annullering af ordrer, eksport af kontohistorik osv.).
Se Hvordan genererer man et API-nøglepar? for yderligere instruktioner.
Brugen af REST API kommandolinjeklienten er som følger:
Bash
nodejs krakenapi.js endpoint [parameters]
The command line client supports all of the REST API endpoints. Here are a few example commands:
nodejs krakenapi.js Time
nodejs krakenapi.js Ticker pair=xbtusd
nodejs krakenapi.js Trades pair=etheur since=1574067140000000000
nodejs krakenapi.js Balance
nodejs krakenapi.js TradeBalance asset=xbt
nodejs krakenapi.js QueryOrders txid=O7MN22-ZCX7J-TGLQHD
nodejs krakenapi.js AddOrder pair=xbtusd type=buy ordertype=limit price=6500 volume=0.002 leverage=5
nodejs krakenapi.js CancelOrder txid=O7MN22-ZCX7J-TGLQHDBash
const axios = require("axios");
const { clear } = require("console");
const crypto = require("crypto");
const fs = require("fs");
const main = async () => {
let response = "";
let apiMethod = "";
let inputParameters = "";
const api_private = [
"Balance",
"BalanceEx",
"TradeBalance",
"OpenOrders",
"ClosedOrders",
"QueryOrders",
"TradesHistory",
"QueryTrades",
"OpenPositions",
"Ledgers",
"QueryLedgers",
"TradeVolume",
"AddExport",
"ExportStatus",
"RetrieveExport",
"RemoveExport",
"GetWebSocketsToken",
"AddOrder",
"AddOrderBatch",
"EditOrder",
"CancelOrder",
"CancelAll",
"CancelAllOrdersAfter",
"DepositMethods",
"DepositAddresses",
"DepositStatus",
"WithdrawInfo",
"Withdraw",
"WithdrawStatus",
"WithdrawCancel",
"WalletTransfer",
"Staking/Assets",
"Stake",
"Unstake",
"Staking/Pending",
"Staking/Transactions",
];
const api_public = [
"Time",
"Assets",
"AssetPairs",
"Ticker",
"OHLC",
"Depth",
"Trades",
"Spread",
"SystemStatus",
];
// Destructuring the input command
if (process.argv.length < 3) {
apiMethod = "Time";
} else if (process.argv.length == 3) {
apiMethod = process.argv[2];
} else {
apiMethod = process.argv[2];
for (count = 3; count < process.argv.length; count++) {
if (count == 3) {
inputParameters = process.argv[count];
} else {
inputParameters = inputParameters + "&" + process.argv[count];
}
}
}
// Condition to check the private or public endpoints
if (api_private.includes(apiMethod)) {
response = await QueryPrivateEndpoint(apiMethod, inputParameters);
if (apiMethod == "RetrieveExport") {
try {
fs.writeFileSync("Report.zip", response); // write the zip file response
console.log("Report.zip file successfully received");
} catch (err) {
console.log(err);
}
} else {
console.log(response.toString());
}
} else if (api_public.includes(apiMethod)) {
response = await QueryPublicEndpoint(apiMethod, inputParameters);
console.log(JSON.stringify(response));
} else {
console.log("Usage: app method [parameters]");
console.log("Example: app OHLC pair=xbtusd interval=1440");
}
};
// Public API Endpoint
async function QueryPublicEndpoint(endPointName, inputParameters) {
let jsonData;
const baseDomain = "https://api.kraken.com";
const publicPath = "/0/public/";
const apiEndpointFullURL = baseDomain + publicPath + endPointName + "?" + inputParameters;
await axios
.get(apiEndpointFullURL)
.then((res) => {
jsonData = res;
})
.catch((err) => {
jsonData = err;
});
return jsonData.data;
}
// Private API Endpoint
async function QueryPrivateEndpoint(endPointName, inputParameters) {
const baseDomain = "https://api.kraken.com";
const privatePath = "/0/private/";
const apiPublicKey = fs.readFileSync("API_PUBLIC_KEY").toString().trim(); // get data from API_PUBLIC_KEY text file
const apiPrivateKey = fs.readFileSync("API_PRIVATE_KEY").toString().trim(); // get data from API_PRIVATE_KEY text file
const apiEndpointFullURL = baseDomain + privatePath + endPointName;
const nonce = Date.now().toString();
const apiPostBodyData = "nonce=" + nonce + "&" + inputParameters;
const signature = CreateAuthenticationSignature(
apiPrivateKey,
privatePath,
endPointName,
nonce,
apiPostBodyData
);
const httpOptions = {
headers: { "API-Key": apiPublicKey, "API-Sign": signature },
responseType: "arraybuffer",
};
let jsonData;
await axios
.post(apiEndpointFullURL, apiPostBodyData, httpOptions)
.then((res) => {
jsonData = res;
})
.catch((err) => {
jsonData = err;
});
return jsonData.data;
}
// Authentication algorithm
function CreateAuthenticationSignature(
apiPrivateKey,
apiPath,
endPointName,
nonce,
apiPostBodyData
) {
const apiPost = nonce + apiPostBodyData;
const secret = Buffer.from(apiPrivateKey, "base64");
const sha256 = crypto.createHash("sha256");
const hash256 = sha256.update(apiPost).digest("binary");
const hmac512 = crypto.createHmac("sha512", secret);
const signatureString = hmac512
.update(apiPath + endPointName + hash256, "binary")
.digest("base64");
return signatureString;
}
main();*En oversigt over berettigelseskriterier (herunder geografiske begrænsninger) for staking kan findes her.