Tradovate API

Tradovate API 401 live: Geräte-ID nicht genehmigt

Ihr Bot authentifiziert sich problemlos und handelt im Demokonto ohne Probleme, doch jede Live-Order kommt mit 401 Access is denied zurück. Das ist fast nie ein Fehler im Code, sondern ein fehlender Geräte-Handshake, den nur der Live-Modus erzwingt.

Geprüft vom PickMyTrade Trading Systems Team Zuletzt aktualisiert
· 6 Minuten Lesezeit
Tradovate-API-401-Antwort mit failureText Access is denied im Live-Modus

Sie richten einen Tradovate-Bot ein, sehen ihn tagelang tadellos gegen die Demo feuern, richten ihn dann auf Ihr live finanziertes Konto, und jede Order kommt mit einem 401 mit Access is denied zurück. Das ist eine der häufigsten Hürden, an denen API-Trader scheitern, und fast nie ein Fehler in Ihrem Code. Live-Tradovate erzwingt eine Regel, die die Demo stillschweigend ignoriert: Jede Authentifizierungsanfrage muss eine permanente, verifizierte deviceId mitführen, und dieses Gerät muss über einen per E-Mail zugesandten Link genehmigt werden, bevor es echte Orders routen kann. Der Fehler tritt in zwei Formen auf: ein einfaches 401 Access is denied, oder eine 200-Antwort, deren Payload failureReason: UnknownReason, failureText: Access is denied lautet, aber die Ursache ist derselbe fehlende Geräte-Handshake. Hier ist die vollständige Diagnose und Lösung, sowie wie eine Bridge wie PickMyTrade den Geräte-Genehmigungstanz komplett überspringt.

Schnelle Checkliste für einen reinen Live-401

  • Richten Sie jeden Aufruf auf den Live-Host, verwenden Sie https://live.tradovateapi.com/v1, niemals demo.tradovateapi.com, sobald Sie live gehen.
  • Senden Sie eine permanente deviceId, eine stabile UUID-artige Zeichenfolge, die Sie bei jedem Login von diesem Rechner wiederverwenden, nicht jedes Mal einen neuen Zufallswert.
  • Genehmigen Sie das Gerät, öffnen Sie die Tradovate-Geräte-Genehmigungs-E-Mail und bestätigen Sie den Link, bevor Sie erwarten, dass Live-Orders geroutet werden.
  • Rufen Sie Ihre Live-accountId erneut ab, Live- und Demokonten tragen unterschiedliche accountId-Werte; holen Sie die Live-ID von /account/list.
  • Verwenden Sie die korrekte accountSpec, das Live-Format (z. B. Vxxxxx) unterscheidet sich vom Demo-Format (DEMOxxxxx).
  • Bestätigen Sie die Order-Schreibberechtigung, der API-Schlüssel benötigt vollen Order-Zugriff, nicht nur schreibgeschützte Marktdaten.

Was „Access Is Denied“ bedeutet

Die Antwort Access is denied bedeutet, dass Tradovate Ihnen mitteilt, dass die Sitzung oder das Gerät, das die Anfrage stellt, nicht autorisiert wurde, auf einem Live-Konto zu agieren, obwohl Ihr Benutzername, Passwort und API-Secret alle korrekt sind. Deshalb ist es so verwirrend: Dieselben Anmeldedaten, die in der Demo problemlos authentifizieren und Orders platzieren, schlagen plötzlich fehl, sobald Sie zum Live-Host wechseln.

Sie sehen es vielleicht als sauberen HTTP-401, oder, irreführender, als HTTP-200, dessen JSON-Body eine Fehler-Payload wie [{'s': 200, 'i': 3, 'd': {'failureReason': 'UnknownReason', 'failureText': 'Access is denied'}}] trägt. Nur Live erzwingt verifizierte Geräte-IDs. Das ist einer der ganz wenigen Unterschiede zwischen Sim und Live, und der Hauptgrund, warum 401er bei Live auftauchen, aber nie bei Sim. Mit anderen Worten: Das ist ein Zwei-Faktor-/Geräte-Vertrauens-Gate, kein defekter Order-Body.

Häufigste Ursachen für einen Live-401

1. Sie greifen noch auf den Demo-Host zu

Die trivialste Ursache: Die Basis-URL wurde nie umgestellt. Demo-Token und Demo-Konto-IDs sind gegen den Live-Endpunkt wertlos, und umgekehrt. Wenn Sie nicht von demo.tradovateapi.com zu live.tradovateapi.com gewechselt haben, schlagen Anfragen für Live-Konten schlicht fehl.

2. Sie senden keine permanente deviceId

Die deviceId ist eine Zeichenfolge von bis zu 64 Zeichen, die dazu dient, das physische Gerät, das die Anfrage stellt, eindeutig und dauerhaft zu identifizieren. Die Demo prüft sie nie, deshalb lassen viele Integrationen sie weg oder erzeugen bei jedem Lauf einen Wegwerfwert. Live lehnt das ab. Bei jedem Login eine neue deviceId zu erzeugen, sieht außerdem jedes Mal wie ein brandneues, nicht genehmigtes Gerät aus, sodass der 401 nie verschwindet.

3. Das Gerät wurde nie über den E-Mail-Link genehmigt

Das ist die Ursache, die die meisten übersehen. Da Tradovate die deviceId als Teil seiner Zwei-Faktor-Authentifizierung behandelt, muss ein neues Gerät außerhalb des eigentlichen Kanals bestätigt werden. Sie erhalten eine E-Mail, um die Geräte-ID zu genehmigen, und solange Sie sie auf Live nicht genehmigen, verweigert es weiterhin den Zugriff. Kein Genehmigungsklick, kein Live-Zugriff, Punkt.

4. Sie haben die accountId oder accountSpec aus der Demo mit in Live übernommen

Ihre Live- und Demokonten teilen sich nicht dieselbe numerische accountId, und auch die Zeichenfolge accountSpec unterscheidet sich (eine Live-Spec gegenüber einer mit DEMO-Präfix). Verwenden Sie die Demo-Werte gegen den Live-Host wieder, erhalten Sie denselben Access is denied, selbst wenn das Gerät bereits vertrauenswürdig ist.

5. Dem API-Schlüssel fehlt der Order-Schreibzugriff

Wenn der Schlüssel oder die App nur für schreibgeschützten Zugriff oder Marktdaten bereitgestellt wurde, wird die Live-Order-Platzierung verweigert. Der Schlüssel benötigt vollständige Order-(Schreib-)Berechtigung, die über das API-Access-Add-on von Tradovate und die App-Konfiguration bereitgestellt wird.

So beheben Sie den Live-401: Schritt für Schritt

Eine fehlende oder nicht permanente deviceId beheben

1

Erzeugen Sie eine stabile deviceId im UUID-Stil

Erstellen Sie eine stabile, UUID-artige Zeichenfolge für die Maschine, auf der Ihr Bot läuft, zum Beispiel 71986488-882c-43db-c345-92a0a2ed9329. Ein strenges UUID-Format ist weniger wichtig, als dass der Wert eindeutig und unveränderlich ist; bis zu 64 Zeichen sind erlaubt.

2

Speichern Sie sie, erzeugen Sie sie nicht neu

Speichern Sie sie als Konstante, in einer Konfigurationsdatei, als Umgebungsvariable oder in einem Secrets-Store. Randomisieren Sie sie niemals pro Lauf.

3

Senden Sie sie bei jedem Login

Fügen Sie sie im Access-Token-Request-Body zusammen mit Ihren anderen Anmeldefeldern hinzu, name, password, appId, appVersion, cid, sec und deviceId, und verwenden Sie exakt dieselbe Zeichenfolge bei jedem weiteren Login von diesem Gerät wieder.

Tradovate-API-Access-Token-Request-Body mit dem permanenten deviceId-Feld

Das Gerät über den per E-Mail zugesandten Link genehmigen

1

Beobachten Sie Ihren Posteingang nach dem ersten Live-Versuch

Beobachten Sie nach Ihrem ersten Live-Authentifizierungsversuch mit einer neuen deviceId den Posteingang, der mit Ihrem Tradovate-Konto verknüpft ist, auf eine Geräte-Genehmigungsnachricht.

2

Prüfen Sie Spam, Junk und Werbung

Prüfen Sie die Ordner für Spam, Junk und Werbung, die Genehmigungs-E-Mail wird ständig herausgefiltert.

3

Bestätigen Sie den Genehmigungslink

Öffnen Sie die E-Mail und bestätigen Sie den Genehmigungslink. Das ist es, was das Gerät in der Live-Umgebung von „unbekannt“ auf „vertrauenswürdig“ umschaltet.

4

Führen Sie die Live-Authentifizierung erneut aus

Führen Sie Ihre Live-Authentifizierung erneut aus. Orders, die zuvor Access is denied zurückgegeben haben, sollten jetzt geroutet werden.

Tradovate-Geräte-Genehmigungs-E-Mail mit hervorgehobenem Geräte-Bestätigungslink

Den Host wechseln und Live-Kontowerte erneut abrufen

1

Richten Sie die Basis-URL auf Live

Ändern Sie Ihre Basis-URL für jede Anfrage in https://live.tradovateapi.com/v1, sobald Sie live sind.

2

Fordern Sie ein neues Live-Access-Token an

Fordern Sie ein neues Live-Access-Token vom Live-Host an.

3

Rufen Sie die Live-accountId erneut ab

Rufen Sie /account/list mit diesem Live-Token auf und lesen Sie die tatsächliche numerische accountId aus der Antwort.

4

Setzen Sie die Live-accountSpec

Setzen Sie accountSpec auf den für das Live-Konto angezeigten Wert (die Live-Format-Spec, nicht die mit DEMO-Präfix) und verwenden Sie die passende accountId in Ihrem Order-Body.

API-Access-Berechtigung bestätigen

1

Öffnen Sie die API-Access-Einstellungen

Melden Sie sich bei der Tradovate-Webplattform an und öffnen Sie den Einstellungsbereich, der API Access / verbundene Anwendungen regelt.

2

Überprüfen Sie die vollständigen Order-Berechtigungen

Überprüfen Sie, ob das API-Access-Add-on aktiviert ist und Ihre App über vollständige Order-Berechtigungen verfügt, nicht nur schreibgeschützt.

3

Überlegen Sie es sich zweimal, bevor Sie 2FA deaktivieren

Wenn Sie die Zwei-Faktor-Authentifizierung als Abkürzung deaktiviert haben, sollten Sie den Kompromiss kennen: Das Ausschalten von 2FA vermeidet den E-Mail-Schritt pro Gerät, schwächt aber die Kontosicherheit und lohnt sich bei einem finanzierten Live-Konto nicht. Das einmalige Genehmigen des Geräts ist der sicherere Weg.

Tradovate-Webplattform-API-Access-Einstellungen mit aktiviertem Add-on und vollständigen Order-Berechtigungen

Fehlerbehebungstabelle

Fehler / Symptom Bedeutung Lösung
401 Access is denied nur bei LiveGerät auf Live nicht verifiziert/genehmigtSenden Sie eine permanente deviceId und bestätigen Sie den per E-Mail zugesandten Geräte-Genehmigungslink
200 mit failureReason: UnknownReason, failureText: Access is deniedAuthentifizierung erfolgreich, aber Gerät/Sitzung ist für Live-Orders nicht vertrauenswürdigGenehmigen Sie das Gerät per E-Mail; verwenden Sie bei jedem Login dieselbe deviceId wieder
Funktioniert in Demo, schlägt bei Live mit identischem Code fehlNur der Host/die URL unterscheidet sichWechseln Sie die Basis-URL zu https://live.tradovateapi.com/v1
Access is denied, nachdem das Gerät genehmigt wurdeDemo-accountId/-accountSpec bei Live wiederverwendetRufen Sie die Live-accountId erneut von /account/list ab; setzen Sie die Live-accountSpec
Jeder Login löst eine neue Genehmigungs-E-Mail ausdeviceId wird bei jedem Lauf neu erzeugtSpeichern Sie eine stabile deviceId-Zeichenfolge dauerhaft und verwenden Sie sie wieder
Lese-Anfragen funktionieren, Order-Platzierung wird verweigertAPI-Schlüssel fehlt der Order-SchreibumfangAktivieren Sie das API-Access-Add-on und gewähren Sie vollständige Order-Berechtigungen

Wo PickMyTrade ins Spiel kommt

Wenn Sie Ihre TradingView-Signale lieber live handeln möchten, ohne Geräte-IDs, Genehmigungs-E-Mails und Endpunkt-Wechsel selbst zu verwalten, übernimmt PickMyTrade den Broker-Handshake für Sie:

  • Verwaltete Live-Verbindung die Geräte-Vertrauens- und Endpunkt-Verwaltung, die rohe API-Integrationen zu Fall bringt, läuft im Hintergrund ab, sodass Live-Orders beim ersten Mal geroutet werden.
  • Berechtigungs- und Risikofilter berücksichtigt den Datenvereinbarungsstatus Ihres Kontos und Prop-Firm-Limits, bevor überhaupt eine Order gesendet wird.
  • Rate-Limit-sicheres Routing staffelt den Order-Flow, sodass Authentifizierungs- und Order-Aufrufe nicht abgewiesen werden.
  • Multi-Konto-Synchronisierung spiegelt dasselbe Signal über mehrere Tradovate-Konten hinweg, ohne dass Sie einen separaten Geräte-Handshake pro Bot pflegen müssen.

Überspringen Sie den Geräte-Genehmigungstanz

PickMyTrade übernimmt den Live-Tradovate-Handshake für Sie, sodass Ihre TradingView-Signale beim ersten Mal geroutet werden, ohne deviceId oder Genehmigungs-E-Mails.

Starten Sie Ihre kostenlose 5-Tage-Testversion

Häufig gestellte Fragen

Die Demo erzwingt keine Geräteverifizierung, Live hingegen schon. Live benötigt eine permanente, genehmigte deviceId sowie den korrekten Live-Host, die accountId und die accountSpec. Code, der nur bei Live fehlschlägt, ist das klassische Anzeichen einer fehlenden Geräte-Genehmigung.

Es handelt sich um eine Zeichenfolge von bis zu 64 Zeichen, die die anfragende Maschine dauerhaft identifiziert. Ein UUID-artiger Wert wie 71986488-882c-43db-c345-92a0a2ed9329 funktioniert gut. Am wichtigsten ist, dass sie eindeutig für das Gerät ist und bei jedem Login unverändert wiederverwendet wird.

Prüfen Sie zunächst die Ordner für Spam, Junk und Werbung, da die Genehmigungsnachricht oft herausgefiltert wird. Bestätigen Sie, dass die E-Mail-Adresse in Ihrem Tradovate-Konto korrekt ist, versuchen Sie die Live-Authentifizierung erneut, um eine neue E-Mail auszulösen, und klicken Sie auf den Genehmigungslink, sobald er eintrifft.

Manche Trader tun das, weil es den E-Mail-Schritt pro Gerät entfernt, aber es schwächt die Sicherheit eines finanzierten Live-Kontos erheblich. Das einmalige Genehmigen des Geräts ist sicherer und muss nur pro neuer Maschine erfolgen.

Nein. Ein 401 wegen Token-Ablauf tritt nach etwa 90 Minuten auf, wenn Ihr Access-Token abläuft, und Sie beheben ihn, indem Sie das Token erneuern. Der Geräte-Genehmigungs-401 tritt bei Ihrer allerersten Live-Anfrage auf und wird behoben, indem Sie das Gerät als vertrauenswürdig einstufen.

Sie können eine deviceId pro physischem Gerät über mehrere Konten hinweg wiederverwenden, aber jedes eindeutige Gerät, von dem aus Sie sich authentifizieren, muss bei Live genehmigt werden. Wenn Sie viele Bots von vielen Maschinen aus betreiben, bedeutet das, jede Maschine einmal zu genehmigen.

Die häufigste verbleibende Ursache sind veraltete Demo-Werte: die Wiederverwendung der Demo-accountId oder -accountSpec gegen den Live-Host. Rufen Sie die Live-accountId erneut von /account/list ab und setzen Sie die korrekte Live-accountSpec.

Sie übergeben die deviceId in Ihrer Authentifizierungsanfrage. Die Tradovate-Web-App zeigt Geräte- und API-Details außerdem in ihren API- und Verbindungseinstellungen an, sodass Sie genehmigte Geräte dort überprüfen können.

Diese Anleitung dient ausschließlich Bildungs- und Informationszwecken und stellt keine Finanz-, Anlage- oder Handelsberatung dar. Der Handel mit Futures und anderen gehebelten Produkten birgt ein erhebliches Verlustrisiko und ist nicht für jeden Anleger geeignet. PickMyTrade ist eine unabhängige Drittanbieter-Automatisierungsplattform und weder mit Tradovate, Inc. verbunden noch von diesem unterstützt oder gesponsert. Alle zugehörigen Namen, Logos und Marken sind Eigentum ihrer jeweiligen Inhaber. Plattformfunktionen und -schritte ändern sich im Laufe der Zeit, bestätigen Sie daher stets den aktuellen Prozess in der offiziellen Tradovate-Plattform und -Dokumentation, bevor Sie handeln.