API-felmeddelanden

Senast uppdaterad: 8 augusti 2025

Introduktion

De flesta API-förfrågningar slutförs framgångsrikt, men ibland går något fel och ett felmeddelande returneras istället för det förväntade svaret.

Vårt API tillhandahåller en mängd beskrivande felmeddelanden som är avsedda att förklara orsaken till felet och ge förslag på lämplig lösning.

API-felmeddelanden kan delas in i flera olika grupper (beroende på feltyp, den underliggande orsaken och den optimala lösningen), men formatet för API-felmeddelandena är konsekvent och ser ut som följer:

"Severity Level""Error Category":"Error Message"

"Severity Level" kan vara antingen E för ett fel eller W för en varning. "Error Category" kan vara en av General, API, Query, Order, Trade, Funding eller Service. "Error Message" kan vara vilken textsträng som helst som beskriver orsaken till felet (som Invalid arguments).

Till exempel skulle ett fel som indikerar att ett ogiltigt valutapar har använts i en ticker-förfrågan se ut som följer:

EQuery:Unknown asset pair

Observera att viss tredjepartsprogramvara (mobilappar, handelsrobotar etc.) väljer att dölja det ursprungliga API-felet och presentera ett anpassat fel istället, varför ett alternativt felformat eller innehåll är möjligt beroende på vilken programvara som används.

  • Allmänna användningsfel

  • Fel vid hastighetsbegränsning

  • Handelsfel (placering/annullering av order)

  • Finansieringsfel (insättning/uttag)

  • Fel i tjänstens status

  • Interna fel

  • Cloudflare-fel (nätverk)

Allmänna användningsfel

Behörighetsfel returneras när API-klienten försöker utföra en uppgift som API-nyckeln inte har behörighet för. Om en API-klient till exempel försökte hämta kontosaldot med en API-nyckel som var konfigurerad för att tillåta handelsåtkomst men inte åtkomst till kontohantering, skulle behörighetsfelet returneras. Du kan granska dina API-nycklar och deras inställningar (som deras behörigheter) via fliken Inställningar -> API i kontohanteringen. Du måste se till att de API-nycklar som används av dina tredjepartsappar har alla inställningar och behörigheter som dina appar kräver.

Detta fel returneras när API-nyckeln som används för anropet antingen har gått ut eller är inaktiverad. Granska API-nyckeln under fliken Inställningar -> API i kontohanteringen eller generera en ny och uppdatera din applikation.

Du kan hämta den fullständiga listan över våra tillgångspar från AssetPairs public call och leta efter parnamnet som posten i Json-huvudena eller via parametern "altname": https://api.kraken.com/0/public/AssetPairs

Detta fel returneras när en metod anropas utan de nödvändiga parametrarna. Om man till exempel anropar metoden QueryOrders utan att ange en giltig transaktions-ID (txid)-parameter skulle felet för ogiltiga argument returneras. Att anropa en metod med onödiga parametrar skulle fortfarande inte returnera felet för ogiltiga argument eftersom de onödiga parametrarna helt enkelt skulle ignoreras.

Fel med ogiltig signatur uppstår om antingen din API-nyckel eller API-hemlighet är felaktigt skriven i ditt program, eller om POST-data som används i autentiseringen och POST-data som skickas till API:et inte matchar.För ytterligare referens är följande exempel på Python-kod för att implementera API-signaturalgoritmen. Lämplig API-publik nyckel bör kopieras och klistras in från kontohanteringen, och API-metoden och POST-data bör uppdateras på lämpligt sätt. Utdata kan användas direkt som värde för API-Sign HTTP-huvudet. #!/usr/bin/env python

# Import required Python libraries
import time
import base64
import hashlib
import hmac

# Decode API private key from base64 format displayed in account management
api_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 algorithms
api_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 value
api_signature = base64.b64encode(api_hmac.digest())

# API authentication signature for use in API-Sign HTTP header
print(api_signature)SHA256 beräknas med hjälp av nonce-värdet i sig och POST-data för API-metoden, och POST-DATA består av namn/värde-par för nonce (igen) och API-metodparametrarna. Ett exempel på data som ska skickas till SHA256 för TradeBalance-metoden skulle vara följande: SHA256 = SHA256 av "1541933977000nonce=1541933977000&asset=xxbt" Strängvärdet som skickas till SHA256 får inte innehålla några ytterligare null (\0)-värden och strängvärdet får inte kodas som base64 eller hex (dvs. strängvärdet ska vara en vanlig textsträng).URI-sökvägen är hela URL:en för API-metoden förutom prefixet "https://api.kraken.com", så URI-sökvägen för TradeBalance-metoden (till exempel) skulle vara strängvärdet "/0/private/TradeBalance" utan några ytterligare null-värden.HMAC SHA512 beräknas med hjälp av URI-sökvägen och den tidigare beräknade SHA256-digest, med den base64-avkodade API-privata nyckeln som HMAC-nyckel. Ett exempel på data som ska skickas till HMAC skulle vara följande: HMAC SHA512 med base64-avkodad privat nyckel = HMAC av "/0/private/TradeBalanceSHA256"API-Key och API-Sign HTTP-huvudena är de enda två obligatoriska anpassade HTTP-huvudena. API-Key-huvudet är en exakt kopia av den publika API-nyckeln från kontohanteringen. API-Sign-huvudet är HMAC SHA512-digestet kodat med base64.

Fel med ogiltig session returneras via WebSocket API när ett försök görs att prenumerera på ett autentiserat (privat) flöde med en autentiseringstoken som inte längre är giltig (till exempel har gått ut).

Lösningen är helt enkelt att begära en ny autentiseringstoken via REST API GetWebSocketsToken-slutpunkten och använda den nya token för alla efterföljande autentiserade (privata) prenumerationsförfrågningar.

Ett fel med dålig förfrågan indikerar att något är fel med den underliggande HTTP-förfrågan (inte den efterföljande API-förfrågan), såsom felmatchade URL:er mellan REST/WebSocket, eller att HTTP POST-data inte inkluderas korrekt:

% curl --data "" https://api.kraken.com/0/private/GetWebSocketsToken

{"error":["EAPI:Bad request"]}

Detta fel returneras när slutpunkten som anropas inte är en giltig slutpunkt.

Fel vid hastighetsbegränsning

Även om att lägga till och annullera order inte räknas mot våra standardiserade API-räknargränser, har dessa operationer en egen räknare för att lägga till och annullera order. Denna räknare fungerar på ett sätt där ju längre order lämnas i orderboken, desto fler order kan klienter lägga till eller annullera.

Tillfälliga spärrningsfelmeddelanden kan uppstå om du har haft för många misslyckade API-anrop eller för många ogiltiga nonce-fel under en kort tidsperiod, eller ogiltiga signaturer. Även om dessa anrop returnerar ett fel, räknas det felet fortfarande mot dina API-gränser och kan leda till en tillfällig spärrning.

Tillfälliga spärrningar varar i cirka 15 minuter. Efter att ha fått felmeddelandet om tillfällig spärrning, vänligen vänta 15 minuter innan du skickar nya API-förfrågningar. Om du utlöser flera ogiltiga nonce-fel, vänligen öka nonce-fönstret eftersom detta kan bidra till att minska frekvensen av dessa fel. Försök också att minska frekvensen av dina privata API-anrop.

Handelsfel

Öppnande av nya spotpositioner med marginal har tillfälligt avbrutits på grund av underhåll av handelsmotorn. Funktionen kommer snart att återkomma och du kan följa uppdateringar på status.kraken.com.

En annan anledning kan vara att spotpositioner med marginal för närvarande inte är tillgängliga för kunder bosatta i vissa länder.

På Kraken kan du inte öppna en lång och kort position för samma par.

Om du vill öppna en lång och kort position för samma valuta, välj olika handelspar med samma valuta som bas- eller offertvaluta. Exempel: short XBT/USD, long XBT/EUR.

Detta fel uppstår när du har överskridit gränserna för marginaltillåtelse för din nuvarande verifieringsnivå. Gränserna för marginaltillåtelse för varje valuta varierar beroende på din nuvarande verifieringsnivå.

Vi har begränsade medel tillgängliga för marginalförlängningar. Meddelandet "otillräcklig marginal" indikerar att vi för närvarande har slut på medel i den tillämpliga marginalpoolen. Detta kan ändras när som helst. Du kanske kan placera din order framgångsrikt bara sekunder eller minuter senare, men ordrar med hög volym och ordrar som placeras under tider med hög volym kan ta längre tid. Vi ber om ursäkt för eventuella besvär.

Detta fel uppstår när det finns otillräcklig Free Margin för att öppna en ny position på kontot, eller om det nuvarande försöket att öppna en position skulle resultera i att kontots Free Margin sjunker under 100 %.

Du har inte tillräckliga medel för att lägga denna order. Granska dina öppna positioner och ordrar för att se om det finns poster som kan hålla upp dina medel.

Du har inte uppnått den minsta ordervolymen för denna tillgång.

Du har överskridit det maximala antalet öppna ordrar som är tillgängliga för ditt konto.

Dessa gränser baseras på din verifieringsnivå. Vänligen stäng några av dina öppna ordrar eller verifiera ditt konto till en högre nivå.

Du har överskridit det maximala antalet öppna positioner som är tillgängliga för ditt konto.

Dessa gränser baseras på din verifieringsnivå. Vänligen stäng eller avveckla några eller alla dina öppna positioner, eller verifiera ditt konto till en högre nivå om möjligt.

Ett försök gjordes att redigera en befintlig (öppen) order, men ändringarna kunde inte slutföras framgångsrikt. Möjliga orsaker inkluderar otillräckliga medel för den nya ordern, vissa scenarier med partiell fyllning och vissa hävstångsordrar.

Den nya volymen är mindre än den redan utförda/fyllda volymen.

Orderstorleken överskred marginalpositionsstorleksgränsen för handelsparet.

Visningsvolymen har inte uppnått den minsta ordervolymen.

Visningsvolymen måste vara mindre än orderns volym.

Iceberg-ordrar är inte kompatibla med några andra ordertyper förutom en limitorder.

Finansieringsfel

Varje kryptovaluta har maximalt 5 nya (oanvända) insättningsadresser, varefter varje försök att skapa en 6:e ny adress kommer att returnera ett fel.

Detta fel returneras när finansieringsslutpunkterna anropas med en ogiltig eller saknad "method"-parameter. 

Inputparametern "key" motsvarar inte adressbeskrivningen som ställts in i kontohanteringen (via Finansiering -> Uttag).

De minsta uttagsbeloppen per valuta varierar och varje försök till uttag under minimibeloppet skulle resultera i detta fel.

Detta är ett generiskt fel som indikerar att en finansieringsbegäran inte kunde slutföras (till exempel skulle kunder från vissa platser som försöker göra on-chain staking-förfrågningar orsaka detta fel).

Den begärda uttagningen kunde inte slutföras, eftersom destinationsadressen saknar den nödvändiga förmånstagar-/mottagarinformationen (observera att detta för närvarande endast gäller för vissa uttag från kanadensiska konton).

Fel i tjänstens status

De tjänstfel du upplever bör endast vara tillfälliga. Du kanske vill skicka in dina förfrågningar igen om de har misslyckats. Vi kommer att övervaka problemen och uppdatera vår sida:

https://status.kraken.com/

Interna fel

När vi står inför problem med API-försämring kan dessa leda till problem för Kraken i form av meddelanden om otillgänglig tjänst och webbplatsavbrott.

Detta problem har att göra med säkerheten för ditt konto som kan ha komprometterats. Vänligen ändra ditt lösenord och din tvåfaktorsautentisering (Two-Factor Authentication) och kontakta vårt supportcenter.

Detta fel uppstår när en flagga eller indataparameter är tillfälligt eller permanent inaktiverad. Felet bör komma från en av de skickade indata. Vänligen kontakta vår support och skicka en logg med den fullständiga informationen som användes för anropet som genererade felet.

Dessa 5xx- och 10xx-fel är inte faktiska API-fel, utan snarare webbserverfel från Cloudflare.

API-fel returneras alltid i JSON-format som ”error”:[“ErrorType:ErrorMessage”], så när ett fel i ett annat format tas emot (som en HTTP-statuskod på 520, 504, 502, 1020, etc.), är den tillfälliga lösningen att försöka API-anropet igen strax därefter och förhoppningsvis kommer anropet då att lyckas.

Behöver du mer hjälp?