ALETHEIA API Changelog

Customer-facing release notes for the ALETHEIA Safety Reference API (api.aletheia.holisticquality.io).

For the data-layer change feed (new compounds, updated regulatory classifications, sub-processor changes) see /api/changelog.

The machine-readable form of this file is served at /api/release-notes.

How entries are written. One entry per release, in this shape, so the page stays readable as it grows:

Entries state no counts unless the count is the change, and carry no sub-headings. The detail is not lost — it is one lookup away, in the directive and deploy record each Trace: line names. Target: 60 words an entry.


2026-10-03 — A value with no checkable source on file now says so: unsourced_values

A compound response gains unsourced_values, the value paths of that record with no source document on file that states them. It is absent for a record with none, and a listed value is shown, not withdrawn. The safety viewer prints "No checkable source on file yet" beside those values. Nothing is removed.

Trace: D-955 (AC4a) · not yet deployed · 2026-10-03

2026-10-03 — A derived band now says so: a new derived_markers field

A synthesis response gains derived_markers, naming what a context's band was derived from. A context whose refs are all such markers is sources_scope: "derived"; refs that match no entry fall back to the record-wide list (record). Nothing is removed.

Trace: D-955 (AC5, F-382) · not yet deployed · 2026-10-03

2026-10-03 — Compound records can now say which group entries they belong to

A new group_memberships field lists, for asbestos, beryllium, cadmium, chromium(VI) and nickel records, each instrument entry the record belongs to, with the entry's own text and the record's identity quoted beside it. Records outside those groups do not carry it.

Trace: D-913 (DD-09, AC7) · not yet deployed · 2026-10-03

2026-10-03 — The old EC-number fields are gone from compound records: use crossrefs.ec_number

crossrefs.echa_ec, ec and einecs are removed, with no alias (API 3.0.0). crossrefs.ec_number is the one store; where a record could not be given one, it is absent and the record says why. year_reviewed, deprecated since 2026-09-23, is removed; use year_updated.

Trace: D-913 (DD-09) · not yet deployed · 2026-10-03

2026-09-30 — A not-found answer now says what absence means

A response saying a compound, product or class is not in the ALETHEIA corpus now carries a coverage_note: no record here is not a safety verdict. So do a search with no results and the badge (header and image title). Additive: no hazard value or band moved. The version stays 2.2.0 and moves to 2.3.0 with the year_reviewed alias removal.

Trace: D-905 (DD-02, F-311) · not yet deployed · 2026-09-30

2026-09-27 — Materials figures checked against EPA, FDA, WHO and EU sources; carcinogen lines follow the ingredients

Figures materials records attribute to EPA, FDA, NIOSH, WHO and the EU were checked against archived regulator text and corrected in both directions; figures the named authority does not publish carry a dated withdrawal marker. "Carcinogenicity:" lines now follow the ingredients' IARC groups, mostly adding one, twice removing one. Withdrawal markers no longer lower quality badges.

Trace: D-867 (close) · deploy bdcf55f4c · 2026-09-27

2026-09-26 — Workplace exposure limits read against the regulator's own text

Exposure limits on materials and some compound records were read against archived OSHA, NIOSH and EU text and corrected in both directions, among them hexavalent chromium, mercury's ceiling and cadmium's EU limit. IARC lines on a few compound pages now cite the monograph volume they rest on. Benomyl's hazard labels now come from its own EU harmonised entry, not carbendazim's.

Trace: D-867 (tables 6 to 12) · D-897 · D-820 · D-834 wave 3 · deploys 8d936ace7, 52c375dd8 · 2026-09-26

2026-09-25 — "No major regulatory flags" only when no verified listing applies; wrong-source IARC groups withdrawn

Pages print "No major regulatory flags" only when no verified listing applies. Stockholm POP listings were checked against the Convention: missing POPs added, false ones removed. IARC groups resting on wrong-source citations were withdrawn, so some warnings are weaker; IRIS values and mislinked ingredients were corrected both ways, and aletheia now publishes a corrections page.

Trace: D-841 · D-851 · D-896 · D-820 (A18) · D-872 · D-873 · D-874 · D-839 · D-887 · D-888 · D-889 · D-890 · D-892 · D-893 · D-895 · D-855 · deploys 5ceba9169, 02f66175e · 2026-09-25

2026-09-23 — The year filter and export column now say "year updated", not "year reviewed"

The value was never a review year: it now comes from each record's most recent revision and is served as year_updated, last column in both CSV layouts. year_reviewed stays as a deprecated alias with the same value through 2.2.x and is removed at 2.3.0.

Trace: D-864 · deploy 7c276ab99 · 2026-09-23

2026-09-21 — Compounds show the IARC group the record already held, and four say under what condition

Thirty-three compounds carried an IARC classification no page displayed; they now show it, and 85 risk levels are new or stronger, 28 in child, infant, pregnancy or teen contexts, none weaker. Four state IARC's condition verbatim. The listing shows each entry's own risk band, and hazard labels dropped 191 unsourced codes for 91 sourced, no warning lost.

Trace: D-836 AC2a · D-836 AC2c · D-834 wave 1 · deploy 4d8f68f33 (2026-09-22) · 2026-09-21

2026-09-20 — A "not likely" cancer verdict no longer softens a non-cancer band; this page is now one short entry per release

A negative carcinogenicity finding was counted as low-hazard evidence, so 152 served risk levels are now stronger warnings, 68 in child, infant or pregnancy contexts. Glyphosate's child band moves moderate to severe. Five compounds that read "No major regulatory flags" now name their IARC group, one Group 1, and dose-response minima that mixed units are withdrawn.

Trace: D-830 · D-832 · D-836 (5 of 38) · D-833 · deploy 8715a0994 · 2026-09-20


2026-09-20 — GHS hazard labels now say where they come from; API contract 2.1.0

Chips on the compare page now read harmonised (EU CLP Annex VI) or notified by N companies (ECHA C&L), so a legally harmonised classification is distinguishable from a self-notified one. Glyphosate's carcinogenicity summary now attributes each verdict to the body that issued it. Three static compound pages were a revision behind, two of them under-warning a child band.

Trace: D-831 · D-827 · D-828 · deploy 9efe5cfa5 · 2026-09-20


2026-09-19 — Class-typed toxicity defaults withdrawn; placeholder bands replaced

An LD50 or NOAEL that was a class default rather than a measurement is now withdrawn rather than served as data; 21 measured values replace them. Two acute-toxicity figures became sharper warnings — allyl isothiocyanate and methyl salicylate, a class default replaced by a measured LD50. A context with no magnitude says so instead of resolving to a middle band.

Trace: D-821 · D-829 · deploy 603d37b9d · 2026-09-19


2026-09-18 — Breaking: API 2.0.0 — hazard_profile removed, replaced by hazard_class

hazard_profile is gone. The same information is now split across hazard_class, hazard_class_basis, hazard_detail and hazard_summary, so a class, its warrant and its detail are separate fields. Compound pages that had rendered [object Object] render the class. Citation labels and withdrawals also ship.

Trace: D-818 · D-817 · D-820 · deploy fe1f3b410 · 2026-09-18


2026-09-18 — Page citations render; retired hostnames removed from public copy

Per-record citations now render on published pages with their scope stated (record-wide or per-context). Links to retired hostnames are gone from the public properties. Development and cache files that had been reachable now return 404.

Trace: D-808 · D-809 · D-801 · deploy 7c490a630 · 2026-09-18


2026-09-15 — Anonymous tier no longer returns structure or full citations

The public projection strips smiles, inchi, inchi_key, computed descriptors and full citation objects; records carry a _tier marker. An authenticated key returns them as before. exact_mass and monoisotopic_mass are published by operator ruling.

Trace: Stage 1 · deploy 3eb20f5b9 · 2026-09-15


2026-09-14 — Six records that denied an IARC evaluation now carry it

Six records stated that IARC had not evaluated a substance the published list does carry — one of them Group 1 — and now carry the evaluation, on the records and on the pages derived from them together. The API's release-notes endpoint caught up with this file in the same window.

Trace: D-797 · deploy 68cc3ed47 · 2026-09-14


2026-09-10 — Published coverage figure re-measured and dated: 97.4%, replacing an undated 100%

The coverage page carried 100% with no assessment date; re-running the same predicate today gives 97.4%, and every figure now carries the date it was measured. The earlier number was not wrong when published — it was undated, which let it read as current. Regulatory milestones whose effective date has passed now read as in force.

Trace: D-733 · D-742 · deploys e8ed21f34 (2026-09-07), 315285787 · 2026-09-10


2026-08-29 — Chemical-identity repair: CAS, formula, weight and structure

The long-running identity remediation first disclosed in v1.4.3/v1.4.4 is largely closed. Each correction was anchored by name and by CAS separately and accepted only where both resolve to the same compound. Where a value could not be resolved it was nulled or registered as unresolved, never replaced with a plausible guess.

Trace: D-450 · D-454 · D-455 · D-473 · D-474 · D-504 · D-505 · D-527 · D-595 · deploys 066fb3451 → 81303c28d · 2026-07-31 → 2026-08-29


2026-08-27 — IARC classification reconciliation: every stated group checked against IARC's own list

Every IARC group this corpus states was reconciled against IARC's published List of Classifications. Corrections run in both directions, and several were under-warns — substances served as unclassified or in a lower group where IARC had classified them higher. A non-existent category and groups captured out of sentences denying an evaluation were removed.

Trace: D-427 · D-429 · D-512 · D-514 · D-524 · D-561 · D-562 · D-582 · D-583 · D-594 · D-634 · deploys 030d9e1dd → 6520ce236 · 2026-07-24 → 2026-08-27


2026-08-23 — Risk-band vocabulary normalised at source

Six spellings for what are two bands are now normalised at source, so the API, the JSON viewer and the published pages read the same canonical strings. Five published pages had been painting a real authored hazard band in the grey reserved for <code>unknown</code> and now render the correct colour. If you match band strings exactly, check your mapping.

Trace: D-521 · deploy d7cb675b2 · 2026-08-23


2026-08-21 — Citation and attribution integrity

Wrong-compound attributions were repointed and a standing detector shipped so the class is caught rather than re-audited. An invented federal case name served for a real ruling was corrected, along with a vacated holding served as operative law, citations pointing at unrelated papers, and a statistic whose number was right and whose scope attributes were all wrong.

Trace: D-441 · D-442 · D-518 · D-567 · D-619 · deploys 714dc23a3 → 6ff3b8733 · 2026-07-30 → 2026-08-21


2026-08-12 — /api/playground and /api/badge: every corpus band now maps to a display class

The band→display maps were hand-listed and did not cover every band the corpus emits, so an unmapped band fell through to the bottom visual rung — the most severe substances rendered as the least severe. Both maps are now table-driven over every band, and Asbestos, PFOA and Formaldehyde render as critical. The band word was already correct and is unchanged.

Trace: D-544 · D-545 · deploy 8cc88a437 · 2026-08-12


2026-08-09 — New on published compound pages: display_risk_levels

Published pages rendered the curated band only, so where synthesis resolved a higher band the page showed the lower value. The served compound index now carries display_risk_levels (the higher of the two) and display_risk_source (which side won). The rule can only raise a displayed band, never lower one; risk_levels is not mutated and no API response shape changed.

Trace: D-526 · deploy 57afd335c · 2026-08-09


2026-08-07 — Risk-synthesis admissibility: what a classification is allowed to decide

Four corrections to which regulatory classifications the engine accepts and what it accepts them for — including EPA's pre-1996 letter grades, which were silently dropped before synthesis. A carcinogenicity classification can no longer decide a cat, dog or wildlife context. Served bands move in both directions; these are correctness fixes, not a uniform tightening.

Trace: D-499 · D-500 · D-501 · D-506 · D-509 · D-514 · deploys e798ee1fc → bf2db4c5f · 2026-08-05 → 2026-08-07


2026-07-19 — Build markers on /api/health, no key required

GET /api/health now returns commit and dataset_version, so an integration can tell which build and which data version it is talking to — previously only that the service was up. Useful for pinning a reproducible run or confirming a deploy rolled out. Only those two values are exposed.

Trace: D-398 · v1.7.0 · 2026-07-19


2026-07-06 — v1.7.0: Regulatory Change Calendar across every covered substance

GET /api/regulatory-status?view=calendar aggregates every forward-looking change across all substances into one date-sorted list, narrowable by jurisdiction and date. Coverage widens to 11 regulated substances across US, EU and California. The response states its own denominator, and a proposed change is never returned as an in-force value.

Trace: D-340 · D-341 · v1.6.0 → v1.7.0 · 2026-07-06


2026-07-06 — v1.6.0: a temporal governance view on /api/regulatory-status

Every cell now carries governance_timeline (the in-force value plus scheduled or pending ones, each with a lifecycle status and effective date) and a computed governance view of { current, upcoming }. ?as_of=YYYY-MM-DD resolves that view as of any date. A non-confirmed value is only ever returned in <code>upcoming</code>, never as the current limit.

Trace: D-331 · v1.5.0 → v1.6.0 · 2026-07-06


2026-06-30 — v1.5.0: heavy-metals regulatory-status endpoint

New GET /api/regulatory-status gives the governing threshold — if any — for a heavy metal in baby-food matrices across US, EU and California, with the legal force each carries and where no governing threshold exists at all. Requires a Developer or Pro key. available_contexts, already live, is now documented on the compound response.

Trace: D-297 · v1.4.5 → v1.5.0 · 2026-06-30


2026-05-22 — v1.4.5: pricing-surface coherence and legal containment

A storefront price change had been missed by the API code across three successive releases, and a second copy of the tier prices inside the admin dashboard was showing wrong figures. Prices now come from one place. Legal containment hardening ships alongside.

Trace: MK #41 · MK #42 · v1.4.4 → v1.4.5 · 2026-05-22


2026-05-19 — v1.4.4: chemical-identity corrections across 66 records

Name-anchored corrections — resolved through PubChem by name, never through the suspect cross-reference on the record being repaired — landed across two adjudicated batches. Data only: no API contract, code or middleware change. The public JSON viewer is resynced by this release.

Trace: SCI-DAT-01 · v1.4.3 → v1.4.4 · 2026-05-19


2026-05-19 — v1.4.3: export safeguard for compounds under identity review

Structural-identity fields on the bulk export could carry a different compound's structure for records under chemical-identity review. Those records now carry an advisory field on the export marking them as under review. No breaking contract change; safety.holisticquality.io is not affected.

Trace: SCI-DAT-01 · v1.4.2 → v1.4.3 · 2026-05-19


2026-05-16 — v1.4.2: identity corrections, edge caching, and a rebrand

Thirty-three PubChem-verified identity corrections landed on records that had been serving a different compound's structure. /api/compound/{id} becomes edge-cacheable for unwatched compounds. The product name changes from "Safety Intelligence" to "Safety Reference".

Trace: SCI-DAT-01 · PC-2 · v1.4.1 → v1.4.2 · 2026-05-16


2026-05-12 — POST /api/compounds/batch now listed on RapidAPI

The POST batch endpoint is exposed on the rebuilt RapidAPI listing. Subscribers who need relief from URL length limits on large ID lists can now send a JSON body instead.

Trace: RAPIDAPI-L5 · 2026-05-12


2026-05-12 — v1.4.1: methodology_note was being dropped from /api/product/{id}

v1.4.0 wrote methodology_note for every synthesised product, but an explicit field allowlist in the response shaper omitted it, so the field was silently dropped before serialisation. It now surfaces.

Trace: v1.4.0 → v1.4.1 · 2026-05-12


2026-05-12 — v1.4.0: data expansion and audit-closure batch

Every product synthesis response now discloses, in a paragraph, that its route, duration and frequency multipliers are ALETHEIA-calibrated heuristics informed by published exposure handbooks — engineering heuristics, not measured values. A large batch of audit findings closes alongside. The aletheia-safety SDK ships v0.9.0 with this release.

Trace: DEPLOY-PLAN-2026-05-12 · v1.3.x → v1.4.0 · 2026-05-12


2026-05-07 — SCI-DAT-02 Phase 4: synonym decontamination across 60 records

Records corrected in Phase 2 still carried synonym lists stamped from the wrong molecule during the window the wrong cross-reference was active. Those lists are now cleared or rebuilt. Data only; lands at the next deploy.

Trace: SCI-DAT-02 Phase 4 · 2026-05-07


2026-05-07 — SCI-DAT-02 Phase 2: 59 wrong-cross-reference corrections

Fifty-nine compound records now carry the correct PubChem cross-reference and the structure, formula and mass fields derived from it, where they had carried another compound's. Triaged by InChIKey prefix. Data only; no API behaviour change.

Trace: SCI-DAT-02 Phase 2 · 2026-05-07


2026-05-07 — SCI-DAT-01 Gap 2: 13 compounds re-resolved against PubChem

Thirteen records carried structure fields contaminated by a wrong-CID batch merge from 2026-03-22 and were re-resolved. Plutonium-239's wrong cross-reference was corrected in the same pass. Data only.

Trace: SCI-DAT-01 Gap 2 · 2026-05-07


2026-05-07 — Methylmercury monograph and cancer-site correction

Following an accuracy audit, methylmercury's IARC monograph reference and the cancer site it names were corrected, and the chemical-identity contamination triage that became SCI-DAT-01 was opened. Subscription lifecycle handling also ships.

Trace: sci-verify 2026-05-05 · SCI-DAT-01 · 2026-05-07


2026-04-27 — Batch limits aligned with the advertised plan configuration

The public tier gains batch access and the per-tier batch caps rise, so the API's enforced behaviour matches what the marketplace already advertised to subscribers. The synthesis cap is unchanged.

Trace: OpenAPI 1.4.0 → 1.5.0 · 2026-04-27


2026-04-27 — Marketplace listing v2.2: source transparency and a sample response

The marketplace listing gains source transparency, a sample response and onboarding polish. Discovery surface only — no endpoint or response shape changed.

Trace: OpenAPI 1.3.0 → 1.4.0 · 2026-04-27


2026-04-26 — Postman API Network listing; playground name search fixed

ALETHEIA is now a public workspace on the Postman API Network, with curated collections including a five-step onboarding to a real 200 OK. Name search in the playground is fixed.

Trace: 2026-04-26


2026-04-23 — RapidAPI launch

ALETHEIA Safety Reference is listed on RapidAPI with a free tier and paid plans, plus an enterprise tier by arrangement.

Trace: 2026-04-23


Earlier history

Earlier releases predate this changelog. The repository's commit history and the directive records named above remain the full account.