For information on changes for our US clients, please visit our Support Center article.

A causa dell’incremento della domanda, la verifica dell’account potrebbe subire ritardi. Evita di inviare più richieste e, per ottenere risultati migliori, rivedi in anticipo i requisiti del documento.
Cerca
Messaggi di errore API
Errori di utilizzo generali (#1)
Errori relativi al limite di frequenza (#2)
Errori di trading (presentazione/annullamento degli ordini) (#3)
Errori di stato del servizio (#4)
Errori interni (#5)
Errori Cloudflare (rete) (#6)

Introduzione

La maggior parte delle richieste API viene completata correttamente, ma a volte può verificarsi un problema e viene restituito un messaggio di errore al posto della risposta prevista.
La nostra API genera una serie di messaggi di errore descrittivi che indicano il motivo dell'errore, fornendo suggerimenti per la soluzione appropriata.
I messaggi di errore dell'API possono essere suddivisi in vari gruppi (a seconda del tipo di errore, della causa sottostante e della soluzione ottimale), ma il formato di tali messaggi è sempre il seguente:
"Livello di gravità""Categoria dell'errore":"Messaggio di errore"
Il "Livello di gravità" può essere Errore (E) o Avviso (W). La "Categoria dell'errore" può essere Generale, API, Query, Ordine, Trade, Versamento o Servizio. Il "Messaggio di errore" può essere una stringa di testo che descrive la causa dell'errore (ad esempio Argomenti non validi).
Questo è un esempio di errore restituito per indicare che è stata utilizzata una coppia di valute non valida in una query del ticker:
EQuery:Coppia di asset sconosciuta
Ricorda che alcuni software di terze parti (app mobili, bot commerciali e così via) scelgono di nascondere l'errore originale dell'API per mostrare un errore personalizzato, quindi il formato o il contenuto dell'errore può essere diverso, a seconda del software utilizzato.

Errori di utilizzo generali

EGeneral:Autorizzazione negata Gli errori di autorizzazione negata vengono restituiti quando il client API tenta di eseguire un'attività con una chiave API che non dispone dell'autorizzazione appropriata. Se ad esempio un client API tenta di recuperare il saldo dell'account utilizzando una chiave API configurata per consentire l'accesso al trading, ma non l'accesso alla gestione dell'account, viene restituito l'errore Autorizzazione negata. È possibile rivedere le chiavi API e le relative impostazioni (come le autorizzazioni) tramite la scheda Impostazioni -> API della gestione degli account. Devi assicurarti che le chiavi API utilizzate dalle applicazioni di terze parti dispongano di tutte le impostazioni e le autorizzazioni richieste dalle applicazioni. EAPI:Chiave non valida Questo errore viene restituito quando la chiave API utilizzata per la chiamata è scaduta o disabilitata. Esamina la chiave API nella scheda Impostazioni -> API della gestione account oppure generane una nuova e aggiorna l'applicazione. EQuery:Coppia di asset sconosciuta È possibile estrarre l'elenco completo delle coppie di asset dalla chiamata pubblica AssetPairs e cercare il nome della coppia come voce delle intestazioni JSON o mediante il parametro "altname": https://api.kraken.com/0/public/AssetPairs (https://api.kraken.com/0/public/AssetPairs) EGeneral:Argomenti non validi Questo errore viene restituito quando un metodo viene chiamato senza i parametri richiesti. Ad esempio, se si chiama il metodo QueryOrders senza specificare un ID di transazione (parametro txid) valido, viene restituito l'errore Argomenti non validi. Se invece si chiama un metodo aggiungendo parametri non necessari, l'errore Argomenti non validi non viene restituito, perché i parametri non necessari vengono semplicemente ignorati. EAPI:Firma non valida Gli errori Firma non valida vengono restituiti quando la chiave API o il segreto API sono scritti in modo errato nel programma o perché i dati POST utilizzati nell'autenticazione non corrispondono ai dati POST inviati all'API.
Come riferimento aggiuntivo, di seguito è riportato un esempio di codice Python per implementare l'algoritmo di firma API. La chiave pubblica API appropriata deve essere copiata e incollata dalla gestione dell'account, mentre il metodo API e i dati POST devono essere aggiornati in modo appropriato. Il valore dell'output può essere utilizzato direttamente come valore dell'intestazione HTTP API-Sign.
#!/usr/bin/env python# Import required Python librariesimport timeimport base64import hashlibimport hmac# Decode API private key from base64 format displayed in account managementapi_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 algorithmsapi_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 valueapi_signature = base64.b64encode(api_hmac.digest())# API authentication signature for use in API-Sign HTTP headerprint(api_signature)
Il valore SHA256 viene calcolato utilizzando il valore nonce stesso e i dati POST per il metodo API, mentre i dati POST sono costituiti sempre dalle coppie nome/valore dei parametri del metodo nonce e dell'API. Di seguito è riportato un esempio dei dati da passare a SHA256 per il metodo TradeBalance:
SHA256 = SHA256 of "1541933977000nonce=1541933977000&asset=xxbt"
Il valore della stringa passato a SHA256 non deve contenere alcun valore Null aggiuntivo (\0) e non deve essere codificato come base64 o esadecimale (ovvero il valore della stringa deve essere una stringa di testo normale).
Il percorso URI è l'intero URL del metodo API, senza il prefisso "https://api.kraken.com" (https://api.kraken.com/). Ad esempio, il percorso URI del metodo TradeBalance è la stringa "/0/private/TradeBalance" senza alcun valore Null aggiuntivo.
Il valore HMAC SHA512 viene calcolato utilizzando il percorso URI e il digest SHA256 calcolato in precedenza, con la chiave privata API decodificata in formato base64 come chiave HMAC. Di seguito è riportato un esempio dei dati da passare ad HMAC:
HMAC SHA512 con la chiave privata decodificata in formato base64 = HMAC di "/0/private/TradeBalanceSHA256"
Le uniche due intestazioni HTTP personalizzate richieste sono API-Key e API-Sign. L'intestazione API-Key è una copia esatta della chiave API pubblica della gestione degli account. L'intestazione API-Sign è il digest HMAC SHA512 codificato in formato base64.
EAPI:Nonce non valido Per ulteriori informazioni su questo errore, fai clic qui:
https://support.kraken.com/hc/en-us/articles/360001148063 (https://support.kraken.com/hc/en-us/articles/360001148063)
Ulteriori informazioni su nonce e la finestra nonce sono disponibili qui:
https://support.kraken.com/hc/en-us/articles/360000906023 (https://support.kraken.com/hc/en-us/articles/360000906023)
https://support.kraken.com/hc/en-us/articles/360001148023 (https://support.kraken.com/hc/en-us/articles/360001148023)
ESession:Sessione non valida Gli errori di sessione non valida vengono restituiti tramite l'API WebSocket (https://docs.kraken.com/websockets/) quando si tenta di sottoscrivere un feed autenticato (privato) (https://support.kraken.com/hc/en-us/articles/360034664311) utilizzando un token di autenticazione che non è più valido, ad esempio perché è già scaduto.
La soluzione consiste semplicemente nel richiedere un nuovo token di autenticazione tramite l'endpoint GetWebSocketsToken dell'API REST (https://docs.kraken.com/rest/#operation/getWebsocketsToken) e utilizzare il nuovo token per tutte le richieste di sottoscrizione autenticate (private) successive.

Errori relativi al limite di frequenza

EAPI:Limite di frequenza superato È stato superato il limite di velocità dell'API. (https://support.kraken.com/hc/en-us/articles/206548367) EOrder:Limite di frequenza superato Mentre l'aggiunta e l'annullamento degli ordini non vengono conteggiati rispetto ai limiti del nostro contatore API standard, queste operazioni dispongono di un contatore dedicato per gli ordini di aggiunta e annullamento. (https://support.kraken.com/hc/en-us/articles/360045239571) Con questo contatore, più tempo gli ordini rimangono nel registro ordini, più i clienti hanno la possibilità di aggiungerli o annullarli. EGeneral:Blocco temporaneo I messaggi di Blocco temporaneo possono essere generati quando si verificano troppe chiamate API non riuscite o troppi errori nonce non validi in un breve periodo di tempo o vengono rilevate firme non valide. Anche se l'errore viene restituito da queste chiamate, tale errore viene conteggiato in base ai limiti dell'API e potrebbe causare un blocco temporaneo.
I blocchi temporanei durano circa 15 minuti. Se ricevi un errore di blocco temporaneo, attendi 15 minuti prima di inviare nuove richieste all'API. Se vengono generati più errori di nonce non valido, aumenta la finestra nonce per cercare di ridurre la frequenza di tali errori. Prova a ridurre anche la frequenza delle chiamate API private.

Errori di trading

EOrder:Impossibile aprire la posizione L'apertura di nuove spot position con margine è stata temporaneamente sospesa per la manutenzione del motore di trading. La funzionalità sarà presto disponibile e potrai seguire gli aggiornamenti su status.kraken.com.
L'errore potrebbe anche essere dovuto al fatto che le spot position con margine non sono attualmente disponibili per i residenti di determinati Paesi (https://support.kraken.com/hc/en-us/articles/360001368823).
EOrder:Impossibile aprire posizione opposta Su Kraken non è possibile aprire una posizione long e short per la stessa coppia. (https://support.kraken.com/hc/en-us/articles/205367328)
Se desideri aprire una posizione long e short per la stessa valuta, scegli coppie di trading diverse con valuta corrispondente alla valuta base o alla valuta quotata. Esempio: short XBT/USD, long XBT/EUR.
EOrder:Limite di margine superato Questo errore si verifica quando vengono superati i limiti di tolleranza dei margini (https://support.kraken.com/hc/en-us/articles/209238787) per il livello di verifica corrente. I limiti di tolleranza dei margini per ciascuna valuta variano in base al livello di verifica corrente. EOrder:Margine insufficiente Disponiamo di fondi limitati per l'estensione dei margini. Il messaggio "Margine insufficiente" indica che, al momento, non sono disponibili fondi nel pool di margine applicabile (https://support.kraken.com/hc/en-us/articles/217696017). La situazione può cambiare in qualsiasi momento. L'ordine potrebbe essere effettuato correttamente solo pochi secondi o minuti dopo, ma gli ordini per volumi elevati e quelli effettuati nei periodi con volumi elevati potrebbero richiedere più tempo. Ci scusiamo per l'inconveniente. EOrder:Fondi insufficienti (fondi utente insufficienti) Non disponi dei fondi necessari per effettuare l'ordine. Controlla le tue posizioni aperte e gli ordini per le voci che potrebbero bloccare i tuoi fondi. EOrder:Ordine minimo non soddisfatto (volume troppo basso) Non è stato raggiunto il volume minimo dell'ordine (https://support.kraken.com/hc/en-us/articles/205893708) per l'asset in questione. EOrder:Limite ordini programmati superato Hai superato il numero massimo di ordini aperti (https://support.kraken.com/hc/en-us/articles/209090607) disponibili per il tuo account.
Questo limite si basa sul livello di verifica. Chiudi alcuni ordini aperti o verifica il tuo account a un livello superiore.
EOrder:Limite posizioni superato Hai superato il numero massimo di posizioni aperte (https://support.kraken.com/hc/en-us/articles/209090607) disponibili per il tuo account.
Questo limite si basa sul livello di verifica. Ti invitiamo a chiudere o liquidare alcune o tutte le posizioni aperte, oppure a verificare il tuo account a un livello superiore.

Errori di stato del servizio

EService:Non disponibile o EService:Occupato Gli errori di servizio che si verificano dovrebbero essere solo temporanei. Se le richieste non riescono, prova a inviarle di nuovo. Provvederemo a monitorare i problemi e aggiorneremo la nostra pagina: https://status.kraken.com/ (https://status.kraken.com/)

Errori interni

EGeneral:Errore interno I problemi di degrado dell'API possono determinare problemi sia per Kraken che per cryptowat.ch, che si manifestano come messaggi di Servizio non disponibile, errori 8XX su cryptowat.ch e interruzioni del sito. ETrade:Bloccato Questo problema indica una possibile compromissione della sicurezza del tuo account. Modifica la password e l'autenticazione a due fattori, quindi contatta il nostro centro di assistenza. EAPI:Funzione disattivata Questo errore si verifica quando un flag o un parametro di input viene disattivato temporaneamente o definitivamente. L'errore dovrebbe essere dovuto a uno degli input passati. Contatta l'assistenza inviando un log con tutte le informazioni utilizzate per la chiamata che ha generato l'errore.

Errori Cloudflare

Codici di stato HTTP 5xx e 10xx Gli errori 5xx e 10xx non vengono generati dall'API, ma dal server Web di Cloudflare. Gli errori dell'API vengono sempre restituiti in formato JSON, ad esempio "ERROR":["ErrorType:ErrorMessage"], quindi ogni volta che ricevi un errore in un formato diverso (ad esempio un codice di stato HTTP 520, 504, 502, 1020 e così via), puoi tentare di risolvere il problema ripetendo la chiamata all'API subito dopo, sperando che abbia esito positivo.
Quando si verifica questo problema, è possibile che l'ordine venga eseguito correttamente anche se viene restituito un errore 5xx o 10xx al posto della risposta prevista. Questo avviene perché, a volte, Cloudflare genera l'errore dopo aver gestito la chiamata all'API. Pertanto, la chiamata API ha avuto esito positivo ma i risultati non sono stati restituiti correttamente tramite Cloudflare.
Puoi tentare di risolvere il problema utilizzando i riferimenti utente (il parametro userref) per tutti gli ordini. Inserendo un riferimento utente univoco per ogni ordine, puoi utilizzare il metodo OpenOrders per verificare se l'ordine è stato eseguito correttamente o meno e determinare se è necessario ripresentarlo.
Ad esempio, se una chiamata al metodo AddOrder per un limit order include il parametro "userref=12345678", una chiamata successiva al metodo OpenOrders con il parametro "userref=12345678" restituisce le informazioni sugli ordini effettuati correttamente (compreso l'ID ordine), ma non restituisce alcuna informazione su quelli non riusciti (anche solo "result":"open":).