Pharma Commercial Mock
GET/api/congress/abstracts

Congress abstract feed

ASCO / ISPOR abstract feed with embargo timestamps and endpoint data.

Simulates a congress abstract feed. Real abstract ID conventions (LBA####, TPS####, e####, bare integers prefixed by disease track), JCO supplement DOI format, clinicaltrials.gov NCT IDs, trial-series → sponsor coherence (KEYNOTE → Merck, CheckMate → BMS, DESTINY-Breast → Daiichi). Embargo `lifted_at` timestamp is load-bearing for the CI team's 48-hour post-congress briefing window.

Query parameters

NameTypeDescription
congressstring
Congress identifier. Year parsed from digits.
default: ASCO2026
topicstring
Free-text topic. Aliased to indications (lung → NSCLC/SCLC, breast → TNBC/HR+ breast cancer, etc.).
competitorstring
Filter by brand. Pass 'all' or a specific brand (Keytruda, Opdivo, etc.).
default: all
session_typestring
Exact session-type match (e.g., 'Late-Breaking Oral Abstract Session').
limitinteger
Max abstracts returned. 5-50.
default: 25

Response schema

PathTypeDescription
congressstring
Echo.
meeting_yearinteger
Year parsed from congress.
total_abstractsinteger
Total abstracts at the meeting (2,800-3,800 — ASCO scale).
filteredinteger
Count returned after filters.
abstracts[]array
Abstract records.
abstracts[].abstract_idstring
e.g., '2026-LBA4001' or '2026-9001'.
abstracts[].abstract_numberstring
LBA#### | TPS#### | e#### | bare integer.
Source: ASCO abstract policies
abstracts[].doistring
JCO supplement DOI: 10.1200/JCO.YYYY.VV.SS_suppl.ABS.
abstracts[].trackstring
ASCO disease track label (e.g., 'Lung Cancer—Non-Small Cell Metastatic').
abstracts[].sessionobject
{ type, title, date, time_local, room }.
abstracts[].session.typeenum
Plenary Session | Late-Breaking Oral Abstract Session | Oral Abstract Session | Rapid Oral | Clinical Science Symposium | Poster Discussion | Poster Session | Trials in Progress | Education Session | Publication Only.
Source: ASCO Selection Process
abstracts[].titlestring
Generated from real trial naming conventions.
abstracts[].authors[]array
{ name, affiliation, is_presenter } — drawn from KOL pool + real institutions.
abstracts[].sponsorstring
Real sponsor matching the trial series.
Source: trial → sponsor coherence
abstracts[].trialobject
{ name, nct_id, phase } — NCT ID format NCT########.
Source: clinicaltrials.gov
abstracts[].indicationstring
NSCLC | SCLC | TNBC | HR+ breast cancer | RCC | melanoma | etc.
abstracts[].interventionobject
{ drug_inn, brand, moa }.
abstracts[].comparatorstring
Control arm.
abstracts[].endpoints[]array
Endpoint records: OS / PFS / ORR with HR + 95% CI + p where applicable.
abstracts[].competitive_relevanceenum
high | medium | low — heuristic based on indication overlap.
abstracts[].embargoobject
{ lifted_at: ISO, status: released|embargoed } — drives the CI team's 48-hr briefing window.

Behaviour notes

  • ·Trial series prefixes are coherent with their sponsor (KEYNOTE → Merck, CheckMate → BMS, etc.) — enforced by tests.
  • ·Endpoint values per indication anchored to published trial data ranges (e.g., NSCLC OS 16-30 mo).
  • ·Topic aliases map free-text to indication sets — 'lung' → NSCLC/SCLC, not breast.
  • ·Abstract ID prefix encodes disease track (90xx = lung NSCLC, 10xx = breast).

Examples

Lung cancer abstracts
curl 'http://localhost:3000/api/congress/abstracts?congress=ASCO2026&topic=lung'
Keytruda abstracts only
curl 'http://localhost:3000/api/congress/abstracts?congress=ASCO2026&competitor=Keytruda&limit=10'
Late-breakers
curl 'http://localhost:3000/api/congress/abstracts?session_type=Late-Breaking+Oral+Abstract+Session&limit=5'

Sources