API-virheilmoitukset

Viimeksi päivitetty: 8.8.2025

Johdanto

Useimmat API-pyynnöt suoritetaan onnistuneesti, mutta joskus asiat menevät pieleen ja odotetun vastauksen sijaan palautetaan virheilmoitus.

API-liittymämme tarjoaa useita kuvailevia virheilmoituksia, joiden tarkoituksena on kertoa virheen syy ja antaa ehdotuksia sopivasta ratkaisusta.

API-virheilmoitukset voidaan jakaa useisiin eri ryhmiin (riippuen virheen tyypistä, perimmäisestä syystä ja optimaalisesta ratkaisusta), mutta API-virheilmoitusten muoto on johdonmukainen ja se on seuraava:

"Vakavuustaso""Virheluokka":"Virheilmoitus"

"Vakavuustaso" voi olla joko E (error) virheelle tai W (warning) varoitukselle. "Virheluokka" voi olla jokin seuraavista: General, API, Query, Order, Trade, Funding tai Service. "Virheilmoitus" voi olla mikä tahansa tekstijono, joka kuvaa virheen syytä (kuten Invalid arguments).

Esimerkiksi virhe, joka osoittaa, että ticker-kyselyssä on käytetty virheellistä valuuttaparia, olisi seuraava:

EQuery:Unknown asset pair

Huomaa, että jotkin kolmannen osapuolen ohjelmistot (mobiilisovellukset, kaupankäyntibotit jne.) saattavat piilottaa alkuperäisen API-virheen ja näyttää sen sijaan mukautetun virheen, joten vaihtoehtoinen virhemuoto tai sisältö on mahdollista käytettävästä ohjelmistosta riippuen.

  • Yleiset käyttövirheet

  • Rate limit -virheet

  • Kaupankäyntivirheet (toimeksiantojen tekeminen/peruuttaminen)

  • Rahoitusvirheet (talletus/nosto)

  • Palvelun tilavirheet

  • Sisäiset virheet

  • Cloudflare-virheet (verkko)

Yleiset käyttövirheet

Permission denied -virheet palautetaan, kun API-asiakas yrittää suorittaa tehtävää, johon API-avaimella ei ole oikeutta. Jos API-asiakas esimerkiksi yrittäisi hakea tilin saldoa käyttämällä API-avainta, joka on määritetty sallimaan kaupankäynti mutta ei tilinhallintaa, palautettaisiin permission denied -virhe. Voit tarkistaa API-avaimesi ja niiden asetukset (kuten käyttöoikeudet) tilinhallinnan Asetukset -> API -välilehdeltä. Sinun on varmistettava, että kolmannen osapuolen sovellusten käyttämillä API-avaimilla on kaikki sovellusten vaatimat asetukset ja käyttöoikeudet.

Tämä virhe palautetaan, kun kutsussa käytetty API-avain on joko vanhentunut tai poistettu käytöstä. Tarkista API-avain tilinhallinnan Asetukset -> API -välilehdeltä tai luo uusi ja päivitä sovelluksesi.

Voit hakea täydellisen luettelon omaisuuseräpareistamme julkisesta AssetPairs-kutsusta ja etsiä parin nimeä JSON-otsikoiden merkintänä tai parametrin "altname" avulla: https://api.kraken.com/0/public/AssetPairs

Tämä virhe palautetaan, kun metodia kutsutaan ilman vaadittuja parametreja. Esimerkiksi QueryOrders-metodin kutsuminen ilman voimassa olevaa tapahtumatunnus-parametria (txid) aiheuttaisi invalid arguments -virheen palauttamisen. Metodin kutsuminen tarpeettomilla parametreilla ei silti palauttaisi invalid arguments -virhettä, koska tarpeettomat parametrit yksinkertaisesti jätettäisiin huomiotta.

Invalid signature -virheitä ilmenee, jos joko API-avaimesi tai API-salaisuutesi on kirjoitettu väärin ohjelmaasi tai koska todennuksessa käytetyt POST-tiedot ja API:lle lähetetyt POST-tiedot eivät täsmää. Lisäviitteenä seuraavassa on Python-esimerkkikoodi API-allekirjoitusalgoritmin toteuttamiseksi. Asianmukainen julkinen API-avain tulee kopioida ja liittää tilinhallinnasta, ja API-metodi sekä POST-tiedot tulee päivittää asianmukaisesti. Tulostusarvoa voidaan käyttää suoraan API-Sign HTTP-otsikon arvona. #!/usr/bin/env python

# Tuo tarvittavat Python-kirjastot
import time
import base64
import hashlib
import hmac

# Dekoodaa yksityinen API-avain tilinhallinnassa näkyvästä base64-muodosta
api_secret = base64.b64decode("nmlrD83t1J+yVWKUBx9vD6j26C5zhC11tFfXpN+Ww+8oOVuGgse5AeADcvl95jYaD+UAi3D5CrVfFr8GfQ7zhA==")

# Muuttujat (API-metodi, nonce ja POST-tiedot)
api_path = "/0/private/TradeBalance"
api_nonce = str(int(time.time()*1000))
api_post = "nonce=" + api_nonce + "&asset=xxbt"

# Kryptografiset tiivistealgoritmit
api_sha256 = hashlib.sha256(api_nonce + api_post).digest()
api_hmac = hmac.new(api_secret, api_path + api_sha256, hashlib.sha512)

# Koodaa allekirjoitus API-Sign-arvossa käytettävään base64-muotoon
api_signature = base64.b64encode(api_hmac.digest())

# API-todennusallekirjoitus käytettäväksi API-Sign HTTP-otsikossa
print(api_signature)SHA256 lasketaan käyttämällä itse nonce-arvoa ja API-metodin POST-tietoja, ja POST-TIEDOT koostuvat noncen (uudelleen) ja API-metodin parametrien nimi/arvo-pareista. Esimerkki tiedoista, jotka tulisi välittää SHA256:lle TradeBalance-metodia varten, on seuraava: SHA256 = SHA256 merkkijonosta "1541933977000nonce=1541933977000&asset=xxbt". SHA256:lle välitettävä merkkijonoarvo ei saa sisältää ylimääräisiä nolla-arvoja (\\0), eikä merkkijonoarvoa saa koodata base64- tai hex-muotoon (eli merkkijonoarvon tulee olla tavallinen tekstimerkkijono). URI-polku on API-metodin koko URL-osoite lukuun ottamatta "https://api.kraken.com" -etuliitettä, joten esimerkiksi TradeBalance-metodin URI-polku olisi merkkijonoarvo "/0/private/TradeBalance" ilman ylimääräisiä nolla-arvoja. HMAC SHA512 lasketaan käyttämällä URI-polkua ja aiemmin laskettua SHA256-tiivistettä, ja HMAC-avaimena käytetään base64-dekoodattua yksityistä API-avainta. Esimerkki tiedoista, jotka tulisi välittää HMAC:lle, on seuraava: HMAC SHA512 käyttäen base64-dekoodattua yksityistä avainta = HMAC merkkijonosta "/0/private/TradeBalanceSHA256". API-Key ja API-Sign HTTP-otsikot ovat ainoat kaksi vaadittua mukautettua HTTP-otsikkoa. API-Key-otsikko on tarkka kopio tilinhallinnan julkisesta API-avaimesta. API-Sign-otsikko on base64-muotoon koodattu HMAC SHA512 -tiiviste.

Virheellinen istunto -virheet palautetaan WebSocket-rajapinnan kautta, kun yritetään tilata todennettu (yksityinen) syöte käyttämällä todennustunnusta, joka ei ole enää voimassa (esimerkiksi se on jo vanhentunut).

Ratkaisuna on pyytää uusi todennustunnus REST-rajapinnan GetWebSocketsToken-päätepisteen kautta ja käyttää uutta tunnusta kaikissa myöhemmissä todennetuissa (yksityisissä) tilauspyynnöissä.

Virheellinen pyyntö -virhe osoittaa, että taustalla olevassa HTTP-pyynnössä (ei varsinaisessa API-pyynnössä) on jotain virheellistä, kuten ristiriitaiset URL-osoitteet REST:n/WebSocketin välillä tai HTTP POST -tietojen puutteellinen sisällyttäminen:

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

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

Tämä virhe palautetaan, kun kutsuttu päätepiste ei ole kelvollinen päätepiste.

Nopeusrajoitusvirheet

Vaikka toimeksiantojen lisääminen ja peruuttaminen ei kuluta tavallisia API-laskurirajoituksiamme, näillä toiminnoilla on oma lisäys- ja peruutuslaskurinsa. Tämä laskuri toimii siten, että mitä kauemmin toimeksiannot jätetään toimeksiantokirjaan, sitä enemmän toimeksiantoja asiakkaat voivat lisätä tai peruuttaa.

Väliaikainen lukitus -virheilmoituksia voi esiintyä, jos sinulla on ollut liian monta epäonnistunutta API-kutsua tai liian monta virheellistä nonce-virhettä lyhyen ajan sisällä tai virheellisiä allekirjoituksia. Vaikka nämä kutsut palauttavat virheen, kyseinen virhe lasketaan silti API-rajoituksiisi ja se voi johtaa väliaikaiseen lukitukseen.

Väliaikaiset lukitukset kestävät noin 15 minuuttia. Kun olet saanut väliaikaisen lukitusvirheen, odota 15 minuuttia ennen uusien API-pyyntöjen lähettämistä. Jos aiheutat useita virheellisiä nonce-virheitä, suurenna nonce-ikkunaa (nonce window), sillä se voi auttaa vähentämään näiden virheiden esiintymistiheyttä. Yritä myös vähentää yksityisten API-kutsujesi tiheyttä.

Kaupankäyntivirheet

Uusien spot-positioiden avaaminen marginaalilla on keskeytetty tilapäisesti kaupankäyntimoottorin huollon vuoksi. Ominaisuus palaa pian, ja voit seurata päivityksiä osoitteessa status.kraken.com.

Toinen syy voi olla se, että spot-positiot marginaalilla eivät ole tällä hetkellä saatavilla tietyissä maissa asuville asiakkaille.

Krakenissa et voi avata pitkää (long) ja lyhyttä (short) positiota samalle parille.

Jos haluat avata pitkän ja lyhyen position samalle valuutalle, valitse eri kaupankäyntiparit, joissa on sama valuutta perus- tai noteerausvaluuttana. Esim. short XBT/USD, long XBT/EUR.

Tämä virhe ilmenee, kun olet ylittänyt nykyisen vahvistustasosi marginaalivarausrajat. Kunkin valuutan marginaalivarausrajat vaihtelevat nykyisen vahvistustasosi mukaan.

Meillä on rajoitetusti varoja käytettävissä marginaalipidennyksiin. Viesti "insufficient margin" (riittämätön marginaali) osoittaa, että kyseisestä marginaalipoolista on tällä hetkellä varat lopussa. Tilanne voi muuttua milloin tahansa. Saatat pystyä tekemään toimeksiannon onnistuneesti vain sekunteja tai minuutteja myöhemmin, mutta suurten volyymien toimeksiannot ja ruuhka-aikoina tehdyt toimeksiannot voivat kestää kauemmin. Pahoittelemme mahdollista vaivaa.

Tämä virhe ilmenee, kun tilillä ei ole riittävästi vapaata marginaalia (Free Margin) uuden position avaamiseen tai jos nykyinen yritys avata positio johtaisi tilin vapaan marginaalin putoamiseen alle 100 %:n.

Sinulla ei ole käytettävissä olevia varoja tämän toimeksiannon tekemiseen. Tarkista avoimet positiosi ja toimeksiantosi sellaisten kohteiden varalta, jotka saattavat varata varojasi.

Et ole saavuttanut tämän omaisuuserän vähimmäistoimeksiantovolyymia.

Olet ylittänyt tilillesi käytettävissä olevien avointen toimeksiantojen enimmäismäärän.

Nämä rajat perustuvat vahvistustasoosi. Sulje joitakin avoimia toimeksiantojasi tai vahvista tilisi korkeammalle tasolle.

Olet ylittänyt tilillesi käytettävissä olevien avointen positioiden enimmäismäärän.

Nämä rajat perustuvat vahvistustasoosi. Sulje tai selvitä (settle) osa tai kaikki avoimista positioistasi tai vahvista tilisi korkeammalle tasolle, jos mahdollista.

Olemassa olevaa (avointa) toimeksiantoa yritettiin muokata, mutta muutoksia ei voitu suorittaa onnistuneesti. Mahdollisia syitä ovat riittämättömät varat uuteen toimeksiantoon, jotkin osittaisen toteutumisen skenaariot ja jotkin vivutetut toimeksiannot.

Uusi volyymi on pienempi kuin jo toteutunut/täyttynyt volyymi.

Toimeksiannon koko ylitti kaupankäyntiparin marginaaliposition kokorajoituksen.

Näkyvä volyymi ei täytä toimeksiannon vähimmäisvolyymia.

Näkyvän volyymin on oltava pienempi kuin toimeksiannon volyymi.

Iceberg-toimeksiannot eivät ole yhteensopivia muiden toimeksiantotyyppien kuin rajahintatoimeksiantojen (limit order) kanssa.

Rahoitusvirheet

Kullakin kryptovaluutalla voi olla enintään 5 uutta (käyttämätöntä) talletusosoitetta, minkä jälkeen yritys luoda kuudes uusi osoite palauttaa virheen.

Tämä virhe palautetaan aina, kun rahoituksen päätepisteitä kutsutaan virheellisellä tai puuttuvalla "method"-parametrilla. 

Syöteparametri "key" ei vastaa tilinhallinnassa (kohdassa Rahoitus -> Nosta) asetettua osoitteen kuvausta.

Vähimmäisnostomäärät vaihtelevat valuutoittain, ja kaikki vähimmäismäärän alittavat nostoyritykset johtavat tähän virheeseen.

Tämä on yleinen virhe, joka osoittaa, että rahoituspyyntöä ei voitu suorittaa loppuun (esimerkiksi tietyillä alueilla asuvien asiakkaiden yritykset tehdä on-chain-steikkauspyyntöjä aiheuttavat tämän virheen).

Pyydettyä nostoa ei voitu suorittaa loppuun, koska kohdeosoitteesta puuttuvat vaaditut edunsaajan/vastaanottajan tiedot (huomaa, että tämä koskee tällä hetkellä vain tiettyjä nostoja kanadalaisilta tileiltä).

Palvelun tilavirheet

Kokemasi palveluvirheet ovat todennäköisesti vain tilapäisiä. Voit yrittää lähettää pyyntösi uudelleen, jos ne epäonnistuivat. Seuraamme tilannetta ja päivitämme sivumme:

https://status.kraken.com/

Sisäiset virheet

Kun kohtaamme API-suorituskyvyn heikkenemistä, tämä voi näkyä Krakenissa palvelun käyttökatkoina ja sivuston toimintahäiriöinä.

Tämä ongelma liittyy tilisi turvallisuuteen, joka on saattanut vaarantua. Vaihda salasanasi ja kaksivaiheinen tunnistautumisesi ja ota yhteyttä tukikeskukseemme.

Tämä virhe ilmenee, kun lippu tai syöttöparametri on poistettu käytöstä tilapäisesti tai pysyvästi. Virheen pitäisi johtua jostakin annetusta syötteestä. Ota yhteyttä tukeemme ja lähetä loki, joka sisältää kaikki virheen aiheuttaneessa kutsussa käytetyt tiedot.

Nämä 5xx- ja 10xx-virheet eivät ole varsinaisia API-virheitä, vaan Cloudflaren verkkopalvelinvirheitä.

API-virheet palautetaan aina JSON-muodossa, kuten ”error”:[”ErrorType:ErrorMessage”], joten aina kun virhe vastaanotetaan muussa muodossa (kuten HTTP-tilakoodi 520, 504, 502, 1020 jne.), väliaikainen ratkaisu on yrittää API-kutsua uudelleen hetken kuluttua, jolloin kutsu toivottavasti onnistuu.

Tarvitsetko lisää apua?