Zum Hauptinhalt springen

API für Entwickler

Wie Sie einen API-Schlüssel ausstellen und Daten von SpreadFighter in eigene Programme holen: REST mit dem Header X-API-KEY, NATS-Streams über Websocket, Subjects nach Tarif und Limits. Schlüssel gibt es in Pro und Max.

Was das ist​

Die Daten, die Sie im Dashboard sehen – Screener, Indikatoren, Orderbuch, Funding, Börsen-Streams –, können Sie in eigene Programme holen: einen Bot, eine Tabelle, Ihren eigenen Server. Dafür brauchen Sie einen API-Schlüssel. Derselbe Schlüssel funktioniert sowohl für REST als auch für NATS-Streams.

Die vollständige Dokumentation finden Sie auf der Seite API access in der App. Sie öffnet sich nach der Anmeldung und besteht aus den Abschnitten Start, REST, NATS, Subjects & plans und Limits. Dieser Artikel ist ein kurzer Überblick; die Listen der Endpunkte und Subjects finden Sie dort: Sie kommen vom Server und sind immer aktuell.

Tarife​

TarifAPI
FreeNein: Sie können keinen Schlüssel ausstellen
ProJa: REST und die NATS-Subjects Ihres Tarifs
MaxJa: REST und die NATS-Subjects Ihres Tarifs

Der Tarif wird bei jeder Verwendung des Schlüssels geprüft, nicht nur bei der Ausstellung. Endet Ihr Abonnement oder fällt Ihr Tarif auf Free zurück, hört der Schlüssel von selbst auf zu funktionieren; Sie müssen ihn nicht widerrufen. Ein Tarifwechsel kommt bei der Schlüsselprüfung innerhalb von etwa einer Minute an.

So erhalten Sie einen Schlüssel​

  1. Öffnen Sie Ihr Profil: Avatar oben rechts → Profile.
  2. Suchen Sie die Karte API keys.
  3. Geben Sie einen Namen für den Schlüssel ein, zum Beispiel „Bot auf dem Server“, und klicken Sie auf Issue key.
  4. Kopieren Sie den Schlüssel mit der Schaltfläche Copy und klicken Sie auf I saved it.
warnung

Der vollständige Schlüssel wird nur einmal angezeigt – bei der Ausstellung. Wir speichern nur seinen Hash, daher lässt sich der Schlüssel nicht wiederherstellen. Haben Sie ihn verloren, stellen Sie einen neuen aus und widerrufen Sie den alten.

Ein Schlüssel sieht so aus: sf_live_<user id>_<key id>_<secret>.

Die Schlüsselliste zeigt Name, Schlüssel-ID, Erstellungsdatum, letzte Nutzung und Status: active (gültig), revoked (widerrufen) oder expired (abgelaufen). Einen Schlüssel, den Sie nicht mehr brauchen, widerrufen Sie mit der Schaltfläche Revoke. Der Link How to connect in der Karte führt zur Dokumentationsseite.

REST​

REST dient für Abfragen auf Anforderung: Historie, Momentaufnahmen, Referenzdaten. Der Schlüssel wird ausschließlich im Header X-API-KEY übergeben. Als URL-Parameter oder im Request-Body wird er nicht akzeptiert – so gelangt er nicht in Proxy-Logs und den Browserverlauf.

curl -H "X-API-KEY: sf_live_..." \
"https://core-api.hel1.prod.hz.spreadfighter.cloud/api/hftActivities?symbol=BTCUSDT&timeFrame=1m&limit=10"
HostDaten
https://core-api.hel1.prod.hz.spreadfighter.cloudSignale, Indikatoren, Screener
https://depth-api.hel1.prod.hz.spreadfighter.cloudOrderbuch
https://funding-api.hel1.prod.hz.spreadfighter.cloudFunding

Die vollständige Liste der Endpunkte mit Parametern finden Sie im Swagger des Signaldienstes. Die beiden anderen Dienste haben kein Swagger.

NATS​

NATS liefert Streaming-Daten in Echtzeit. Sie verbinden sich per Websocket mit wss://nats-ws.hel1.prod.hz.spreadfighter.cloud und übergeben denselben Schlüssel als Token. Ihre Client-Bibliothek muss die Authentifizierung per Token unterstützen: In @nats-io/nats-core ist das das Feld token, in nats.go die Option nats.Token.

import { wsconnect } from "@nats-io/nats-core";

const nc = await wsconnect({
servers: ["wss://nats-ws.hel1.prod.hz.spreadfighter.cloud"],
token: "sf_live_...",
});

const sub = nc.subscribe("sf.core.scripts.screener.marketPower.1m.all.dict");
for await (const m of sub) {
console.log(m.json());
}

Ein Beispiel in Go finden Sie auf der Dokumentationsseite.

Subjects​

Die Namen der Subjects sind so aufgebaut:

MusterWas das ist
sf.core.scripts.screener.<name>.>Berechnungen der Screener
binance.futures.<stream>.>Börsen-Streams
private.<your-uid>.>Ihre eigenen Ereignisse
  • Das Zeichen > deckt den gesamten Rest eines Subjects ab, * genau ein Segment.
  • Ein Abonnement auf ein Subject außerhalb Ihres Tarifs erzeugt keinen Fehler: Es kommen einfach keine Daten an.
  • Veröffentlichen können Sie nur in Ihren eigenen Namensraum private.<your-uid>. In gemeinsame Streams zu schreiben ist nicht erlaubt.

Welche Subjects jeder Tarif freigibt, zeigt der Abschnitt Subjects & plans auf der Dokumentationsseite. Die Liste kommt vom Server – von derselben Stelle, die die Verbindungsrechte vergibt. Subjects, die Ihr Tarif nicht enthält, sind dort ausgegraut.

Limits​

WasLimit
SchlüsselBis zu 10 gültige Schlüssel pro Konto. Widerrufene zählen nicht
Widerruf eines SchlüsselsWirkt nach etwa einer Minute: Die Schlüsselprüfung wird zwischengespeichert. Ist ein Schlüssel kompromittiert, gehen Sie davon aus, dass er bis zu einer Minute noch funktioniert
TarifwechselKommt bei der Schlüsselprüfung innerhalb von etwa einer Minute an
Langsames Lesen von NATSKommt ein Abonnent mit dem Lesen nicht hinterher, puffert der Server bis zu 64 MB Daten und trennt die Verbindung
Neuverbindungen zu NATSHäufige Verbindungen eines Nutzers sind begrenzt: im Schnitt 12 pro Minute, bis zu 30 am Stück

Damit Sie nicht an das Leselimit stoßen, abonnieren Sie gezielt statt alles auf einmal, und erledigen Sie keine aufwendige Arbeit direkt im Message-Handler: Legen Sie Nachrichten in eine Warteschlange und verarbeiten Sie sie separat.

Verwandte Artikel​