GET /api/regulations
Tracked documents, filterable and paginated. Sorted by relevance by default; see sort.
| Parameter | Type | Description |
|---|---|---|
view | string | all (default) · healthtech. all is every classified item; healthtech narrows to general-scope, health-tech-relevant ones |
search | string | Full-text search (indexed) across original and English titles, summaries and descriptions |
topic[] | array | Classifier topic slug (repeatable; values OR together), e.g. samd, ai-act, ehds, reimbursement. Bare topic= also accepted for one value; /api/topics lists the full vocabulary with display labels |
scope | string | general (binds a class of actors) · single_entity (one named product or company) |
kind[] | array | Document type (repeatable): rule_change · guidance · consultation · safety_alert · approval · supply_notice · enforcement · administrative · news. Bare kind= also accepted for one value |
breadth[] | array | How widely a document binds (repeatable): framework · sector · product_class. Bare breadth= also accepted |
relevance | string | Health-tech relevance floor: core · adjacent · all (default, no floor). Narrows within view, never widens it |
sort | string | relevance (default: health-tech score, obligation level and recency combined) · newest · impact (obligation level, HIGH first) |
since | date | ISO date; only items published or first seen on or after it |
impact[] | array | Obligation level (repeatable): HIGH · MEDIUM · LOW. Shown on the site as “Obligation” |
category[] | array | One of the ten categories below (repeatable) |
region[] | array | e.g. EU-wide, Germany, France (repeatable) |
source | string | Source registry key, e.g. ema, uk_mhra — the keys behind /sources, returned on each item as sourceKey. Repeatable as source[] |
dateRange | string | today · week · month · 3months · 6months · year |
hasDeadlines | boolean | true returns only items with extracted deadlines |
page | integer | Page number, default 1 |
limit | integer | Items per page, default 50, max 200 |
collapse | string | instrument groups rows on the page that cite the same instrument or digest series; the first row lists the others in alsoReported. A collapsed page can hold fewer than limit rows; pagination.total still counts documents. Off by default |
curl "https://www.health-signal.com/api/regulations?topic=samd&since=2026-08-01"
curl "https://www.health-signal.com/api/regulations?impact[]=HIGH&dateRange=month&limit=10"
curl "https://www.health-signal.com/api/regulations?source=ema&kind=guidance"
An unknown filter value returns 400, and invalid in the body lists every one. /feed.xml ignores unknown values instead.
Sample response
{
"status": "success",
"data": {
"regulations": [
{
"_id": "6908d35e99792966b6f85b38",
"title": "AI Act General Application (High-Risk AI)",
"description": "Obligations for high-risk AI systems apply…",
"link": "https://eur-lex.europa.eu/…",
"source": "European Commission",
"sourceKey": "ec_health",
"impact": "HIGH",
"impactScore": 3,
"categories": ["Digital Health & AI"],
"geographicScope": ["EU-wide"],
"originalPubDate": "2026-06-14T00:00:00",
"createdAt": "2026-06-15T05:17:03",
"classification": { "kind": "rule_change", "scope": "general", "breadth": "framework", "healthTech": { "score": 92, "relevant": true }, "topics": ["ai-act"], "titleEn": "AI Act General Application (High-Risk AI)", "summaryEn": "Obligations for high-risk AI systems apply from 2 August 2026.", "appliesFrom": "2026-08-02", "status": "ok" },
"bodySummaryEn": "The Commission states that the obligations for high-risk AI systems under the AI Act apply from 2 August 2026.",
"hasDeadlines": true,
"deadlineStatus": "upcoming",
"nextDeadline": "2026-08-02T00:00:00",
"deadlines": [
{ "date": "2026-08-02T00:00:00", "eventType": "ENTERS_FORCE", "originalText": "General application" }
]
}
],
"pagination": { "page": 1, "limit": 10, "total": 2302, "pages": 231 }
}
}
Response fields
Each item in data.regulations carries the following fields.
| Field | Type | Description |
|---|---|---|
_id | string | Stable document identifier |
title | string | Title as published by the source, in its original language. The English title is classification.titleEn |
description | string | The source’s own description text, when it provides one |
link | string | Canonical URL to the official source |
source | string | Issuing body, as a display name (UK MHRA). Prose — it changes if an agency renames itself |
sourceKey | string | Registry key of the issuing body (uk_mhra). This is what ?source= accepts. Absent on a few early documents |
impact | string | Obligation level — how widely and how hard the document binds: HIGH (creates or changes binding obligations for a class of actors) · MEDIUM (binds one narrow product type, or proposes something that would bind broadly) · LOW (no new obligation for a class). Derived from kind, scope and breadth; classification.healthTech.score carries topical relevance. Displayed as “Obligation” |
impactScore | integer | Numeric obligation level: 3 / 2 / 1 |
categories | array | One or more of the ten categories |
geographicScope | array | e.g. EU-wide, Germany |
originalPubDate | string | Publication date (ISO 8601, may be null) |
createdAt | string | When the item entered HealthSignal (ISO 8601) |
classification | object | The classifier’s verdict: kind, scope, breadth (framework · sector · product_class — how widely the document binds), healthTech.score (0–100 topical proximity), topics[], titleEn, summaryEn, appliesFrom, status. AI-generated; the official source is authoritative |
bodySummaryEn | string | AI-generated English summary of the item’s own text: 2–4 sentences, only what the text states. Absent when the text could not be fetched, or when it is a short English text |
hasDeadlines | boolean | Whether any deadlines were extracted |
deadlineStatus | string | upcoming · passed · none |
nextDeadline | string | Next upcoming deadline date (may be null) |
deadlines | array | { date, eventType, originalText } per deadline, plus extractor metadata (confidence, pattern) |
instrumentIds | array | Normalized legal-instrument IDs extracted from the raw text — eu:2017/745, mdcg:2024-14, mhra:dsi/2026/5, us-fr:2026-14358. Absent when no instrument is cited |
digestKey | string | Present on items in a source’s recurring digest series (e.g. MHRA’s weekly Field Safety Notices round-up) |
alsoReported | array | Only with collapse=instrument: the grouped siblings this row represents — { id, source, dateLabel, kind } |