Dokumentation → Earnings-Termine
Dokumentation

Earnings-Termine

Meldetermine mit Konfidenzwert. /calendar/* ist die Leseseite, /earnings/* zusätzlich die Quellenlage und der Betrieb.

Wozu das gut ist, steht auf der Produktseite: Earnings-Termine

POST /calendar/for-identifiers

Calendar For Identifiers

Nimmt eine Liste aus Tickern und/oder ISINs entgegen und liefert deren Kalendertermine innerhalb eines Fensters (heute + days, oder ein ausdruecklicher Zeitraum). ISINs werden ueber ticker_reference zu Tickern aufgeloest.

Keine Parameter.

Anfragekörper CalendarForIdentifiersRequest

NameTypBedeutung
identifiersarray
Pflicht
Identifiers
daysinteger
optional · Vorgabe 14
Days
from_datestring
optional
From Date
to_datestring
optional
To Date
categorystring
optional
Category
limitinteger
optional · Vorgabe 5000
Limit

Beispiel

curl -X POST "$API/calendar/for-identifiers" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'
GET /calendar/upcoming

Calendar Upcoming

Kommende Kalendertermine (aus calendar_events) innerhalb eines Fensters — heute, die naechsten 5 oder 14 Tage, oder ein ausdruecklicher Zeitraum — angereichert um Ticker, Name und ISIN.

NameTypBedeutung
daysinteger, in der Abfrage
optional · Vorgabe 7
Look ahead this many days from today
from_datestring, in der Abfrage
optional
Override window start (YYYY-MM-DD)
to_datestring, in der Abfrage
optional
Override window end (YYYY-MM-DD)
categorystring, in der Abfrage
optional
e.g. Ergebnisberichte, Dividenden, Hauptversammlungen
limitinteger, in der Abfrage
optional · Vorgabe 500

Beispiel

curl "$API/calendar/upcoming?days=14&category=earnings" \
  -H "X-API-Key: $KEY"
{
  "events": [
    { "isin": "FI0009000681", "name": "Nokia",
      "date": "2026-09-17", "category": "earnings",
      "confidence": 0.94, "sources": ["yf_info", "nasdaq", "marketscreener"] }
  ]
}
GET /earnings/cache

List Cache

Listet alle Ticker, die derzeit im Termine-Cache liegen.

Keine Parameter.

Beispiel

curl "$API/earnings/cache" \
  -H "X-API-Key: $KEY"
DELETE /earnings/cache/{ticker}

Invalidate Cache

Verwirft die zwischengespeicherten Termine eines Tickers von Hand. Der naechste Aufruf von /confidence oder /fetch holt sie neu.

NameTypBedeutung
tickerstring, im Pfad
Pflicht

Beispiel

curl -X DELETE "$API/earnings/cache/SAP" \
  -H "X-API-Key: $KEY"
GET /earnings/calendar/{identifier}

Earnings Calendar

Liefert den Terminkalender eines Tickers, nach Konfidenz gefiltert.

Dieser Endpunkt liest nur aus MongoDB — er holt nichts live nach. Liegt der Ticker noch nicht vor, rufen Sie zuerst auf:

  • GET /earnings/fetch/{identifier}?origin=yf (schnell, speichert immer)
  • GET /earnings/confidence/{identifier} (alle Quellen, speichert ab
Konfidenz 0,9)

Nimmt Ticker, ISIN, CIK und WKN entgegen (rein numerische WKNs mit Praefix: wkn:623100).

NameTypBedeutung
identifierstring, im Pfad
Pflicht
min_confidencenumber, in der Abfrage
optional · Vorgabe 0.9
Minimum confidence threshold (default 0.9). Only reads from MongoDB cache.

Beispiel

curl "$API/earnings/calendar/SAP" \
  -H "X-API-Key: $KEY"
GET /earnings/confidence/{identifier}

Earnings Confidence

Holt Termine aus allen Quellen und berechnet daraus einen quellenuebergreifenden Konfidenzwert. Das Ergebnis bleibt cache_hours Stunden gespeichert.

WertBedeutung
< 0,65Eine Quelle — vorlaeufig
0,65–0,89Ein bis zwei Quellen — vor Nutzung pruefen
0,90–0,95Zwei gute Quellen stimmen ueberein ✓
> 0,95Drei und mehr Quellen stimmen ueberein ✓✓
NameTypBedeutung
identifierstring, im Pfad
Pflicht
force_refreshboolean, in der Abfrage
optional · Vorgabe False
Bypass cache and re-fetch
cache_hoursinteger, in der Abfrage
optional · Vorgabe 24
Max cache age in hours

Beispiel

curl "$API/earnings/confidence/SAP" \
  -H "X-API-Key: $KEY"
GET /earnings/coverage

Earnings Coverage

Zustand der Termine-Lane in einem Aufruf.

Beantwortet: wie viele Ticker haben ueberhaupt Termine, wie viele sind bestaetigt, wie gross ist der Repair-Rueckstand, und welche Quelle liefert tatsaechlich. Das ist der Endpunkt, an dem sich der Repair-Fortschritt ablesen laesst.

Keine Parameter.

Beispiel

curl "$API/earnings/coverage" \
  -H "X-API-Key: $KEY"
POST /earnings/fetch/batch

Earnings Fetch Batch

Holt Termine fuer mehrere Identifier parallel (hoechstens 5 gleichzeitig).

Nimmt eine Liste von Identifiern entgegen — jeder kann Ticker, ISIN, WKN (mit wkn:-Praefix), CIK oder jede andere Form sein, die auch der Einzelabruf versteht.

origin gilt fuer alle Eintraege des Aufrufs.

Keine Parameter.

Anfragekörper BatchFetchRequest

NameTypBedeutung
itemsarray
Pflicht
Items
originstring
optional · Vorgabe all
Origin

Beispiel

curl -X POST "$API/earnings/fetch/batch" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'
POST /earnings/fetch/bulk

Earnings Fetch Bulk

Startet einen Hintergrundjob, der Termine fuer eine grosse Liste von Identifiern holt.

Antwortet sofort mit einer job_id — Fortschritt ueber GET /earnings/jobs/{job_id}.

  • identifiers: einfache Liste aus Tickern, ISINs, WKNs oder CIKs (ohne
Obergrenze)
  • origin: yf (schnell, speichert immer) oder all (fuenf Quellen,
speichert ab Konfidenz 0,9)
  • concurrency: parallele Abrufe (Vorgabe 10, hoechstens 50)

``json {

"identifiers": ["AAPL", "MSFT", "DE0006231004", "isin:US5949181045"],
"origin": "yf",
"concurrency": 20

} ``

Keine Parameter.

Anfragekörper BulkFetchRequest

NameTypBedeutung
identifiersarray
Pflicht
Identifiers
originstring
optional · Vorgabe tiered
Origin
concurrencyinteger
optional · Vorgabe 10
Concurrency

Beispiel

curl -X POST "$API/earnings/fetch/bulk" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'
GET /earnings/fetch/{identifier}

Earnings Fetch

Collect earnings data and save to MongoDB.

origin=tiered (Default) yfinance zuerst; liefert es nichts oder weniger

als Konfidenz 0.9, folgen die restlichen vier Quellen.
Beim Einzelabruf lohnt das Bestaetigen, deshalb wird hier
anders als im Bulk auch bei einem Treffer eskaliert.

origin=yf yfinance.info only. Diagnose-Modus — fuer Bulk ungeeignet:

genau diese Einstellung hat 28.497 leere Cache-Docs erzeugt.

origin=all All five sources, immer alle kontaktiert.

Gespeichert wird, sobald mindestens ein Termin gefunden wurde; die Guete steht im quality-Subdokument (confirmed ab Konfidenz 0.9). Frueher wurden Einzelquellen-Treffer verworfen.

Accepts any identifier:

FormatExample
ISINDE0006231004
CIK320193
TickerAAPL, IFX.DE
WKN (auto)A14YUR
WKN (digits)wkn:623100
Explicitisin:DE0006231004
NameTypBedeutung
identifierstring, im Pfad
Pflicht
originstring, in der Abfrage
optional · Vorgabe tiered
'tiered' → yfinance zuerst, bei Leerlauf/geringer Konfidenz die restlichen vier. 'yf' → nur yfinance.info — Diagnose-Modus. 'all' → immer alle fuenf Quellen.

Beispiel

curl "$API/earnings/fetch/SAP" \
  -H "X-API-Key: $KEY"
GET /earnings/jobs

List Jobs

Listet die juengsten Sammel-Jobs, neueste zuerst.

NameTypBedeutung
limitinteger, in der Abfrage
optional · Vorgabe 20

Beispiel

curl "$API/earnings/jobs" \
  -H "X-API-Key: $KEY"
GET /earnings/jobs/{job_id}

Get Job Status

Fragt den Stand eines Sammel-Jobs ab.

Werte von status:

  • pending — eingereiht, noch nicht begonnen
  • running — laeuft (done / total zeigt den Fortschritt)
  • done — beendet (failed nennt Teilfehler)
NameTypBedeutung
job_idstring, im Pfad
Pflicht

Beispiel

curl "$API/earnings/jobs/job_7f3c" \
  -H "X-API-Key: $KEY"
POST /earnings/refresh/cached

Earnings Refresh Cached

Startet einen Hintergrundjob, der die Termine fuer jeden Ticker neu holt, der bereits im earnings_cache liegt.

  • stale_only: bei true werden nur Eintraege erneuert, die aelter als
stale_hours sind
  • stale_hours: Altersschwelle in Stunden (Vorgabe 24)
  • origin / concurrency: wie bei /fetch/bulk

Antwortet sofort mit einer job_id.

Keine Parameter.

Anfragekörper RefreshCachedRequest

NameTypBedeutung
originstring
optional · Vorgabe tiered
Origin
concurrencyinteger
optional · Vorgabe 10
Concurrency
stale_onlyboolean
optional · Vorgabe False
Stale Only
stale_hoursinteger
optional · Vorgabe 24
Stale Hours

Beispiel

curl -X POST "$API/earnings/refresh/cached" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'
POST /earnings/sync/from-isins

Earnings Sync From Isins

Startet einen Hintergrundjob, der Termine fuer alle Eintraege in ticker_reference holt, die bereits eine ISIN haben und zu den angefragten Gattungen passen.

Vorgaben:

  • market="stocks"
  • active=true
  • type_filters=["CS", "ADRC"]
  • include_untyped_stocks=false

ADRS wird als Synonym akzeptiert und auf ADRC normalisiert.

Keine Parameter.

Anfragekörper SyncFromIsinsRequest

NameTypBedeutung
originstring
optional · Vorgabe tiered
Origin
concurrencyinteger
optional · Vorgabe 10
Concurrency
marketstring
optional · Vorgabe stocks
Market
activeboolean
optional · Vorgabe True
Active
type_filtersarray
optional · Vorgabe ['CS', 'ADRC']
Type Filters
include_untyped_stocksboolean
optional · Vorgabe False
Include Untyped Stocks

Beispiel

curl -X POST "$API/earnings/sync/from-isins" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'
POST /earnings/sync/from-tickers

Earnings Sync From Tickers

Startet einen Hintergrundjob, der Termine fuer jeden Ticker in ticker_reference holt (befuellt ueber POST /tickers/sync).

Die Filter grenzen ein, welche Ticker einbezogen werden (Vorgabe: aktive Aktien). Antwortet sofort mit einer job_id — Fortschritt ueber GET /earnings/jobs/{job_id}.

Keine Parameter.

Anfragekörper SyncFromTickersRequest

NameTypBedeutung
originstring
optional · Vorgabe tiered
Origin
concurrencyinteger
optional · Vorgabe 10
Concurrency
marketstring
optional · Vorgabe stocks
Market
type_filterstring
optional
Type Filter
activeboolean
optional · Vorgabe True
Active

Beispiel

curl -X POST "$API/earnings/sync/from-tickers" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'
POST /earnings/sync/repair

Earnings Sync Repair

Arbeitet die Altlast der Termine-Lane ab.

Hintergrund: origin="yf" war Default auf vier Request-Modellen und kontaktiert nur yfinance. Fuer 28.497 der 29.358 Ticker fand yfinance keinen Termin, die anderen fuenf Quellen wurden nie gefragt, und weil der leere Write fetched_at gesetzt hat, galten die Docs anschliessend 14 Tage als frisch — der Zustand hat sich selbst stabilisiert.

Zwei Durchgaenge:

  • only_empty=true (Default) — Docs ohne jeden Termin. Das
$exists-Praedikat auf dates.0 schliesst die 861 guten Docs
strukturell aus, sie koennen also nicht erneut Budget kosten.
  • only_unconfirmed=true — Docs mit Terminen, aber quality.confirmed
false. Hebt Einzelquellen-Treffer von ~0.69 auf >=0.9, indem eskaliert
wird, bis eine zweite Quelle bestaetigt.

Fortsetzbar ohne Offsets: die Worklist wird aus probe_at und quality.empty_streak abgeleitet, sortiert nach probe_at aufsteigend. Ein Abbruch bei Item 12.000 kostet nichts — der naechste Aufruf leitet die verbleibenden neu ab. Ist nichts mehr faellig, kommt 422 zurueck; der Cron-Loop wertet das als Erfolg und terminiert damit von selbst.

Keine Parameter.

Anfragekörper RepairRequest

NameTypBedeutung
originstring
optional · Vorgabe tiered
Origin
concurrencyinteger
optional · Vorgabe 4
Concurrency
only_emptyboolean
optional · Vorgabe True
Only Empty
only_unconfirmedboolean
optional · Vorgabe False
Only Unconfirmed
max_empty_streakinteger
optional · Vorgabe 6
Max Empty Streak
limitinteger
optional · Vorgabe 2000
Limit

Beispiel

curl -X POST "$API/earnings/sync/repair" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'
POST /earnings/sync/stale

Earnings Sync Stale

Fortlaufender Termine-Sync. Geht ticker_reference durch und holt nur die Ticker neu, deren Termine im earnings_cache fehlen oder aelter als max_age_days sind (gemessen an earnings_cache.fetched_at).

Aufloesung je Ticker:

1. ticker_reference.isinisin:<ISIN>
2. ersatzweise yahoo_profiles.yahoo_symbol (ueber den Ticker verbunden)
   → ticker:<SYMBOL>
3. zuletzt der blosse Ticker          → ticker:<TICKER>

Geholt wird gestuft (origin=tiered). Liefert eine job_id — Fortschritt ueber GET /earnings/jobs/{job_id}.

Keine Parameter.

Anfragekörper SyncStaleRequest

NameTypBedeutung
originstring
optional · Vorgabe tiered
Origin
max_age_daysinteger
optional · Vorgabe 14
Max Age Days
concurrencyinteger
optional · Vorgabe 4
Concurrency
marketstring
optional · Vorgabe stocks
Market
activeboolean
optional · Vorgabe True
Active
type_filterstring
optional
Type Filter
limitinteger
optional
Limit

Beispiel

curl -X POST "$API/earnings/sync/stale" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'