{"name":"Rockstar public API","version":"v1","auth":"API key via 'X-API-Key' header (or ?api_key=). Each key carries scopes; an endpoint 403s if the key lacks its scope. Manage keys in the app under Pipeline → API keys.","envelope":{"items":"T[]","total":"number","limit":"number (≤200)","offset":"number","keyLabel":"string"},"resources":[{"resource":"news","path":"/api/public/v1/news","scope":"news","description":"Funding rounds, acquisitions, grants. Each item carries an `org` reference to the structured company record when one is resolved.","params":["type","country","since","until","orgId","limit","offset"]},{"resource":"grants","path":"/api/public/v1/grants","scope":"news","description":"Non-dilutive grants (Innosuisse / CTI / EU / foundation).","params":["country","since","until","orgId","limit","offset"]},{"resource":"events","path":"/api/public/v1/events","scope":"events","description":"Community events (meetups, conferences).","params":["platform","city","country","from","until","orgId","limit","offset"]},{"resource":"jobs","path":"/api/public/v1/jobs","scope":"jobs","description":"Open job postings.","params":["country","category","remote","since","orgId","limit","offset"]},{"resource":"companies","path":"/api/public/v1/companies","scope":"companies","description":"Companies — startups, corporates and investors. Filter by kind/sector/country/city. `q` is a ranked search: exact and canonical name (legal forms like AG/GmbH and diacritics are normalized away, so \"EthonAI AG\" finds \"EthonAI\"), prefix, substring on name/domain/aliases, then a typo-tolerant fallback. Each hit carries `match`: exact | canonical | prefix | partial | fuzzy. With `q`, results are relevance-ordered and `sort` is ignored. Rows require real company evidence (domain, register id, LinkedIn company id, or job postings).","params":["kind","sector","country","city","q","hasOpenJobs","foundedAfter","foundedBefore","sort (name|recent|funding|recentlyFunded)","limit","offset"]},{"resource":"company","path":"/api/public/v1/companies/{id}","scope":"companies","description":"One company: profile, location, funding history, register officers, open jobs. Returns the object directly, not a list envelope.","params":[]},{"resource":"contacts","path":"/api/public/v1/contacts","scope":"contacts","description":"Company directors from the Swiss commercial register (Zefix). Public-register facts only — no email/phone. Rows are dropped when the register entry has not been re-verified within 180 days.","params":["country","role","company","limit","offset"]},{"resource":"events","path":"/api/public/v1/meetups","scope":"events","description":"Deprecated alias → use /events.","deprecated":true,"params":["platform","city","country","from","until","limit","offset"]}],"changelog":[{"date":"2026-07-29","resource":"companies","change":"`?q=` is now a ranked, legal-form-aware search. Previously plain substring — a query carrying the Firmierung (\"EthonAI AG\") could not find the row stored as \"EthonAI\" because the query was longer than the stored name. Now both sides are normalized (suffixes, diacritics, punctuation stripped) and compared, with a Levenshtein-2 fallback for typos. Results carry `match` so consumers can auto-select exact/canonical hits and show a picker for partial/fuzzy ones."},{"date":"2026-07-29","resource":"jobs, events","change":"`?orgId=` filter on both — all open roles at one company, and all community events a company hosts or participates in. This makes the `jobs.list` and `links.events` URLs on /companies/{id} functional. Events caveat: org links are only recorded by some ingest paths, so an empty result means no link was recorded, not that the company was absent. Jobs additionally now exclude postings of operator-suppressed companies."},{"date":"2026-07-28","resource":"companies","change":"sort=funding and sort=recentlyFunded enabled, and every company carries a `funding` rollup {roundCount, totalRaisedUSD, lastRoundAt, lastRoundType, asOf}. These rank on rounds LINKED to a company via Event.orgId — measured at 99.4% of canonical events (3474/3497) on 2026-07-28, which is why the sorts are published at all. `linked: true` marks the totals as a floor, not a verified total; grants are excluded from totalRaisedUSD because non-dilutive funding would overstate equity raised."},{"date":"2026-07-28","resource":"companies","change":"New resource and new `companies` scope. GET /companies lists startups, corporates and investors; GET /companies/{id} returns one company with funding history, register officers and open jobs. `kind` is the entity type on the wire — the stored category value \"vc\" is exposed as \"investor\", since the column also covers angel clubs, family offices, private equity and debt. No `sort=funding` yet: it would rank by an aggregate over links whose backfill coverage is not yet measured, silently omitting unlinked companies."},{"date":"2026-07-28","resource":"jobs","change":"Operator-hidden postings (hiddenAt) are now excluded. They were documented as hidden from every listing but were still being served here."},{"date":"2026-07-28","resource":"news, grants","change":"New `org` object on every item — the structured company record ({id, name, kind, investorType, website, logo, country, city, sector}), plus `orgLinkSource` describing how the link was established (\"ingest\" | \"backfill\" | \"manual\" | \"merge\"). New `?orgId=` filter returns all funding for one company. `org` is null where no company could be resolved; coverage is incomplete for historical events, so treat a null as \"unknown\", not \"no company\". `companyWebsite` and `companyLogo` are retained but superseded by `org.website` / `org.logo`."},{"date":"2026-07-28","resource":"contacts","change":"`since` is deprecated and renamed to `observedSince`. It was never a register appointment date — it is the date we first observed the seat. Both fields are emitted until 2026-09-01, after which `since` is removed. New fields: `verifiedAt` (when the register entry was last re-checked) and `register` (provenance)."}]}