API Documentation
← API overview

Clinical Trials

Trial search, portfolio comparison, trial details.

4 endpoints · every section below is generated from the API catalog

GET/api/v1/tools/clinical/portfolio-comparison

Portfolio Comparison

Full reference →

Compare clinical trial portfolios of multiple sponsors for a specific disease. Returns market size, intersection counts, per-sponsor breakdowns, and paginated common trials.

Parameters

ParameterTypeRequiredDescription
sponsorsstring (comma-separated)YesOne or more sponsor names (up to 10). e.g. 'pfizer,roche'.
conditionKeywordstringYesCondition or disease keyword to compare portfolios for. A keyword that does not resolve to a disease returns zeros (market_size_trials 0) rather than an error - confirm the keyword before treating the zeros as data.
statusstringNoExact trial status in the stored UPPERCASE form (e.g. RECRUITING). Case-sensitive - a mixed-case value returns no rows.
phasestringNoPhase filter; loose forms ('2', 'II', 'Phase 2/3') are normalized server-side, otherwise a case-insensitive substring match.
pageintegerNoPage number (default 1).
Range: 1 to ∞
limitintegerNoResults per page (1-100, default 50).
Range: 1 to 100

Example request

curl -H "x-api-key: YOUR_API_KEY" \
  "https://app.caelrith.com/api/v1/tools/clinical/portfolio-comparison?sponsors=your_sponsors&conditionKeyword=your_conditionKeyword"
GET/api/v1/tools/clinical/search-composite

Clinical Composite Search

Full reference →

Search clinical trials by disease, drug, target, and sponsor with combination filters. All parameters optional; at least one biological filter recommended. Returns paginated results, status breakdown, and full audit trail. disease/drug/target are resolved server-side (exact, alias, phrase, vector) and expanded to their graph ids; sponsor resolves via autocomplete + corporate hierarchy; status is an EXACT match on the stored UPPERCASE value (a mixed-case value returns no rows, not an error); phase accepts loose forms ('2', 'II', 'phase ii', 'Phase 2/3') normalized server-side, else a case-insensitive substring match. Failure modes: a disease/drug/target-ONLY query whose value cannot be resolved returns HTTP 500 naming the input (correct the name; repeating the same value cannot succeed); an unresolved entity inside a COMBINED query degrades to a 200 with totalCount 0; sponsor-only queries return 0 counts instead of an error. Target filters also return a data.mechanisms action-type summary; the status breakdown is empty for the single disease/drug/target fast paths.

Parameters

ParameterTypeRequiredDescription
sponsorstringNoSponsor name (resolves via autocomplete and hierarchy).
diseasestringNoDisease or condition name (resolved to ontology IDs such as EFO, MONDO).
drugstringNoDrug name (generic or brand, resolved to ChEMBL IDs).
targetstringNoBiological target (gene/protein) name or symbol.
phasestringNoClinical trial phase; loose forms are normalized server-side (e.g. 'Phase 2', '2', 'II', 'phase ii', 'Phase 2/3'), otherwise a case-insensitive substring fallback.
statusstringNoExact trial status in the stored UPPERCASE form (e.g. RECRUITING, COMPLETED, ACTIVE_NOT_RECRUITING). Case-sensitive - a mixed-case value returns no rows.
limitintegerNoResults per page (1-100, default 50).
Range: 1 to 100
pageintegerNoPage number (default 1).
Range: 1 to ∞

Example request

curl -H "x-api-key: YOUR_API_KEY" \
  "https://app.caelrith.com/api/v1/tools/clinical/search-composite"
GET/api/v1/tools/clinical/trial-details

Trial Details

Full reference →

Retrieve a single clinical trial's graph-enriched details by NCT ID (exact nct_id match, stored UPPERCASE; NCT ids only - not EU CT numbers). Returns graph-resolved sponsors plus conditions / interventions / summary as server-flattened strings: conditions and interventions are comma-joined and CAPPED at the first 5 entries each, and summary is cleaned and truncated (~800 chars + '...'), so never imply those lists are complete. Unknown ids return HTTP 404.

Parameters

ParameterTypeRequiredDescription
nctIdstringYesClinicalTrials.gov identifier, exact stored form (e.g., 'NCT05679999').

Example request

curl -H "x-api-key: YOUR_API_KEY" \
  "https://app.caelrith.com/api/v1/tools/clinical/trial-details?nctId=your_nctId"
GET/api/v1/tools/clinical/trial-pos

Trial Probability of Success

Full reference →

Machine-learning Probability of Success (POS) for ONE clinical trial, scored live from the trial's design features (phase, blinding, statistical-analysis-plan mention, enrollment, arm count, sites, randomization, interventional / treatment flags, plus the resolved sponsor). Returns pos_score as a PERCENTAGE (0-100, two decimals; 74.25 = 74.25%) alongside the trial's status, phase and last_updated. The lookup key is the trial's registry_id - copy it from a trial search / sample result (the id / trial_id field); an unknown id returns HTTP 404, an unavailable inference service returns HTTP 502. Requires a workspace tier that includes the clinical-trial-pos tool (its own daily rate limit). The response carries NO feature breakdown - present the score as a model estimate, never as a factual outcome probability or clinical advice.

Parameters

ParameterTypeRequiredDescription
trialIdstringYesTrial registry id (registry_id, e.g. an NCT id). Copy it exactly from a trial search / sample result (the id / trial_id field); unknown ids return HTTP 404.

Example request

curl -H "x-api-key: YOUR_API_KEY" \
  "https://app.caelrith.com/api/v1/tools/clinical/trial-pos?trialId=your_trialId"