phaserate

API documentation

Base URL https://api.phaserate.com · methodology method-v0 · every figure on this page is a live response from the service, not an illustration.

Why every response carries conditional_on

Published Phase 2 → Phase 3 success rates span 22% to 58%. That is not disagreement about the data. It is three declared choices, each measured on identical data:

ChoiceEffectMeasured by
Censoring rule16.9 ppAryal et al. 2026 (38.7% → 21.8%)
Estimator10.4 ppWong, Siah & Lo 2019 (48.6% vs 38.2%)
Counting unit8.6 ppDiMasi et al. 2013 (41.6% vs 33.0%)

Every one is larger than any therapeutic-area or data-vendor effect, and no published source exposes them. So we return the conventions with the number and let you change them. GET /v1/conventions documents all of them and needs no key.

Quick start

curl https://api.phaserate.com/v1/base-rates \
  -H "X-API-Key: $PHASERATE_KEY" \
  -G --data-urlencode "therapeutic_area=oncology" \
     --data-urlencode "modality=small_molecule" \
     --data-urlencode "window_start=2015" \
     --data-urlencode "window_end=2025"
{
  "phase_pair": "phase2_to_phase3",
  "therapeutic_area": "oncology",
  "modality": "small_molecule",
  "n": 978,
  "n_transitioned": 233,
  "rate": 0.23824130879345604,
  "confidence_interval_95": [0.2125985414648905, 0.2659324150559984],
  "coverage": 0.9649,
  "counts": { "evaluable": 978, "transitioned": 233,
               "censored": 299, "unresolved": 0 },
  "conditional_on": {
    "counting_unit": "asset_sponsor",
    "censoring_rule": "quiet_is_failure",
    "imputation_policy": "none",
    "combination_handling": "dominant_sponsor",
    "quiet_days": 540
  },
  "methodology": {
    "version": "method-v0",
    "snapshot_date": "2026-07-23",
    "source": "ClinicalTrials.gov via AACT (CTTI)"
  }
}

Authentication

Pass your key as X-API-Key, or as Authorization: Bearer <key>. Keys are argon2-hashed and shown once at issuance — we cannot recover one for you, only replace it.

Parameters

ParameterValuesDefault
phase_pairphase2_to_phase3phase2_to_phase3
therapeutic_area oncology, infectious_disease, neurology, cardiovascular, immunology_inflammation, metabolic, endocrine, respiratory, ophthalmology, haematology, psychiatry, dermatology, gastro_hepatology, musculoskeletal, rare_genetic, womens_health, dental, ent, traumaall
modalitysmall_molecule, biologicall
window_start / window_endyear2015 / 2025
counting_unit asset_sponsor · asset_sponsor_indication · assetasset_sponsor
censoring_rule quiet_is_failure · quiet_droppedquiet_is_failure
imputation_policy none (path_by_path returns 501)none
combination_handling dominant_sponsor · split_components · excludedominant_sponsor
quiet_days90–3650540

Response fields

  • rate — the transition probability, or null if suppressed.
  • n — evaluable programmes in the denominator.
  • confidence_interval_95 — Wilson score interval, which behaves sensibly at the small sample sizes many slices live at.
  • coverage — of the programmes that ran a Phase 2 in this slice, the share we could date and judge. Programmes that never ran a Phase 2 are out of scope and are not counted against it.
  • counts — the full disposition: evaluable, transitioned, censored, unresolved.
  • conditional_on — the conventions that produced the number.
  • methodology — version, snapshot date, source and citation.

Errors and limits

CodeMeaning
401Missing, malformed, revoked or invalid key.
429Monthly quota exhausted. Used and permitted counts are in the body; quota is on every successful response too.
501A convention we do not implement. Returned rather than silently serving a figure computed under a different one.

The demonstration worth running

The same slice, one parameter changed:

GET /v1/base-rates?therapeutic_area=ophthalmology
  → rate 0.177   n 265

GET /v1/base-rates?therapeutic_area=ophthalmology&censoring_rule=quiet_dropped
  → rate 0.573   n 82
BIO/Informa publish 35.5% for ophthalmology. It sits between our two figures, because ophthalmology has an unusually high share of programmes that stop reporting without formally terminating — 70%, against 58% across all indications. All three numbers are correct. They answer different questions.

Honesty guarantees

  • Thin cells refuse to quote. Below 20 evaluable programmes a cell returns suppressed: true with a reason, rather than a confident-looking number over a hollow base.
  • Unverified is not failed. A Phase 2 whose registry status has not been confirmed in over two years is reported separately, never counted as a failed transition.
  • Non-efficacy terminations leave the denominator. A trial stopped for funding, enrolment or reorganisation says nothing about the asset. The count is reported.
  • Unimplemented options error. Requesting path_by_path imputation returns 501, never an unimputed figure wearing the wrong label.

Known limitations

Stated here rather than discovered later.

  • Registry-only visibility. Phase 3 programmes registered solely in EU CTR, jRCT or ChiCTR are invisible to us, which biases our rates downward.
  • Therapeutic-area rates are weak predictors of individual diseases. FDA authors (Miller, Rabinovitz & Kerr, Nat Rev Drug Discov 18:658, 2019) found individual-disease probabilities deviating more than ten percentage points from their therapeutic-area figure. Use the area rate as a prior, not a forecast.
  • A phase transition is a business decision. Programmes stop for portfolio and financing reasons as well as for data.
  • Our default counting unit is asset × sponsor, coarser than the drug-indication path published reports use. Set counting_unit=asset_sponsor_indication for closer comparability.

Citation

Aggregate Analysis of ClinicalTrials.gov (AACT) Database. Clinical Trials Transformation Initiative (CTTI). aact.ctti-clinicaltrials.org.