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
/calendar/for-identifiersGET/calendar/upcomingGET/earnings/cacheDELETE/earnings/cache/{ticker}GET/earnings/calendar/{identifier}GET/earnings/confidence/{identifier}GET/earnings/coveragePOST/earnings/fetch/batchPOST/earnings/fetch/bulkGET/earnings/fetch/{identifier}GET/earnings/jobsGET/earnings/jobs/{job_id}POST/earnings/refresh/cachedPOST/earnings/sync/from-isinsPOST/earnings/sync/from-tickersPOST/earnings/sync/repairPOST/earnings/sync/stale/calendar/for-identifiersNimmt 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.
CalendarForIdentifiersRequest| Name | Typ | Bedeutung |
|---|---|---|
identifiers | array Pflicht | Identifiers |
days | integer optional · Vorgabe 14 | Days |
from_date | string optional | From Date |
to_date | string optional | To Date |
category | string optional | Category |
limit | integer optional · Vorgabe 5000 | Limit |
curl -X POST "$API/calendar/for-identifiers" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'/calendar/upcomingKommende Kalendertermine (aus calendar_events) innerhalb eines Fensters — heute, die naechsten 5 oder 14 Tage, oder ein ausdruecklicher Zeitraum — angereichert um Ticker, Name und ISIN.
| Name | Typ | Bedeutung |
|---|---|---|
days | integer, in der Abfrage optional · Vorgabe 7 | Look ahead this many days from today |
from_date | string, in der Abfrage optional | Override window start (YYYY-MM-DD) |
to_date | string, in der Abfrage optional | Override window end (YYYY-MM-DD) |
category | string, in der Abfrage optional | e.g. Ergebnisberichte, Dividenden, Hauptversammlungen |
limit | integer, in der Abfrage optional · Vorgabe 500 | — |
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"] }
]
}/earnings/cacheListet alle Ticker, die derzeit im Termine-Cache liegen.
Keine Parameter.
curl "$API/earnings/cache" \ -H "X-API-Key: $KEY"
/earnings/cache/{ticker}Verwirft die zwischengespeicherten Termine eines Tickers von Hand. Der naechste Aufruf von /confidence oder /fetch holt sie neu.
| Name | Typ | Bedeutung |
|---|---|---|
ticker | string, im Pfad Pflicht | — |
curl -X DELETE "$API/earnings/cache/SAP" \ -H "X-API-Key: $KEY"
/earnings/calendar/{identifier}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 abKonfidenz 0,9)
Nimmt Ticker, ISIN, CIK und WKN entgegen (rein numerische WKNs mit Praefix: wkn:623100).
| Name | Typ | Bedeutung |
|---|---|---|
identifier | string, im Pfad Pflicht | — |
min_confidence | number, in der Abfrage optional · Vorgabe 0.9 | Minimum confidence threshold (default 0.9). Only reads from MongoDB cache. |
curl "$API/earnings/calendar/SAP" \ -H "X-API-Key: $KEY"
/earnings/confidence/{identifier}Holt Termine aus allen Quellen und berechnet daraus einen quellenuebergreifenden Konfidenzwert. Das Ergebnis bleibt cache_hours Stunden gespeichert.
| Wert | Bedeutung |
|---|---|
| < 0,65 | Eine Quelle — vorlaeufig |
| 0,65–0,89 | Ein bis zwei Quellen — vor Nutzung pruefen |
| 0,90–0,95 | Zwei gute Quellen stimmen ueberein ✓ |
| > 0,95 | Drei und mehr Quellen stimmen ueberein ✓✓ |
| Name | Typ | Bedeutung |
|---|---|---|
identifier | string, im Pfad Pflicht | — |
force_refresh | boolean, in der Abfrage optional · Vorgabe False | Bypass cache and re-fetch |
cache_hours | integer, in der Abfrage optional · Vorgabe 24 | Max cache age in hours |
curl "$API/earnings/confidence/SAP" \ -H "X-API-Key: $KEY"
/earnings/coverageZustand 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.
curl "$API/earnings/coverage" \ -H "X-API-Key: $KEY"
/earnings/fetch/batchHolt 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.
BatchFetchRequest| Name | Typ | Bedeutung |
|---|---|---|
items | array Pflicht | Items |
origin | string optional · Vorgabe all | Origin |
curl -X POST "$API/earnings/fetch/batch" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'/earnings/fetch/bulkStartet einen Hintergrundjob, der Termine fuer eine grosse Liste von Identifiern holt.
Antwortet sofort mit einer job_id — Fortschritt ueber GET /earnings/jobs/{job_id}.
Obergrenze)
yf (schnell, speichert immer) oder all (fuenf Quellen,speichert ab Konfidenz 0,9)
``json {
"identifiers": ["AAPL", "MSFT", "DE0006231004", "isin:US5949181045"], "origin": "yf", "concurrency": 20
} ``
Keine Parameter.
BulkFetchRequest| Name | Typ | Bedeutung |
|---|---|---|
identifiers | array Pflicht | Identifiers |
origin | string optional · Vorgabe tiered | Origin |
concurrency | integer optional · Vorgabe 10 | Concurrency |
curl -X POST "$API/earnings/fetch/bulk" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'/earnings/fetch/{identifier}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:
| Format | Example |
|---|---|
| ISIN | DE0006231004 |
| CIK | 320193 |
| Ticker | AAPL, IFX.DE |
| WKN (auto) | A14YUR |
| WKN (digits) | wkn:623100 |
| Explicit | isin:DE0006231004 |
| Name | Typ | Bedeutung |
|---|---|---|
identifier | string, im Pfad Pflicht | — |
origin | string, 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. |
curl "$API/earnings/fetch/SAP" \ -H "X-API-Key: $KEY"
/earnings/jobsListet die juengsten Sammel-Jobs, neueste zuerst.
| Name | Typ | Bedeutung |
|---|---|---|
limit | integer, in der Abfrage optional · Vorgabe 20 | — |
curl "$API/earnings/jobs" \ -H "X-API-Key: $KEY"
/earnings/jobs/{job_id}Fragt den Stand eines Sammel-Jobs ab.
Werte von status:
pending — eingereiht, noch nicht begonnenrunning — laeuft (done / total zeigt den Fortschritt)done — beendet (failed nennt Teilfehler)| Name | Typ | Bedeutung |
|---|---|---|
job_id | string, im Pfad Pflicht | — |
curl "$API/earnings/jobs/job_7f3c" \ -H "X-API-Key: $KEY"
/earnings/refresh/cachedStartet einen Hintergrundjob, der die Termine fuer jeden Ticker neu holt, der bereits im earnings_cache liegt.
true werden nur Eintraege erneuert, die aelter alsstale_hours sind/fetch/bulkAntwortet sofort mit einer job_id.
Keine Parameter.
RefreshCachedRequest| Name | Typ | Bedeutung |
|---|---|---|
origin | string optional · Vorgabe tiered | Origin |
concurrency | integer optional · Vorgabe 10 | Concurrency |
stale_only | boolean optional · Vorgabe False | Stale Only |
stale_hours | integer optional · Vorgabe 24 | Stale Hours |
curl -X POST "$API/earnings/refresh/cached" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'/earnings/sync/from-isinsStartet 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=truetype_filters=["CS", "ADRC"]include_untyped_stocks=falseADRS wird als Synonym akzeptiert und auf ADRC normalisiert.
Keine Parameter.
SyncFromIsinsRequest| Name | Typ | Bedeutung |
|---|---|---|
origin | string optional · Vorgabe tiered | Origin |
concurrency | integer optional · Vorgabe 10 | Concurrency |
market | string optional · Vorgabe stocks | Market |
active | boolean optional · Vorgabe True | Active |
type_filters | array optional · Vorgabe ['CS', 'ADRC'] | Type Filters |
include_untyped_stocks | boolean optional · Vorgabe False | Include Untyped Stocks |
curl -X POST "$API/earnings/sync/from-isins" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'/earnings/sync/from-tickersStartet 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.
SyncFromTickersRequest| Name | Typ | Bedeutung |
|---|---|---|
origin | string optional · Vorgabe tiered | Origin |
concurrency | integer optional · Vorgabe 10 | Concurrency |
market | string optional · Vorgabe stocks | Market |
type_filter | string optional | Type Filter |
active | boolean optional · Vorgabe True | Active |
curl -X POST "$API/earnings/sync/from-tickers" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'/earnings/sync/repairArbeitet 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 aufdates.0schliesst die 861 guten Docs strukturell aus, sie koennen also nicht erneut Budget kosten.
only_unconfirmed=true — Docs mit Terminen, aber quality.confirmedfalse. 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.
RepairRequest| Name | Typ | Bedeutung |
|---|---|---|
origin | string optional · Vorgabe tiered | Origin |
concurrency | integer optional · Vorgabe 4 | Concurrency |
only_empty | boolean optional · Vorgabe True | Only Empty |
only_unconfirmed | boolean optional · Vorgabe False | Only Unconfirmed |
max_empty_streak | integer optional · Vorgabe 6 | Max Empty Streak |
limit | integer optional · Vorgabe 2000 | Limit |
curl -X POST "$API/earnings/sync/repair" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'/earnings/sync/staleFortlaufender 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.isin→isin:<ISIN>2. ersatzweiseyahoo_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.
SyncStaleRequest| Name | Typ | Bedeutung |
|---|---|---|
origin | string optional · Vorgabe tiered | Origin |
max_age_days | integer optional · Vorgabe 14 | Max Age Days |
concurrency | integer optional · Vorgabe 4 | Concurrency |
market | string optional · Vorgabe stocks | Market |
active | boolean optional · Vorgabe True | Active |
type_filter | string optional | Type Filter |
limit | integer optional | Limit |
curl -X POST "$API/earnings/sync/stale" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'