Errore 401 dell'API Tradovate live: ID dispositivo non approvato
Il Suo bot si autentica senza problemi e fa trading in demo senza intoppi, poi ogni ordine live restituisce 401 Access is denied. Quasi mai si tratta di un bug nel codice: è un handshake del dispositivo mancante che solo il live impone.
Configura un bot Tradovate, lo osserva funzionare senza intoppi in demo per giorni, poi lo punta sul suo conto live finanziato, e ogni ordine torna con un 401 con Access is denied. È uno degli ostacoli più comuni in cui si imbattono i trader che usano l'API, e quasi mai è un bug nel suo codice. Tradovate live applica una regola che la demo ignora silenziosamente: ogni richiesta di autenticazione deve trasportare un deviceId permanente e verificato, e quel dispositivo deve essere approvato tramite un link inviato via email prima di poter instradare ordini reali. L'errore si presenta in un paio di forme, un semplice 401 Access is denied, oppure una risposta 200 il cui payload riporta failureReason: UnknownReason, failureText: Access is denied, ma la causa di fondo è lo stesso handshake del dispositivo mancante. Ecco la diagnosi completa e la soluzione, oltre a come un bridge come PickMyTrade evita del tutto questa trafila di approvazione del dispositivo.
Checklist rapida per un 401 esclusivo del live
- Indirizzi ogni chiamata all'host live, usi
https://live.tradovateapi.com/v1, maidemo.tradovateapi.com, una volta passato al live. - Invii un
deviceIdpermanente, una stringa stabile in formato UUID da riutilizzare a ogni login da quella macchina, non un nuovo valore casuale ogni volta. - Approvi il dispositivo, apra l'email di approvazione dispositivo di Tradovate e confermi il link prima di aspettarsi che gli ordini live vengano instradati.
- Recuperi di nuovo il suo
accountIdlive, i conti live e demo hanno valori diaccountIddiversi; recuperi quello live da/account/list. - Usi l'
accountSpeccorretto, il formato live (ad es.Vxxxxx) differisce dal formato demo (DEMOxxxxx). - Confermi il diritto di scrittura degli ordini, la chiave API necessita di accesso completo agli ordini, non solo di dati di mercato in sola lettura.
Cosa significa “Access Is Denied”
La risposta Access is denied è il modo in cui Tradovate le comunica che la sessione o il dispositivo che effettua la richiesta non è stato autorizzato ad agire su un conto live, anche se nome utente, password e API secret sono tutti corretti. Per questo è così confuso: le stesse credenziali che si autenticano senza problemi e piazzano ordini in demo falliscono improvvisamente non appena passa all'host live.
Potrebbe vederlo come un 401 HTTP pulito, oppure, in modo più fuorviante, come un 200 HTTP il cui corpo JSON contiene un payload di errore come [{'s': 200, 'i': 3, 'd': {'failureReason': 'UnknownReason', 'failureText': 'Access is denied'}}]. Solo il live impone ID dispositivo verificati. È una delle pochissime differenze tra sim e live, ed è il motivo principale per cui i 401 compaiono in live ma mai in sim. In altre parole, si tratta di un gate di fiducia a due fattori / dispositivo, non di un corpo dell'ordine difettoso.
Cause principali di un 401 live
1. Sta ancora colpendo l'host demo
La causa più banale: l'URL di base non è mai stato cambiato. I token demo e gli ID conto demo non hanno alcun valore contro l'endpoint live, e viceversa. Se non è passato da demo.tradovateapi.com a live.tradovateapi.com, le richieste falliranno per i conti live, semplicemente.
2. Non sta inviando un deviceId permanente
Il deviceId è una stringa fino a 64 caratteri pensata per identificare in modo univoco e permanente il dispositivo fisico che effettua la richiesta. La demo non lo verifica mai, quindi molte integrazioni lo omettono o generano un valore usa e getta a ogni esecuzione. Il live lo rifiuta. Rigenerare un nuovo deviceId a ogni login fa anche sembrare, ogni volta, un dispositivo del tutto nuovo e non approvato, così il 401 non si risolve mai.
3. Il dispositivo non è mai stato approvato tramite il link via email
Questa è la causa che sfugge alla maggior parte delle persone. Poiché Tradovate tratta il deviceId come parte della propria autenticazione a due fattori, un dispositivo nuovo deve essere confermato fuori banda. Riceverà un'email per approvare l'ID dispositivo, e finché non lo approva in live, l'accesso continuerà a essere negato. Senza clic di approvazione, niente accesso live, punto.
4. Ha portato l'accountId o l'accountSpec della demo nel live
I suoi conti live e demo non condividono lo stesso accountId numerico, e anche la stringa accountSpec è diversa (una spec live rispetto a una con prefisso DEMO). Riutilizzi i valori demo contro l'host live e otterrà lo stesso Access is denied, anche dopo che il dispositivo è considerato attendibile.
5. Alla chiave API manca l'accesso in scrittura agli ordini
Se la chiave o l'app sono state configurate con ambito di sola lettura o solo dati di mercato, il piazzamento di ordini live viene negato. La chiave necessita del diritto completo sugli ordini (scrittura), ottenibile tramite il componente aggiuntivo API Access di Tradovate e la configurazione dell'app.
Come risolvere il 401 live: passo dopo passo
Risolvere un deviceId mancante o non permanente
Generi un deviceId stabile in formato UUID
Crei una stringa stabile in formato UUID per la macchina che esegue il suo bot, ad esempio 71986488-882c-43db-c345-92a0a2ed9329. Il formato UUID rigoroso conta meno rispetto al fatto che il valore sia univoco e immutabile; sono ammessi fino a 64 caratteri.
Lo memorizzi, non lo rigeneri
Lo memorizzi come costante, in un file di configurazione, in una variabile d'ambiente o in un secrets store. Non lo randomizzi mai a ogni esecuzione.
Lo invii a ogni login
Lo includa nel corpo della richiesta del token di accesso insieme agli altri campi delle credenziali, name, password, appId, appVersion, cid, sec e deviceId, e riutilizzi esattamente la stessa stringa a ogni login successivo da quel dispositivo.

Approvare il dispositivo tramite il link inviato via email
Controlli la sua casella di posta dopo il primo tentativo live
Dopo il primo tentativo di autenticazione live con un nuovo deviceId, controlli la casella di posta collegata al suo account Tradovate per un messaggio di approvazione dispositivo.
Controlli spam, posta indesiderata e promozioni
Controlli le cartelle spam, posta indesiderata e promozioni: l'email di approvazione viene filtrata di continuo.
Confermi il link di approvazione
Apra l'email e confermi il link di approvazione. È questo che fa passare il dispositivo da “sconosciuto” a “attendibile” nell'ambiente live.
Riesegua l'autenticazione live
Riesegua la sua autenticazione live. Gli ordini che restituivano Access is denied ora dovrebbero essere instradati.

Cambiare host e recuperare di nuovo i valori del conto live
Indirizzi l'URL di base al live
Cambi l'URL di base in https://live.tradovateapi.com/v1 per ogni richiesta una volta passato al live.
Richieda un nuovo token di accesso live
Richieda un nuovo token di accesso live dall'host live.
Recuperi di nuovo l'accountId live
Chiami /account/list con quel token live e legga l'accountId numerico reale dalla risposta.
Imposti l'accountSpec live
Imposti accountSpec sul valore mostrato per il conto live (la spec in formato live, non quella con prefisso DEMO) e usi l'accountId corrispondente nel corpo del suo ordine.
Confermare il diritto API Access
Apra le impostazioni API Access
Effettui l'accesso alla piattaforma web di Tradovate e apra l'area delle impostazioni che governa API Access / applicazioni connesse.
Verifichi i permessi completi sugli ordini
Verifichi che il componente aggiuntivo API Access sia abilitato e che la sua app abbia permessi completi sugli ordini, non solo in sola lettura.
Ci pensi due volte prima di disabilitare la 2FA
Se ha disabilitato l'autenticazione a due fattori come scorciatoia, tenga presente il compromesso: disattivare la 2FA evita il passaggio email per dispositivo, ma indebolisce la sicurezza dell'account e non ne vale la pena su un conto live finanziato. Approvare il dispositivo una volta è la strada più sicura.

Tabella di risoluzione dei problemi
| Errore / sintomo | Significato | Soluzione |
|---|---|---|
| 401 Access is denied solo in live | Dispositivo non verificato/approvato in live | Invii un deviceId permanente e confermi il link di approvazione dispositivo inviato via email |
| 200 con failureReason: UnknownReason, failureText: Access is denied | L'autenticazione è riuscita ma il dispositivo/sessione non è attendibile per gli ordini live | Approvi il dispositivo via email; riutilizzi lo stesso deviceId a ogni login |
| Funziona in demo, fallisce in live con codice identico | Cambia solo l'host/URL | Cambi l'URL di base in https://live.tradovateapi.com/v1 |
| Access is denied dopo l'approvazione del dispositivo | accountId/accountSpec demo riutilizzati in live | Recuperi di nuovo l'accountId live da /account/list; imposti l'accountSpec live |
| Ogni login genera una nuova email di approvazione | Il deviceId viene rigenerato a ogni esecuzione | Persista una stringa deviceId stabile e la riutilizzi |
| Le richieste di lettura funzionano, il piazzamento ordini è negato | Alla chiave API manca l'ambito di scrittura ordini | Abiliti il componente aggiuntivo API Access e conceda i permessi completi sugli ordini |
Dove si inserisce PickMyTrade
Se preferisce fare trading dal vivo con i suoi segnali TradingView senza gestire manualmente ID dispositivo, email di approvazione e cambi di endpoint, PickMyTrade si occupa dell'handshake con il broker al suo posto:
- Connessione live gestita la gestione della fiducia del dispositivo e degli endpoint che fa inciampare le integrazioni API grezze avviene dietro le quinte, così gli ordini live vengono instradati al primo tentativo.
- Filtri di diritti e rischio rispetta lo stato dell'accordo sui dati del suo account e i limiti della prop firm prima ancora che un ordine venga inviato.
- Instradamento sicuro rispetto ai rate limit distanzia il flusso degli ordini in modo che le chiamate di autenticazione e ordine non vengano respinte.
- Sincronizzazione multi-account replica lo stesso segnale su più account Tradovate senza dover mantenere un handshake del dispositivo separato per ogni bot.
Salti la trafila di approvazione del dispositivo
PickMyTrade gestisce l'handshake live con Tradovate al suo posto, così i suoi segnali TradingView vengono instradati al primo tentativo, senza bisogno di deviceId o email di approvazione.
Inizi la sua prova gratuita di 5 giorniDomande frequenti
La demo non impone la verifica del dispositivo; il live sì. Il live richiede un deviceId permanente e approvato, oltre all'host, all'accountId e all'accountSpec live corretti. Un codice che fallisce solo in live è il segnale classico di una lacuna nell'approvazione del dispositivo.
È una stringa fino a 64 caratteri che identifica in modo permanente la macchina che invia le richieste. Un valore in formato UUID come 71986488-882c-43db-c345-92a0a2ed9329 funziona bene. Ciò che conta di più è che sia univoco per il dispositivo e riutilizzato invariato a ogni login.
Controlli prima le cartelle spam, posta indesiderata e promozioni, poiché il messaggio di approvazione viene spesso filtrato. Confermi che l'indirizzo email del suo account Tradovate sia corretto, riprovi l'autenticazione live per generare una nuova email, e clicchi sul link di approvazione non appena arriva.
Alcuni trader lo fanno, perché elimina il passaggio email per dispositivo, ma indebolisce sensibilmente la sicurezza di un conto live finanziato. Approvare il dispositivo una volta è più sicuro e va fatto solo per ogni nuova macchina.
No. Un 401 da scadenza del token compare dopo circa 90 minuti, quando il suo token di accesso scade, e si risolve rinnovando il token. Il 401 di approvazione dispositivo si verifica alla primissima richiesta live e si risolve rendendo attendibile il dispositivo.
Può riutilizzare un deviceId per dispositivo fisico su più account, ma ogni dispositivo distinto da cui si autentica deve essere approvato in live. Eseguire molti bot da molte macchine significa approvare ciascuna macchina una volta.
La causa residua più comune sono i valori demo obsoleti: riutilizzare l'accountId o l'accountSpec demo contro l'host live. Recuperi di nuovo l'accountId live da /account/list e imposti l'accountSpec live corretto.
Fornisce il deviceId nella sua richiesta di autenticazione. L'app web di Tradovate mostra anche i dettagli di dispositivo e API nelle sue impostazioni API e di connessione, dove può rivedere i dispositivi approvati.
Questa guida ha scopo esclusivamente educativo e informativo e non costituisce consulenza finanziaria, di investimento o di trading. Il trading di futures e altri prodotti a leva comporta un rischio sostanziale di perdita e non è adatto a ogni investitore. PickMyTrade è una piattaforma di automazione indipendente di terze parti e non è affiliata, sostenuta o sponsorizzata da Tradovate, Inc. Tutti i nomi, i loghi e i marchi correlati sono di proprietà dei rispettivi titolari. Le funzionalità e i passaggi della piattaforma cambiano nel tempo, quindi confermi sempre il processo attuale nella piattaforma e nella documentazione ufficiali di Tradovate prima di agire.