Identifier resolution, master data, exchanges and indices. /tickers/resolve/{identifier} is the entry point when you do not know what kind of identifier you hold.
What it is good for is on the product page: Reference data
/exchangesPOST/exchanges/constituents/syncPOST/exchanges/syncGET/exchanges/{entity_value}GET/exchanges/{exchange_ref}/constituentsPOST/exchanges/{exchange_ref}/constituents/syncGET/onvista/common/branchesGET/onvista/common/countriesGET/onvista/common/currenciesGET/onvista/common/instrument_typesGET/onvista/common/sectorsPOST/onvista/common/syncPOST/onvista/common/{category}/syncGET/tickersPOST/tickers/backfill-cikGET/tickers/by-keyword/{keyword_id}POST/tickers/enrich/isinGET/tickers/enrich/isin/preview/{ticker_symbol}POST/tickers/enrich/onvista-stockPOST/tickers/enrich/onvista-stock/staleGET/tickers/jobsGET/tickers/jobs/{job_id}GET/tickers/keywordsPOST/tickers/quality/scoreGET/tickers/quality/statsGET/tickers/resolve/{identifier}POST/tickers/syncPOST/tickers/sync/earnings-calendarGET/tickers/{ticker_symbol}GET/wiki/jobsGET/wiki/jobs/{job_id}POST/wiki/jobs/{job_id}/cancelPOST/wiki/sync/onvista-stock-csv/exchangesReturn exchange reference entries stored in MongoDB.
| Name | Type | Meaning |
|---|---|---|
search | string, in query optional | Filter by name (regex) |
display_type | string, in query optional | — |
limit | integer, in query optional · default 100 | — |
offset | integer, in query optional · default 0 | — |
curl "$API/exchanges" \ -H "X-API-Key: $KEY"
/exchanges/constituents/syncFetch constituents for stored exchanges and merge them into ticker_reference.
| Name | Type | Meaning |
|---|---|---|
search | string, in query optional | Only sync matching exchanges |
limit | integer, in query optional · default 250 | Max number of exchanges to process |
rate_limit | integer, in query optional · default 120 | Max onvista requests per minute |
curl -X POST "$API/exchanges/constituents/sync" \ -H "X-API-Key: $KEY"
/exchanges/syncFetch all world exchange indices from OnVista and persist/overwrite in MongoDB.
Safe to call repeatedly — subsequent calls update existing documents.
| Name | Type | Meaning |
|---|---|---|
concurrency | integer, in query optional · default 10 | Parallel OnVista requests |
rate_limit | integer, in query optional · default 60 | Max requests per minute |
curl -X POST "$API/exchanges/sync" \ -H "X-API-Key: $KEY"
/exchanges/{entity_value}Retrieve a single exchange by entityValue, name, url_name, or search_term.
| Name | Type | Meaning |
|---|---|---|
entity_value | string, in path required | — |
curl "$API/exchanges/SAP" \ -H "X-API-Key: $KEY"
/exchanges/{exchange_ref}/constituentsReturn stocks for an exchange/index from ticker_reference. If the cache is empty, the endpoint auto-syncs that exchange once.
| Name | Type | Meaning |
|---|---|---|
exchange_ref | string, in path required | — |
search | string, in query optional | Filter cached constituents by ticker/name |
limit | integer, in query optional · default 100 | — |
offset | integer, in query optional · default 0 | — |
refresh | boolean, in query optional · default False | Refresh from onvista before reading from MongoDB |
curl "$API/exchanges/SAP/constituents" \ -H "X-API-Key: $KEY"
/exchanges/{exchange_ref}/constituents/syncFetch constituents for one exchange/index and merge them into ticker_reference.
| Name | Type | Meaning |
|---|---|---|
exchange_ref | string, in path required | — |
curl -X POST "$API/exchanges/SAP/constituents/sync" \ -H "X-API-Key: $KEY"
/onvista/common/branchesReturn cached branch/industry list; auto-fetches on first call.
No parameters.
curl "$API/onvista/common/branches" \ -H "X-API-Key: $KEY"
/onvista/common/countriesReturn cached country list; auto-fetches on first call.
No parameters.
curl "$API/onvista/common/countries" \ -H "X-API-Key: $KEY"
/onvista/common/currenciesReturn cached currency list (official=true); auto-fetches on first call.
No parameters.
curl "$API/onvista/common/currencies" \ -H "X-API-Key: $KEY"
/onvista/common/instrument_typesReturn cached instrument-type list; auto-fetches on first call.
No parameters.
curl "$API/onvista/common/instrument_types" \ -H "X-API-Key: $KEY"
/onvista/common/sectorsReturn cached sector list; auto-fetches on first call.
No parameters.
curl "$API/onvista/common/sectors" \ -H "X-API-Key: $KEY"
/onvista/common/syncForce-refresh all five reference categories from onvista.
No parameters.
curl -X POST "$API/onvista/common/sync" \ -H "X-API-Key: $KEY"
/onvista/common/{category}/syncForce-refresh a single reference category from onvista.
| Name | Type | Meaning |
|---|---|---|
category | string, in path required | — |
curl -X POST "$API/onvista/common/SAP/sync" \ -H "X-API-Key: $KEY"
/tickersReturn ticker reference entries stored in MongoDB.
Results are sorted by `ranking` ascending (lower rank first; tickers without a ranking last), then alphabetically by name/ticker. The search covers ticker, name and ISIN.
| Name | Type | Meaning |
|---|---|---|
market | string, in query optional | — |
active | boolean, in query optional | — |
type | string, in query optional | — |
search | string, in query optional | — |
ranking_min | integer, in query optional | Nur Ticker mit ranking >= diesem Wert |
ranking_max | integer, in query optional | Nur Ticker mit ranking <= diesem Wert |
unranked | boolean, in query optional | true = nur Ticker ohne ranking-Wert |
limit | integer, in query optional · default 100 | — |
offset | integer, in query optional · default 0 | — |
curl "$API/tickers" \ -H "X-API-Key: $KEY"
/tickers/backfill-cikBackfills CIKs from the SEC ticker-to-CIK map (company_tickers.json) into ticker_reference — the precondition for /financials/sync/all to cover all US securities. Collision-safe (only where the CIK is empty and the ISIN is US or empty).
| Name | Type | Meaning |
|---|---|---|
min_days_between | integer, in query optional | — |
curl -X POST "$API/tickers/backfill-cik" \ -H "X-API-Key: $KEY"
/tickers/by-keyword/{keyword_id}All stocks whose keywords_multilingual contain the given keyword_id — language-independent (the keyword_id is the same across all languages).
(ordinary share, ADR, CDR, …) are joined into ONE company viacompany_id— never into a different company. Every result carriescompany_id,company_name,iso_country, theprimarymain listing,listings[](all listings including ISINs and tickers, even those without a keyword of their own) as well astickers/isins— so a newsroom can serve the articles for ALL listings.count= number of companies.
Sorted by keyword confidence descending. Example: /tickers/by-keyword/enterprise_software.
| Name | Type | Meaning |
|---|---|---|
keyword_id | string, in path required | — |
group | string, in query optional · default company | company = Notierungen je Unternehmen verbinden; listing = flache Einzelnotierungen |
active | boolean, in query optional | nur aktive/inaktive Titel |
min_confidence | number, in query optional | nur Keywords mit confidence >= Wert |
sort | string, in query optional · default confidence | confidence = beste Keyword-Zuordnung zuerst; market_cap = groesste Marktkapitalisierung zuerst |
limit | integer, in query optional · default 2000 | — |
offset | integer, in query optional · default 0 | — |
curl "$API/tickers/by-keyword/12345" \ -H "X-API-Key: $KEY"
/tickers/enrich/isinBackground job: enrich every ticker in ticker_reference with ISIN/WKN/logo from onvista.de.
Returns immediately; check progress via GET /tickers/enrich/isin/status (job is tracked in-memory while server is running).
No parameters.
EnrichRequest| Name | Type | Meaning |
|---|---|---|
concurrency | integer optional · default 5 | Concurrency |
rate_limit | integer optional · default 30 | Rate Limit |
market | string optional · default stocks | Market |
type_filter | string optional | Type Filter |
active | boolean optional · default True | Active |
only_missing | boolean optional · default True | Only Missing |
curl -X POST "$API/tickers/enrich/isin" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'/tickers/enrich/isin/preview/{ticker_symbol}Dry-run: shows what plausibility-based search finds for this ticker, without writing to MongoDB.
Both ticker-symbol and name-keyword searches are always performed. All structurally valid candidates are returned with their plausibility scores so you can see exactly why one was chosen over another.
| Name | Type | Meaning |
|---|---|---|
ticker_symbol | string, in path required | — |
curl "$API/tickers/enrich/isin/preview/SAP" \ -H "X-API-Key: $KEY"
/tickers/enrich/onvista-stockBackground job: enrich ticker_reference rows directly from onvista stock detail payloads.
Strategy:
No parameters.
EnrichOnvistaStockRequest| Name | Type | Meaning |
|---|---|---|
concurrency | integer optional · default 5 | Concurrency |
rate_limit | integer optional · default 30 | Rate Limit |
market | string optional · default stocks | Market |
type_filter | string optional | Type Filter |
active | boolean optional · default True | Active |
only_missing | boolean optional · default True | Only Missing |
limit | integer optional | Limit |
curl -X POST "$API/tickers/enrich/onvista-stock" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'/tickers/enrich/onvista-stock/staleIncremental onvista refresh. Re-fetches the onvista stock detail (which also rebuilds calendar_events — results, dividends and annual general meetings) for only those tickers whose calendar events are stale.
A ticker counts as stale when it has no calendar_events at all, or its newest calendar_events.synced_at is older than max_age_days. Returns a job_id — poll GET /tickers/jobs/{job_id}.
No parameters.
EnrichOnvistaStockStaleRequest| Name | Type | Meaning |
|---|---|---|
max_age_days | integer optional · default 14 | Max Age Days |
concurrency | integer optional · default 5 | Concurrency |
rate_limit | integer optional · default 30 | Rate Limit |
market | string optional · default stocks | Market |
type_filter | string optional | Type Filter |
active | boolean optional · default True | Active |
limit | integer optional | Limit |
curl -X POST "$API/tickers/enrich/onvista-stock/stale" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'/tickers/jobs| Name | Type | Meaning |
|---|---|---|
limit | integer, in query optional · default 20 | — |
curl "$API/tickers/jobs" \ -H "X-API-Key: $KEY"
/tickers/jobs/{job_id}| Name | Type | Meaning |
|---|---|---|
job_id | string, in path required | — |
curl "$API/tickers/jobs/job_7f3c" \ -H "X-API-Key: $KEY"
/tickers/keywordsLists every keyword_id that occurs, with the number of listings, multilingual labels (en/de/fr/es/it/pt) and average confidence. Sorted by frequency descending. Example: /tickers/keywords?search=cloud.
| Name | Type | Meaning |
|---|---|---|
search | string, in query optional | Filtert nach keyword_id oder Label (case-insensitive) |
limit | integer, in query optional · default 2000 | — |
curl "$API/tickers/keywords" \ -H "X-API-Key: $KEY"
/tickers/quality/scoreBackground job: compute and persist data_confidence for every enriched ticker. Returns immediately with a count of documents to process.
No parameters.
curl -X POST "$API/tickers/quality/score" \ -H "X-API-Key: $KEY"
/tickers/quality/statsAggregate data_confidence statistics across all scored tickers. Returns counts per level and the worst matches (low confidence).
No parameters.
curl "$API/tickers/quality/stats" \ -H "X-API-Key: $KEY"
/tickers/resolve/{identifier}The central identifier resolver: ISIN / ticker / CIK / WKN / onvista entity_value / id_path / symbol → a canonical bundle including entity_type.
The basis for every capability that needs a uniform identifier (dealings, earnings, scoring, taxonomy). Known securities come from ticker_reference (no live call). 404 when nothing matches.
| Name | Type | Meaning |
|---|---|---|
identifier | string, in path required | — |
curl "$API/tickers/resolve/DE0007164600" \ -H "X-API-Key: $KEY"
{
"name": "SAP SE",
"isin": "DE0007164600", "wkn": "716460", "ticker": "SAP",
"lei": "529900D6BF99LW9R2E68", "cik": 1000184,
"country": "DE", "countrySource": "reference"
}/tickers/syncTrigger a full ticker sync from the given origin.
| Name | Type | Meaning |
|---|---|---|
origin | string, in query required | Data source origin (e.g. 'massive.com') |
market | string, in query optional · default stocks | — |
active | boolean, in query optional · default True | — |
limit | integer, in query optional · default 1000 | — |
rate_limit | integer, in query optional · default 5 | Max API calls per minute |
curl -X POST "$API/tickers/sync?origin=SAP" \ -H "X-API-Key: $KEY"
/tickers/sync/earnings-calendarResumable earnings-calendar sync over all equity tickers (default types STOCK / CS / ADRC). For each ticker it runs the onvista stock-detail enrichment (which rebuilds calendar_events with upcoming results, dividends and annual general meetings) and records the response time in the sync_earnings ledger.
Tickers synced within the last min_days_between days (default 7) are skipped, so a re-run after a crash or after a couple of days processes only what is actually due — never the whole universe again.
Returns a job_id — poll GET /tickers/jobs/{job_id}.
No parameters.
EarningsCalendarSyncRequest| Name | Type | Meaning |
|---|---|---|
min_days_between | integer optional · default 7 | Min Days Between |
concurrency | integer optional · default 5 | Concurrency |
rate_limit | integer optional · default 30 | Rate Limit |
market | string optional · default stocks | Market |
type_filters | array optional · default ['STOCK', 'CS', 'ADRC'] | Type Filters |
active | boolean optional · default True | Active |
limit | integer optional | Limit |
curl -X POST "$API/tickers/sync/earnings-calendar" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{ … }'/tickers/{ticker_symbol}Retrieve a single ticker from the reference collection.
Unlike the list response, this includes keywords and keywords_multilingual.
| Name | Type | Meaning |
|---|---|---|
ticker_symbol | string, in path required | — |
curl "$API/tickers/SAP" \ -H "X-API-Key: $KEY"
/wiki/jobsList recent wiki-sync jobs.
| Name | Type | Meaning |
|---|---|---|
limit | integer, in query optional · default 20 | — |
curl "$API/wiki/jobs" \ -H "X-API-Key: $KEY"
/wiki/jobs/{job_id}Get the current status of one wiki-sync job.
| Name | Type | Meaning |
|---|---|---|
job_id | string, in path required | — |
curl "$API/wiki/jobs/job_7f3c" \ -H "X-API-Key: $KEY"
/wiki/jobs/{job_id}/cancelRequest cancellation of a running wiki-sync job.
| Name | Type | Meaning |
|---|---|---|
job_id | string, in path required | — |
curl -X POST "$API/wiki/jobs/job_7f3c/cancel" \ -H "X-API-Key: $KEY"
/wiki/sync/onvista-stock-csvCreate a background job that scans sec_filings.ticker_reference for rows with origin = "onvista.stock_csv", resolves Wikipedia/Wikidata content using name, isin, wkn, and home_symbol, and persists the result into the sec_filings.wiki collection.
This endpoint does not process the CSV file itself. It only works on rows that were already imported into ticker_reference by the Onvista CSV import flow.
The request returns immediately with a job document. Use GET /wiki/jobs/{job_id} to poll progress and POST /wiki/jobs/{job_id}/cancel to stop a running job.
| Name | Type | Meaning |
|---|---|---|
limit | integer, in query optional · default 50 | Maximum number of `ticker_reference` rows to enqueue for this job after filtering. Use small values for trial runs and larger values for batch processing. |
offset | integer, in query optional · default 0 | Number of eligible `ticker_reference` rows to skip before selecting the batch. Useful for chunked or resumable processing. |
only_missing | boolean, in query optional · default True | When `true`, process only rows that do not yet have a corresponding document in `sec_filings.wiki`. When `false`, reprocess matching rows and overwrite the wiki payload. |
concurrency | integer, in query optional · default 4 | Number of parallel workers used for Wikidata/Wikipedia lookups. Higher values are faster but create more outbound requests. |
curl -X POST "$API/wiki/sync/onvista-stock-csv" \ -H "X-API-Key: $KEY"