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
/api/v1/studiesPaginated list of studies.
| Parameter | Meaning |
|---|---|
| search | Free text across author, disease, DOI, target trial, institution, geography. |
| disease_category | One or more clinical areas, comma-separated. |
| data_type | One or more data source types. |
| geography | One or more data geographies. |
| year_min, year_max | Inclusive publication-year bounds. |
| has_dag, has_qba | true or false. |
| has_data, has_code | true or false — whether a sharing link is recorded. |
| in_analysis | true to keep only studies with pooled comparisons. |
| min_transparency | Minimum disclosure count, 0-5. |
| sort | year | author | comparisons | analyzed | transparency. |
| order | asc | desc (default desc). |
| page, per_page | per_page is capped at 200. |
/api/v1/studies/{slug}One study with all of its comparisons. 404 when the slug is unknown.
/api/v1/studies/filter-optionsFacet 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.
/api/v1/comparisonsPaginated list of TTE-versus-RCT comparisons.
| Parameter | Meaning |
|---|---|
| search | Free text across outcome, population, intervention, comparator, target trial, author. |
| effect_measure | HR, OR, RR, RD, MD, SMD — one or more. |
| outcome_type | Efficacy, Safety, Economic. |
| alignment | close_alignment | partial_alignment | major_deviation. |
| disease_category | One or more clinical areas. |
| target_trial | Exact target trial name. |
| study | Restrict to one study by slug. |
| in_analysis | true for the pooled set. |
| ci_overlap | true or false — whether the two 95% intervals intersect. |
| tte_covers_rct | true or false — whether the emulation interval contains the trial estimate. |
| sort | discrepancy | year | measure. |
Analytics
/api/v1/analytics/summaryHeadline counts, methodology and transparency rates, and the pooled estimates.
/api/v1/analytics/resultsThe review’s complete analysis output: pooled models, coverage, concordance, publication-bias tests, sensitivity analyses, sampler diagnostics and PRISMA counts. Static and cacheable.
/api/v1/analytics/forestEvery analyzed comparison for one effect measure plus that stratum’s pooled estimate.
| Parameter | Meaning |
|---|---|
| effect_measure | HR (default), RR, MD, RD… |
/api/v1/analytics/trendsPer-year study counts with methodology and transparency rates.
/api/v1/analytics/distributionsClinical areas, data sources, geography, effect measures, outcome types.
| Parameter | Meaning |
|---|---|
| limit | Rows 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.
/api/v1/export/studiesStudies as CSV or JSON.
| Parameter | Meaning |
|---|---|
| format | csv (default) or json. |
/api/v1/export/comparisonsComparisons as CSV or JSON, including the derived agreement metrics.
| Parameter | Meaning |
|---|---|
| format | csv (default) or json. |
Operations
/api/v1/healthLiveness 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,RRand?effect_measure=HR&effect_measure=RRare 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
pageandper_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.