Documentation → Reference data
Documentation

Reference data

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

GET /exchanges

List Exchanges

Return exchange reference entries stored in MongoDB.

NameTypeMeaning
searchstring, in query
optional
Filter by name (regex)
display_typestring, in query
optional
limitinteger, in query
optional · default 100
offsetinteger, in query
optional · default 0

Example

curl "$API/exchanges" \
  -H "X-API-Key: $KEY"
POST /exchanges/constituents/sync

Sync All Exchange Constituents

Fetch constituents for stored exchanges and merge them into ticker_reference.

NameTypeMeaning
searchstring, in query
optional
Only sync matching exchanges
limitinteger, in query
optional · default 250
Max number of exchanges to process
rate_limitinteger, in query
optional · default 120
Max onvista requests per minute

Example

curl -X POST "$API/exchanges/constituents/sync" \
  -H "X-API-Key: $KEY"
POST /exchanges/sync

Sync Exchanges

Fetch all world exchange indices from OnVista and persist/overwrite in MongoDB.

Safe to call repeatedly — subsequent calls update existing documents.

NameTypeMeaning
concurrencyinteger, in query
optional · default 10
Parallel OnVista requests
rate_limitinteger, in query
optional · default 60
Max requests per minute

Example

curl -X POST "$API/exchanges/sync" \
  -H "X-API-Key: $KEY"
GET /exchanges/{entity_value}

Get Exchange

Retrieve a single exchange by entityValue, name, url_name, or search_term.

NameTypeMeaning
entity_valuestring, in path
required

Example

curl "$API/exchanges/SAP" \
  -H "X-API-Key: $KEY"
GET /exchanges/{exchange_ref}/constituents

List Exchange Constituent Stocks

Return stocks for an exchange/index from ticker_reference. If the cache is empty, the endpoint auto-syncs that exchange once.

NameTypeMeaning
exchange_refstring, in path
required
searchstring, in query
optional
Filter cached constituents by ticker/name
limitinteger, in query
optional · default 100
offsetinteger, in query
optional · default 0
refreshboolean, in query
optional · default False
Refresh from onvista before reading from MongoDB

Example

curl "$API/exchanges/SAP/constituents" \
  -H "X-API-Key: $KEY"
POST /exchanges/{exchange_ref}/constituents/sync

Sync Exchange Constituents

Fetch constituents for one exchange/index and merge them into ticker_reference.

NameTypeMeaning
exchange_refstring, in path
required

Example

curl -X POST "$API/exchanges/SAP/constituents/sync" \
  -H "X-API-Key: $KEY"
GET /onvista/common/branches

Get Branches

Return cached branch/industry list; auto-fetches on first call.

No parameters.

Example

curl "$API/onvista/common/branches" \
  -H "X-API-Key: $KEY"
GET /onvista/common/countries

Get Countries

Return cached country list; auto-fetches on first call.

No parameters.

Example

curl "$API/onvista/common/countries" \
  -H "X-API-Key: $KEY"
GET /onvista/common/currencies

Get Currencies

Return cached currency list (official=true); auto-fetches on first call.

No parameters.

Example

curl "$API/onvista/common/currencies" \
  -H "X-API-Key: $KEY"
GET /onvista/common/instrument_types

Get Instrument Types

Return cached instrument-type list; auto-fetches on first call.

No parameters.

Example

curl "$API/onvista/common/instrument_types" \
  -H "X-API-Key: $KEY"
GET /onvista/common/sectors

Get Sectors

Return cached sector list; auto-fetches on first call.

No parameters.

Example

curl "$API/onvista/common/sectors" \
  -H "X-API-Key: $KEY"
POST /onvista/common/sync

Sync All

Force-refresh all five reference categories from onvista.

No parameters.

Example

curl -X POST "$API/onvista/common/sync" \
  -H "X-API-Key: $KEY"
POST /onvista/common/{category}/sync

Sync Category

Force-refresh a single reference category from onvista.

NameTypeMeaning
categorystring, in path
required

Example

curl -X POST "$API/onvista/common/SAP/sync" \
  -H "X-API-Key: $KEY"
GET /tickers

List Tickers

Return 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.

NameTypeMeaning
marketstring, in query
optional
activeboolean, in query
optional
typestring, in query
optional
searchstring, in query
optional
ranking_mininteger, in query
optional
Nur Ticker mit ranking >= diesem Wert
ranking_maxinteger, in query
optional
Nur Ticker mit ranking <= diesem Wert
unrankedboolean, in query
optional
true = nur Ticker ohne ranking-Wert
limitinteger, in query
optional · default 100
offsetinteger, in query
optional · default 0

Example

curl "$API/tickers" \
  -H "X-API-Key: $KEY"
POST /tickers/backfill-cik

Backfill Cik

Backfills 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).

NameTypeMeaning
min_days_betweeninteger, in query
optional

Example

curl -X POST "$API/tickers/backfill-cik" \
  -H "X-API-Key: $KEY"
GET /tickers/by-keyword/{keyword_id}

Get Stocks By Keyword

All stocks whose keywords_multilingual contain the given keyword_id — language-independent (the keyword_id is the same across all languages).

  • group=company (default): different listings of the same company
(ordinary share, ADR, CDR, …) are joined into ONE company via
company_id — never into a different company. Every result carries
company_id, company_name, iso_country, the primary main listing,
listings[] (all listings including ISINs and tickers, even those
without a keyword of their own) as well as tickers/isins — so a
newsroom can serve the articles for ALL listings. count = number of
companies.
  • group=listing: a flat list per individual listing (count = listings).

Sorted by keyword confidence descending. Example: /tickers/by-keyword/enterprise_software.

NameTypeMeaning
keyword_idstring, in path
required
groupstring, in query
optional · default company
company = Notierungen je Unternehmen verbinden; listing = flache Einzelnotierungen
activeboolean, in query
optional
nur aktive/inaktive Titel
min_confidencenumber, in query
optional
nur Keywords mit confidence >= Wert
sortstring, in query
optional · default confidence
confidence = beste Keyword-Zuordnung zuerst; market_cap = groesste Marktkapitalisierung zuerst
limitinteger, in query
optional · default 2000
offsetinteger, in query
optional · default 0

Example

curl "$API/tickers/by-keyword/12345" \
  -H "X-API-Key: $KEY"
POST /tickers/enrich/isin

Enrich Isin

Background job: enrich every ticker in ticker_reference with ISIN/WKN/logo from onvista.de.

  • only_missing: when true (default), skip tickers that already have an isin
  • rate_limit: max requests per minute to onvista (default 30)
  • concurrency: parallel requests (default 5)

Returns immediately; check progress via GET /tickers/enrich/isin/status (job is tracked in-memory while server is running).

No parameters.

Request body EnrichRequest

NameTypeMeaning
concurrencyinteger
optional · default 5
Concurrency
rate_limitinteger
optional · default 30
Rate Limit
marketstring
optional · default stocks
Market
type_filterstring
optional
Type Filter
activeboolean
optional · default True
Active
only_missingboolean
optional · default True
Only Missing

Example

curl -X POST "$API/tickers/enrich/isin" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'
GET /tickers/enrich/isin/preview/{ticker_symbol}

Preview Isin Enrich

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.

NameTypeMeaning
ticker_symbolstring, in path
required

Example

curl "$API/tickers/enrich/isin/preview/SAP" \
  -H "X-API-Key: $KEY"
POST /tickers/enrich/onvista-stock

Enrich Onvista Stock

Background job: enrich ticker_reference rows directly from onvista stock detail payloads.

Strategy:

  • use onvista_id when present
  • otherwise resolve via exact ISIN match
  • on success patch the row and move on to the next one

No parameters.

Request body EnrichOnvistaStockRequest

NameTypeMeaning
concurrencyinteger
optional · default 5
Concurrency
rate_limitinteger
optional · default 30
Rate Limit
marketstring
optional · default stocks
Market
type_filterstring
optional
Type Filter
activeboolean
optional · default True
Active
only_missingboolean
optional · default True
Only Missing
limitinteger
optional
Limit

Example

curl -X POST "$API/tickers/enrich/onvista-stock" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'
POST /tickers/enrich/onvista-stock/stale

Enrich Onvista Stock Stale

Incremental 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.

Request body EnrichOnvistaStockStaleRequest

NameTypeMeaning
max_age_daysinteger
optional · default 14
Max Age Days
concurrencyinteger
optional · default 5
Concurrency
rate_limitinteger
optional · default 30
Rate Limit
marketstring
optional · default stocks
Market
type_filterstring
optional
Type Filter
activeboolean
optional · default True
Active
limitinteger
optional
Limit

Example

curl -X POST "$API/tickers/enrich/onvista-stock/stale" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{ … }'
GET /tickers/jobs

List Ticker Jobs

NameTypeMeaning
limitinteger, in query
optional · default 20

Example

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

Get Ticker Job

NameTypeMeaning
job_idstring, in path
required

Example

curl "$API/tickers/jobs/job_7f3c" \
  -H "X-API-Key: $KEY"
GET /tickers/keywords

List All Keywords

Lists 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.

NameTypeMeaning
searchstring, in query
optional
Filtert nach keyword_id oder Label (case-insensitive)
limitinteger, in query
optional · default 2000

Example

curl "$API/tickers/keywords" \
  -H "X-API-Key: $KEY"
POST /tickers/quality/score

Compute Quality Scores

Background job: compute and persist data_confidence for every enriched ticker. Returns immediately with a count of documents to process.

No parameters.

Example

curl -X POST "$API/tickers/quality/score" \
  -H "X-API-Key: $KEY"
GET /tickers/quality/stats

Quality Stats

Aggregate data_confidence statistics across all scored tickers. Returns counts per level and the worst matches (low confidence).

No parameters.

Example

curl "$API/tickers/quality/stats" \
  -H "X-API-Key: $KEY"
GET /tickers/resolve/{identifier}

Resolve

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.

NameTypeMeaning
identifierstring, in path
required

Example

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"
}
POST /tickers/sync

Sync Tickers Endpoint

Trigger a full ticker sync from the given origin.

NameTypeMeaning
originstring, in query
required
Data source origin (e.g. 'massive.com')
marketstring, in query
optional · default stocks
activeboolean, in query
optional · default True
limitinteger, in query
optional · default 1000
rate_limitinteger, in query
optional · default 5
Max API calls per minute

Example

curl -X POST "$API/tickers/sync?origin=SAP" \
  -H "X-API-Key: $KEY"
POST /tickers/sync/earnings-calendar

Sync Earnings Calendar

Resumable 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.

Request body EarningsCalendarSyncRequest

NameTypeMeaning
min_days_betweeninteger
optional · default 7
Min Days Between
concurrencyinteger
optional · default 5
Concurrency
rate_limitinteger
optional · default 30
Rate Limit
marketstring
optional · default stocks
Market
type_filtersarray
optional · default ['STOCK', 'CS', 'ADRC']
Type Filters
activeboolean
optional · default True
Active
limitinteger
optional
Limit

Example

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

Get Ticker By Symbol

Retrieve a single ticker from the reference collection.

Unlike the list response, this includes keywords and keywords_multilingual.

NameTypeMeaning
ticker_symbolstring, in path
required

Example

curl "$API/tickers/SAP" \
  -H "X-API-Key: $KEY"
GET /wiki/jobs

List Wiki Jobs

List recent wiki-sync jobs.

NameTypeMeaning
limitinteger, in query
optional · default 20

Example

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

Get Wiki Job Status

Get the current status of one wiki-sync job.

NameTypeMeaning
job_idstring, in path
required

Example

curl "$API/wiki/jobs/job_7f3c" \
  -H "X-API-Key: $KEY"
POST /wiki/jobs/{job_id}/cancel

Cancel Wiki Job

Request cancellation of a running wiki-sync job.

NameTypeMeaning
job_idstring, in path
required

Example

curl -X POST "$API/wiki/jobs/job_7f3c/cancel" \
  -H "X-API-Key: $KEY"
POST /wiki/sync/onvista-stock-csv

Start a background wiki-sync job for Onvista CSV imports

Create 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.

NameTypeMeaning
limitinteger, 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.
offsetinteger, in query
optional · default 0
Number of eligible `ticker_reference` rows to skip before selecting the batch. Useful for chunked or resumable processing.
only_missingboolean, 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.
concurrencyinteger, in query
optional · default 4
Number of parallel workers used for Wikidata/Wikipedia lookups. Higher values are faster but create more outbound requests.

Example

curl -X POST "$API/wiki/sync/onvista-stock-csv" \
  -H "X-API-Key: $KEY"