FAQ API avanzate

Ultimo aggiornamento: 25 nov 2025

Utilizzando gli endpoint di finanziamento dell'API REST, i clienti possono depositare/prelevare fondi da/verso il proprio account Kraken e richiedere lo stato in tempo reale di una transazione di deposito/prelievo.

Depositi/prelievi passano attraverso diverse fasi tra la richiesta iniziale e il completamento della transazione, quindi gli endpoint di finanziamento restituiranno un valore di stato diverso a seconda di quando vengono chiamati.

Si noti che i valori di stato originariamente provenivano dalle pagine 16/17 del documento Internet Financial Exchange Protocol (IFEX), ma i valori sono stati leggermente modificati per essere più adatti alle transazioni di criptovalute (non tutti i possibili valori di stato sono utilizzati, ad esempio).

Depositi

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

  • Regolato = Il deposito è stato ricevuto ma necessita ancora di ulteriori conferme sulla blockchain.

  • Successo = Il deposito ha raggiunto il numero richiesto di conferme sulla blockchain.

  • Fallimento = Il deposito è fallito (per una o più ragioni diverse).

Di seguito sono riportati alcuni esempi di come i valori di stato di cui sopra apparirebbero nelle risposte dall'endpoint DepositStatus:

Stato Regolato:{"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 Successo:{"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:

  • Iniziale = La richiesta di prelievo è stata ricevuta e ne viene verificata la validità (eventuali restrizioni di finanziamento sull'account, ecc.).

  • In sospeso = Il prelievo è in attesa di essere elaborato dal nostro gateway di finanziamento.

  • Regolato = Il prelievo è stato inviato alla blockchain (a questo punto l'ID della transazione blockchain diventerebbe disponibile).

  • Successo = La transazione di prelievo ha almeno 1 conferma sulla blockchain.

  • In attesa = Il prelievo è stato messo in attesa e deve essere verificato manualmente dal nostro team di finanziamento.

  • Fallimento = Il prelievo è fallito (per una o più ragioni diverse).

Di seguito sono riportati alcuni esempi di come i valori di stato di cui sopra apparirebbero nelle risposte dall'endpoint WithdrawStatus:

Stato Iniziale:{"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 sospeso:{"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 Regolato:{"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 Successo:{"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 Fallimento:{"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 sui depositi/prelievi sono disponibili nelle nostre pagine di supporto per finanziamenti in contanti e finanziamenti in criptovalute.

L'endpoint OHLC dell'API REST fornisce solo una quantità limitata di dati storici, in particolare 720 punti dati dell'intervallo richiesto. Ad esempio, la richiesta di dati OHLC a intervalli di 1 minuto restituirà i 720 minuti più recenti (12 ore) di dati.

Per le applicazioni che richiedono dati OHLC o tick aggiuntivi, è possibile recuperare l'intera cronologia di trading dei nostri mercati (il tempo e le vendite storiche) tramite l'endpoint Trades dell'API REST. L'OHLC per qualsiasi intervallo di tempo e qualsiasi intervallo può quindi essere creato dai dati storici di tempo e vendite.

L'endpoint Trades accetta un parametro opzionale chiamato 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 Trades come https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559347200000000000 restituirebbe il tempo e le vendite storiche 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 Trades dovrebbero sostituire il valore del parametro since con il valore del parametro last dai risultati della chiamata precedente, come https://api.kraken.com/0/public/Trades?pair=xbtusd&since=1559350785297011117.

L'utilizzo del valore speciale since di 0 (zero) restituirebbe il tempo e le vendite storiche dall'inizio del mercato (a partire dalla primissima transazione).

Un riferimento utente è un ID 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 l'annullamento degli ordini).

I riferimenti utente sono implementati per essere il più flessibili possibile e possono quindi essere utilizzati in una varietà di modi diversi, tra cui:

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

  • per raggruppare ordini correlati (come raggruppare ordini con diversi livelli di leva finanziaria),

  • o come ID di backup nel caso in cui l'ID ordine effettivo non sia noto.

Un riferimento utente deve essere un valore numerico compreso tra 1 e 2.147.483.647 (essenzialmente qualsiasi numero positivo a 32 bit), e potrebbe quindi essere implementato come un semplice contatore, come un valore casuale a 32 bit con segno, o anche come un timestamp in secondi (anche se questo fallirebbe dopo il 19 gennaio 2038 alle 3:14:07 UTC).

Inserimento di ordini con un riferimento utente

Gli ordini possono essere inseriti 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 agisce come 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 di ordini con un riferimento utente

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

$ ./krakenapi CancelOrder txid=16764529

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

Si noti che tutti gli ordini aperti con lo stesso riferimento utente verrebbero annullati, quindi è possibile effettuare una singola chiamata CancelOrder per annullare più ordini contemporaneamente (come indicato dal valore count di 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: Kraken ha abilitato il "Browser Integrity Check".

Ciò potrebbe verificarsi se la tua richiesta contiene intestazioni sospette. Ad esempio, la tua richiesta potrebbe non avere un user agent o utilizzare un user agent non standard; quindi, controlla le intestazioni della tua richiesta.

Se non riesci a creare richieste standard che il nostro sistema consente, inviaci una copia completa della/e richiesta/e che stai tentando, inclusi il tuo indirizzo IP e tutte le intestazioni. Queste informazioni ci consentirebbero di indagare ulteriormente.

API Futures

Per le nostre API REST e WebSocket 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 le nostre API REST/WebSocket spot e API FIX, offriamo attualmente un ambiente di test per i clienti qualificati. L'accesso a questo ambiente richiede un processo di onboarding che può essere avviato contattando direttamente il team API.

Testare la nostra API utilizzando il parametro di test "Validate"

Quando si effettua un ordine tramite gli endpoint AddOrder dell'API REST o addOrder dell'API WebSocket, il parametro di input "validate" può essere utilizzato per simulare l'ordine.

Chiamando AddOrder/addOrder con il parametro "validate" impostato su true (validate=1, validate=true, validate=anything, ecc.) i dettagli dell'ordine verranno controllati per eventuali errori, ma la risposta dell'API non includerà mai un ID ordine (che verrebbe sempre restituito per un ordine riuscito senza il parametro "validate").

Esempio di chiamata AddOrder con il parametro validate (nota l'ID ordine mancante):

bash

Bash

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

Ordini reali di piccole dimensioni e/o ordini con prezzi estremi

Per un test API completo utilizzando il parametro "Validate", consigliamo di effettuare ordini di mercato molto piccoli (ordini per la dimensione minima dell'ordine), o ordini limite con prezzi molto distanti dal prezzo di mercato attuale (ad esempio, effettuare un ordine limite per vendere ETH/USD a $800 quando il prezzo di mercato è $200).

Il test con ordini reali consente al codice API di interagire con la nostra API in condizioni reali, quindi ogni aspetto del test sarà accurato (come i tuoi ordini influenzano il book degli ordini, ecc.).

Per motivi di sicurezza, abbiamo recentemente interrotto il supporto per TLS 1.0 e 1.1. Se riscontri messaggi di errore di connessione SSL/TLS durante il tentativo di connessione alla nostra API, è probabile che ciò sia dovuto all'uso di uno di questi standard deprecati. Dovrai modificare il tuo client API per forzare l'uso di TLS 1.2/1.3 o aggiornare la tua versione di .NET alla 4.6 o superiore, che utilizza TLS 1.2/1.3 come standard.

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

  • Chiave privata (segreta) API

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

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

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

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

Istruzioni per l'uso

  1. 1

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

  2. 2

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

  3. 3

    Modifica i campi chiave API, endpoint API, valore nonce e dati di input con la tua chiave API e i dettagli della richiesta

  4. 4

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

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

Esempio

Screenshot_2021-06-21_at_14.42.35.png

Il vantaggio principale dell'utilizzo dei nostri wrapper di librerie client è che non è necessario dedicare tempo/sforzi a reinventare la ruota per la creazione delle firme API, è già stato fatto per te.

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

L'elenco dei wrapper disponibili è disponibile qui.

Hai ancora bisogno di aiuto?