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
| Tarif | API |
|---|---|
| Free | Nein: Sie können keinen Schlüssel ausstellen |
| Pro | Ja: REST und die NATS-Subjects Ihres Tarifs |
| Max | Ja: 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
- Öffnen Sie Ihr Profil: Avatar oben rechts → Profile.
- Suchen Sie die Karte API keys.
- Geben Sie einen Namen für den Schlüssel ein, zum Beispiel „Bot auf dem Server“, und klicken Sie auf Issue key.
- Kopieren Sie den Schlüssel mit der Schaltfläche Copy und klicken Sie auf I saved it.
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"
| Host | Daten |
|---|---|
https://core-api.hel1.prod.hz.spreadfighter.cloud | Signale, Indikatoren, Screener |
https://depth-api.hel1.prod.hz.spreadfighter.cloud | Orderbuch |
https://funding-api.hel1.prod.hz.spreadfighter.cloud | Funding |
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:
| Muster | Was 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
| Was | Limit |
|---|---|
| Schlüssel | Bis zu 10 gültige Schlüssel pro Konto. Widerrufene zählen nicht |
| Widerruf eines Schlüssels | Wirkt 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 |
| Tarifwechsel | Kommt bei der Schlüsselprüfung innerhalb von etwa einer Minute an |
| Langsames Lesen von NATS | Kommt ein Abonnent mit dem Lesen nicht hinterher, puffert der Server bis zu 64 MB Daten und trennt die Verbindung |
| Neuverbindungen zu NATS | Hä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
- Konto – Profil, Tarif und die Karte mit den API-Schlüsseln.
- So wählen Sie einen Tarif – was Pro und Max enthalten.