Developers

API

Read-only, public, no key required. JSON everywhere except the export endpoints, which also serve CSV. Data are CC BY 4.0.

Base URL

https://openscience.xera.ac/tte/api/v1

Example

# Oncology comparisons where the emulation interval missed the trial estimate
curl "https://openscience.xera.ac/tte/api/v1/comparisons?\
in_analysis=true&tte_covers_rct=false&disease_category=Oncology&sort=discrepancy"

# The whole analyzed dataset as CSV
curl -o comparisons.csv "https://openscience.xera.ac/tte/api/v1/export/comparisons?\
format=csv&in_analysis=true"

Studies

GET/api/v1/studies

Paginated list of studies.

ParameterMeaning
searchFree text across author, disease, DOI, target trial, institution, geography.
disease_categoryOne or more clinical areas, comma-separated.
data_typeOne or more data source types.
geographyOne or more data geographies.
year_min, year_maxInclusive publication-year bounds.
has_dag, has_qbatrue or false.
has_data, has_codetrue or false — whether a sharing link is recorded.
in_analysistrue to keep only studies with pooled comparisons.
min_transparencyMinimum disclosure count, 0-5.
sortyear | author | comparisons | analyzed | transparency.
orderasc | desc (default desc).
page, per_pageper_page is capped at 200.
GET/api/v1/studies/{slug}

One study with all of its comparisons. 404 when the slug is unknown.

GET/api/v1/studies/filter-options

Facet values and counts for every filter, plus the year range.

Comparisons

Every extracted comparison, not only the pooled ones. Add in_analysis=true for the analysis set.

GET/api/v1/comparisons

Paginated list of TTE-versus-RCT comparisons.

ParameterMeaning
searchFree text across outcome, population, intervention, comparator, target trial, author.
effect_measureHR, OR, RR, RD, MD, SMD — one or more.
outcome_typeEfficacy, Safety, Economic.
alignmentclose_alignment | partial_alignment | major_deviation.
disease_categoryOne or more clinical areas.
target_trialExact target trial name.
studyRestrict to one study by slug.
in_analysistrue for the pooled set.
ci_overlaptrue or false — whether the two 95% intervals intersect.
tte_covers_rcttrue or false — whether the emulation interval contains the trial estimate.
sortdiscrepancy | year | measure.

Analytics

GET/api/v1/analytics/summary

Headline counts, methodology and transparency rates, and the pooled estimates.

GET/api/v1/analytics/results

The review’s complete analysis output: pooled models, coverage, concordance, publication-bias tests, sensitivity analyses, sampler diagnostics and PRISMA counts. Static and cacheable.

GET/api/v1/analytics/forest

Every analyzed comparison for one effect measure plus that stratum’s pooled estimate.

ParameterMeaning
effect_measureHR (default), RR, MD, RD…
GET/api/v1/analytics/trends

Per-year study counts with methodology and transparency rates.

GET/api/v1/analytics/distributions

Clinical areas, data sources, geography, effect measures, outcome types.

ParameterMeaning
limitRows per distribution, 1-100 (default 15).

Export

Accept the same filters as the browse endpoints, so what you filter is what you download. Capped at 5000 rows per request.

GET/api/v1/export/studies

Studies as CSV or JSON.

ParameterMeaning
formatcsv (default) or json.
GET/api/v1/export/comparisons

Comparisons as CSV or JSON, including the derived agreement metrics.

ParameterMeaning
formatcsv (default) or json.

Operations

GET/api/v1/health

Liveness plus row counts. Returns 503 when the database is unreachable.

Conventions

Multi-value filters
Repeat the parameter or comma-separate the values: ?effect_measure=HR,RR and ?effect_measure=HR&effect_measure=RR are equivalent.
Boolean filters
Accept true/1/yes and false/0/no. An unrecognized value is ignored rather than treated as false, so a typo widens the result set instead of silently narrowing it.
Paging
Offset-based, with page and per_page. Every sort breaks ties on a stable key, so rows do not repeat or vanish between pages.
Missing values
null, never a sentinel string. A null estimate means the source did not report one.
CSV safety
Cells starting with = + - @ are prefixed with an apostrophe so spreadsheet software does not evaluate them as formulas.