FXMacroData now offers a real-time Server-Sent Events (SSE) stream endpoint. Connect once and your application receives a live push notification the moment any economic release is ingested — covering all 18 supported currencies including Die Federal Reserve Entscheidungsprozesse, Die EZB Die Daten werden in den folgenden Tabellen erfasst:
Was gibt's Neues?
- Live-Streaming-Endpunkt von SSE
api.fxmacrodata.com/v1/stream/events - Kostenloser Plan: USD-Ankündigungsereignisse, kein API-Schlüssel erforderlich
- Profi-Plan: alle 18 Währungen, nach Währung und Indikator filtern
- Automatischer Herzschlag alle ~ 30 Sekunden, um Verbindungen durch Proxies am Leben zu erhalten
- Wiederholen Sie die Unterstützung über
Last-Event-IDHeader Nach einer Trennung verpasste Ereignisse wieder aufnehmen
Der Endpunkt
Der SSE-Stream ist unter der folgenden URL verfügbar. Dies ist eine direkte Verbindung zum FXMacroData API-Server Verwenden Sie nicht die fxmacrodata.com/api/...
Weg für die SSE, da diese Route durch die CDN-Schicht geht, die die Antwort puffert und den Live-Stream unterbricht.
https://api.fxmacrodata.com/v1/stream/events
Optionale Abfrageparameter lassen Sie den Feed einschränken:
currenciesKomma getrennte Liste:usd,eur,gbpindicatorsKomma getrennte Liste:inflation,policy_rateapi_keyProfessioneller API-Schlüssel für Währungen außerhalb des USD erforderlich
curl -N "https://api.fxmacrodata.com/v1/stream/events?currencies=usd&indicators=inflation,policy_rate"
Veranstaltungsformat
Jede veröffentlichte wirtschaftliche Version erzeugt einen Standard-W3C EventSource-Framework:
id: usd_inflation_1772109000
event: announcement
data: {"event_id": "usd_inflation_1772109000", "currency": "usd", "indicator": "inflation", "records_written": 1, "timestamp": 1772109002}
Die SSE-Nachricht ist ein operativer Auslöser, nicht die vollständige Datenlast. Datendokumente der API um die vollständige Zeitreihe einschließlich des neuen Wertes abzurufen.
Beispiel für Browser
In einem Browser, einheimisch. EventSource Das folgende Beispiel unterzeichnet USD-Lohnlisten außerhalb der Landwirtschaft
Und ... USD-Inflation mit der freien nicht authentifizierten Ebene:
const streamUrl = new URL("https://api.fxmacrodata.com/v1/stream/events");
streamUrl.searchParams.set("currencies", "usd");
streamUrl.searchParams.set("indicators", "non_farm_payrolls,inflation");
const source = new EventSource(streamUrl);
source.addEventListener("announcement", async (event) => {
const payload = JSON.parse(event.data);
console.log("Release received:", payload.currency, payload.indicator);
// Fetch the full record now that we know new data is available
const resp = await fetch(
`https://api.fxmacrodata.com/v1/announcements/${payload.currency}/${payload.indicator}`
);
const records = await resp.json();
console.log("Latest record:", records[records.length - 1]);
});
source.onerror = (err) => console.error("SSE error", err);
Beispiel für Python
Für einen Server-Workers, verwenden Sie requests - Im Streaming-Modus.
Last-Event-ID Auf Wiederanschluss , um alle verpassten Ereignisse wiederzuspielen:
import json, time, requests
API_KEY = "YOUR_API_KEY"
STREAM_URL = (
"https://api.fxmacrodata.com/v1/stream/events"
"?currencies=usd,eur&indicators=inflation,policy_rate&api_key=" + API_KEY
)
def consume():
last_id = None
while True:
headers = {"Accept": "text/event-stream"}
if last_id:
headers["Last-Event-ID"] = last_id
try:
with requests.get(STREAM_URL, headers=headers, stream=True, timeout=90) as r:
r.raise_for_status()
event = {}
for line in r.iter_lines(decode_unicode=True):
if not line:
if event.get("event") == "announcement" and event.get("data"):
payload = json.loads(event["data"])
last_id = event.get("id") or payload["event_id"]
print("New release:", payload)
event = {}
continue
if not line.startswith(":"):
field, _, value = line.partition(":")
event[field] = value.lstrip()
except requests.RequestException as e:
print(f"Disconnected: {e}. Retrying...")
time.sleep(3)
consume()
Verfügbarkeit des Plans
Kostenloser Plan
Nur USD-Ankündigungen. Keine API-Schlüssel erforderlich. api.fxmacrodata.com/v1/stream/events ohne Authentifizierungsparameter.
Berufsplan
Alle 18 Währungen. Filtern Sie nach einer beliebigen Kombination von Währungen und Indikatoren. Geben Sie Ihren API-Schlüssel als ?api_key=YOUR_KEY in der Abfragezeile.
Was soll ich als nächstes bauen?
Der SSE-Stream funktioniert am besten als Trigger-Layer auf Ihrem bestehenden REST-Workflow.
- Echtzeit-Aktualisierungen der Dashboard-Karten eine Platte aktualisieren, sobald neue Daten eingehen, anstatt alle N Minuten zu wählen.
- Handelsmeldungen vergleichen Sie die neueste Version mit Ihren Schwellenwerten und starten Sie sofort eine Benachrichtigung über Slack oder Webhook.
- Cache-Invalidierung das SSE-Ereignis als Signal zum erneuten Abrufen und Speichern des aktualisierten Indikator-Einsatzes verwenden.
- Kombiniert mit dem Veröffentlichungskalender wissen, was als nächstes geplant ist, und SSE als Live-Bestätigung verwenden, wenn es tatsächlich veröffentlicht wird.
Eine vollständige Schritt-für-Schritt-Version der Umsetzung finden Sie im SSE-Streaming-Anleitung zur Anwendung- Ich weiß .
Das FXMacroData Team