FAQ sulle API avanzate

Last updated: 25 nov 2025

Utilizzando gli endpoint di versamento della REST API, i clienti possono depositare/prelevare fondi sul loro account di Kraken e richiedere lo stato in tempo reale di una transazione di deposito/prelievo.

I depositi/prelievi attraversano varie fasi tra la richiesta iniziale e il completamento della transazione: pertanto, gli endpoint di versamento restituiranno un valore di stato diverso a seconda di quando vengono chiamati.

Occorre tenere presente che i valori di stato provengono dalle pagine 16/17 del documento Internet Financial Exchange Protocol (IFEX), ma sono stati leggermente modificati per renderli più adatti alle transazioni in criptovaluta (ad esempio, non vengono utilizzati tutti i possibili valori di stato).

Depositi

I possibili valori di stato per le transazioni di deposito sono i seguenti:

  • Eseguito = il deposito è stato ricevuto ma necessita ancora di ulteriori conferme sulla blockchain.

  • Completato = il deposito ha raggiunto il necessario numero di conferme sulla blockchain.

  • Non riuscito = il deposito non è andato a buon fine (per uno o più motivi).

Di seguito sono forniti alcuni esempi di come apparirebbero i valori di stato sopra indicati nelle risposte provenienti dall'endpoint DepositStatus:

Stato Eseguito:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"QSB7IFM-Q3LT3X-NVAOKE","txid":"92c908ea2ea819d678d67130e4d20b625a8f97f3cfff45f906dde8cef41a046a","info":"D7SLwMBPqfFMCZ8EJDMoVEePpZAFFegLt8","amount":"997.00000000","fee":"0.00000000","time":1611308478,"status":"Settled"}]}

Stato Completato:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"QSB7IFM-Q3LT3X-NVAOKE","txid":"92c908ea2ea819d678d67130e4d20b625a8f97f3cfff45f906tdde8cef41a046a","info":"D7SLwMBPqfFMCZ8EJDMoVEePpZAFFegLt8","amount":"997.00000000","fee":"0.00000000","time":1611308478,"status":"Success"}]}

Prelievi

I possibili valori di stato per le transazioni di prelievo sono i seguenti:

  • Disposto = la richiesta di prelievo è stata ricevuta e la sua validità è in corso di verifica (eventuali restrizioni sui versamenti nell'account, ecc.).

  • In attesa = il prelievo è in attesa di essere elaborato dal nostro gateway per i versamenti.

  • Eseguito = il prelievo è stato inviato alla blockchain (a questo punto, diventerà disponibile l'ID della transazione sulla blockchain).

  • Completato = la transazione di prelievo ha ricevuto almeno una conferma sulla blockchain.

  • In sospeso = il prelievo è stato messo in sospeso e deve essere verificato manualmente dal nostro team per i versamenti.

  • Non riuscito = il prelievo non è andato a buon fine (per uno o più motivi).

Di seguito sono forniti alcuni esempi di come apparirebbero i valori di stato sopra indicati nelle risposte provenienti dall'endpoint WithdrawStatus:

Stato Disposto:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":null,"info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Initial"}]}

Stato In attesa:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":null,"info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Pending"}]}

Stato Eseguito:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":"064536e901f2cbfa6e279aa7a87c700b64e0ce561bf6e266788c47496f75106c","info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Settled"}]}

Stato Completato:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":"064536e901f2cbfa6e279aa7a87c700b64e0ce561bf6e266788c47496f75106c","info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Success"}]}

Stato Non riuscito:{"error":[],"result":[{"method":"Dogecoin","aclass":"currency","asset":"XXDG","refid":"ASBCMYC-F5ETQT-34NMWT","txid":null,"info":"DGNBPsa2GhhtZGEZo79uF3WN2bTxFxmc9y","amount":"98.00000000","fee":"2.00000000","time":1612782924,"status":"Failure","status-prop":"canceled"}]}}

Ulteriori informazioni riguardanti i depositi/prelievi sono disponibili nelle nostre pagine di supporto relative ai versamenti in valuta tradizionale e ai versamenti in criptovaluta.

L'endpoint OHLC della REST API fornisce solo una quantità limitata di dati storici, segnatamente 720 punti dati dell'intervallo richiesto. Ad esempio, se si richiedono i dati OHLC a intervalli di 1 minuto, verranno restituiti gli ultimi 720 minuti (12 ore) di dati.

Per le applicazioni che richiedono ulteriori dati OHLC o tick, è possibile recuperare lo storico di tutte le operazioni di trading dei nostri mercati (dati storici di orari e vendite) tramite l'endpoint di trading della REST API. Sulla base dei dati storici relativi a orari e vendite, è quindi possibile creare l’OHLC per qualsiasi intervallo di tempo.

L'endpoint di trading accetta un parametro opzionale, denominato since, che specifica la data/ora di inizio dei dati. Il valore since è un timestamp UNIX con risoluzione in nanosecondi (un timestamp UNIX standard in secondi con 9 cifre aggiuntive).

Ad esempio, una chiamata all'endpoint di trading come https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559347200000000000 restituirebbe i dati storici degli orari e delle vendite per XBT/USD dal 1° giugno 2019 alle 00:00:00 UTC:

{"error":[],"result":{"XXBTZUSD":[["8552.90000","0.03190270",1559347203.7998,"s","m",""],["8552.90000","0.03155529",1559347203.8086,"s","m",""],["8552.90000","0.00510797",1559347203.9664,"s","m",""],["8552.90000","0.09047336",1559347203.9789,"s","m",""],["8552.90000","0.00328738",1559347203.9847,"s","m",""],["8552.90000","0.00492152",1559347203.9897,"s","m",""],["8552.90000","0.00201848",1559347203.9937,"s","m",""],["8552.90000","0.11422068",1559347203.9993,"s","m",""],["8552.90000","0.00425858",1559347204.071,"s","m",""],["8552.90000","0.00427679",1559347204.0762,"s","m",""],["8552.90000","0.06381401",1559347204.1662,"s","m",""]
...
["8579.50000","0.05379597",1559350785.248,"s","l",""],["8579.50000","0.94620403",1559350785.2936,"s","l",""],["8578.10000","0.45529068",1559350785.297,"s","l",""]],"last":"1559350785297011117"}}

Le chiamate successive all'endpoint di trading dovrebbero sostituire il valore del parametro since con il valore del parametro last ricavato dai risultati della chiamata precedente, come https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559350785297011117.

Impostando il valore speciale since su 0 (zero). si otterrebbero i dati storici relativi a orari e vendite dalla prima operazione di trading eseguita sul mercato.

Il riferimento utente è l’ID dell’ordine fornito dal cliente che può essere utilizzato al posto dell'ID ordine effettivo (fornito dall'API) per alcune attività di gestione degli ordini (in particolare, per annullare gli ordini).

I riferimenti utente sono implementati per garantire la massima flessibilità possibile e, pertanto, possono essere utilizzati in un molti modi diversi, ad esempio:

  • come ID univoco (dove ogni ordine ha un riferimento utente diverso);

  • per raggruppare ordini correlati (ad esempio, ordini con diversi livelli di leva);

  • come ID di backup nel caso in cui l'ID dell’ordine in questione non sia noto.

Il riferimento utente deve essere un valore numerico compreso tra 1 e 2.147.483.647 (sostanzialmente, qualsiasi numero positivo a 32 bit) e può essere quindi implementato come un semplice contatore, come un valore casuale firmato a 32 bit o anche come un timestamp in secondi (anche se, in questo caso, restituirebbe un errore dopo il 19 gennaio 2038 alle 3:14:07 UTC).

Come effettuare ordini con un riferimento utente

È possibile effettuare ordini con un riferimento utente allegato chiamando l'endpoint AddOrder e includendo il parametro userref con il riferimento utente come valore:

$ ./krakenapi AddOrder pair=xdgusd type=buy ordertype=limit price=0.1 volume=50 userref=27649653

{"error":[],"result":{"descr":{"order":"buy 50.00000000 XDGUSD @ limit 0.1000000"},"txid":["OQJSXE-F5FOM-IXHVL4"]}}

Visualizzazione degli ordini con un riferimento utente

Gli ordini che hanno già un riferimento utente allegato possono essere visualizzati chiamando gli endpoint Open/Closed/QueryOrders e includendo il parametro userref con il riferimento utente esistente come valore (in questo caso, il riferimento utente funge da filtro, mostrando solo gli ordini associati):

$ ./krakenapi OpenOrders userref=27649653

{"error":[],"result":{"open":{"OQJSXE-F5FOM-IXHVL4":{"refid":null,"userref":27649653,"status":"open","opentm":1629618802.9812,"starttm":0,"expiretm":0,"descr":{"pair":"XDGUSD","type":"buy","ordertype":"limit","price":"0.1000000","price2":"0","leverage":"none","order":"buy 50.00000000 XDGUSD @ limit 0.1000000","close":""},"vol":"50.00000000","vol_exec":"0.00000000","cost":"0.000000000","fee":"0.000000000","price":"0.000000000","stopprice":"0.000000000","limitprice":"0.000000000","misc":"","oflags":"fciq"}}}}

$ ./krakenapi ClosedOrders userref=38695724

{"error":[],"result":{"closed":{"O7YEFN-3V4RK-FBNSNM":{"refid":null,"userref":38695724,"status":"canceled","reason":"User requested","opentm":1629619539.3593,"closetm":1629619542.2246,"starttm":0,"expiretm":0,"descr":{"pair":"XBTUSD","type":"buy","ordertype":"limit","price":"25000.0","price2":"0","leverage":"none","order":"buy 0.00010000 XBTUSD @ limit 25000.0","close":""},"vol":"0.00010000","vol_exec":"0.00000000","cost":"0.00000","fee":"0.00000","price":"0.00000","stopprice":"0.00000","limitprice":"0.00000","misc":"","oflags":"fciq"}},"count":1}}

Annullamento degli ordini con un riferimento utente

Gli ordini che hanno già un riferimento utente allegato possono essere annullati chiamando l’endpoint CancelOrder e utilizzando il riferimento utente come valore txid (al posto del valore dell'ID dell’ordine):

$ ./krakenapi CancelOrder txid=16764529

{"error":[],"result":{"count":1}}

È importante notare che tutti gli ordini aperti con lo stesso riferimento utente verrebbero annullati ed è pertanto possibile effettuare una singola chiamata CancelOrder per annullare più ordini contemporaneamente (come indicato dal valore count 3 nella seguente risposta):

$ ./krakenapi CancelOrder txid=48695624

{"error":[],"result":{"count":3}}

Questo problema potrebbe essere correlato a Cloudflare:

https://support.cloudflare.com/hc/en-us/articles/200169226-Why-am-I-getting-a-403-error-

NOTA: la funzione di "Controllo di integrità del browser" è abilitata su Kraken.

Tale controllo può essere attivato se la tua richiesta contiene intestazioni sospette. Ad esempio, la richiesta potrebbe non contenere uno user agent o utilizzare uno user agent non standard: ti consigliamo, quindi, di controllare le intestazioni della tua richiesta.

Se non dovessi riuscire a creare richieste standard supportate dal nostro sistema, inviaci una copia completa della richiesta o delle richieste che stai tentando di creare, fornendoci anche il tuo indirizzo IP e tutte le intestazioni. Queste informazioni ci consentiranno di esaminare ulteriormente il problema.

API Futures

Per le nostre REST e WebSocket API Futures (futures.kraken.com) offriamo un ambiente di test completo utilizzando l'URL API demo-futures.kraken.com.

Ambienti di test REST, WebSocket e FIX

Per la nostra REST/WebSocket API spot e FIX API, attualmente offriamo un ambiente di test per clienti qualificati. Per accedere a questo ambiente è necessario seguire un processo di onboarding che può essere avviato contattando direttamente il team API.

Test della nostra API utilizzando il parametro di test validate

Quando si effettua un ordine tramite gli endpoint della REST API AddOrder o della WebSocket API addOrder, è possibile utilizzare il parametro validate input per simulare l'ordine.

Chiamando AddOrder/addOrder con il parametro validate impostato su true (validate=1, validate=true, validate=anything, ecc.), verrà eseguito il controllo dei dettagli dell'ordine per individuare eventuali errori, ma la risposta dell’API non includerà mai un ID dell’ordine (che viene sempre restituito per un ordine andato a buon fine senza il parametro validate).

Esempio di chiamata AddOrder con il parametro validate (notare che manca l'ID dell’ordine):

bash

Bash

$ ./krakenapi AddOrder pair=xdgusd type=buy ordertype=market volume=5000 validate=true{"error":[],"result":{"descr":{"order":"buy 5000.00000000 XDGUSD @ market"}}}

Piccoli ordini reali e/o ordini con prezzi estremi

Per eseguire un test API completo utilizzando il parametro validate, ti consigliamo di effettuare market order molto piccoli (ordini non superiori alla dimensione minima consentita) oppure limit order il cui prezzo è ben distante dal prezzo di mercato attuale (ad esempio, un limit order per vendere ETH/USD a 800 $ quando il prezzo di mercato è 200 $).

Se esegui il test utilizzando ordini in tempo reale, il tuo codice API interagirà con la nostra API in condizioni reali, quindi ogni aspetto del test risulterà accurato (ad es., in che modo in tuoi ordini influiscono sul libro ordini, ecc.).

Per motivi di sicurezza, abbiamo recentemente interrotto il supporto per TLS 1.0 e 1.1. Se ricevi messaggi di errore di connessione SSL/TLS mentre cerchi di collegarti alla nostra API, è probabile che ciò dipenda dall’uso di uno di questi standard obsoleti. Dovrai modificare il tuo client API per forzare l'uso di TLS 1.2/1.3 o aggiornare .NET alla versione 4.6 o superiore, che utilizza TLS 1.2/1.3 come standard.

Il seguente Google Sheet può essere utilizzato per calcolare la firma di autenticazione delle API REST per qualsiasi combinazione di dati di input:

  • Chiave privata (segreta) API

  • Endpoint API (Balance, TradeBalance, QueryOrders, ecc.)

  • Valore nonce (per maggiori dettagli consulta la nostra pagina di supporto cos’è un nonce)

  • Parametri di input degli endpoint (asset=doge, ad esempio)

Il calcolatore può essere utilizzato per verificare che l'algoritmo di autenticazione sia stato implementato correttamente, evitando così potenziali problemi (in particolare errori imprevisti di chiave non valida) in una fase successiva del ciclo di sviluppo.

Istruzioni per l'uso

  1. 1

    Apri il calcolatore di autenticazione delle API REST in Chrome (o qualsiasi altro browser web recente)

  2. 2

    Crea una copia del calcolatore su Google Drive tramite il menu File -> Crea una copia (per eseguire questo passaggio, dovrai accedere al tuo account Google)

  3. 3

    Modifica i campi chiave API, endpoint API, valore nonce e dati di input con la tua chiave API e richiedi le informazioni necessarie

  4. 4

    Confronta la firma di autenticazione API ottenuta con il valore calcolato dal tuo codice API (i due valori devono corrispondere esattamente)

Per motivi di sicurezza, è consigliabile utilizzare il calcolatore di autenticazione con una chiave API temporanea e quindi eliminare la chiave API dal proprio account una volta che l'implementazione della firma di autenticazione risulta corretta.

Esempio

Screenshot_2021-06-21_at_14.42.35.png

L’utilizzo dei nostri wrapper della libreria dei client ti offre il vantaggio di non dover dedicare tempo e impegno per creare firme delle API, visto che questo lavoro è già stato fatto per te.

Se intendi effettuare soltanto chiamate a metodi pubblici, puoi scegliere di non utilizzare le librerie dei client poiché non è necessaria alcuna autenticazione.

Puoi trovare l'elenco dei wrapper disponibili qui.

Hai ancora bisogno di aiuto?