Clinical Trials
Trial search, portfolio comparison, trial details.
4 endpoints · every section below is generated from the API catalog
Compare clinical trial portfolios of multiple sponsors for a specific disease. Returns market size, intersection counts, per-sponsor breakdowns, and paginated common trials.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| sponsors | string (comma-separated) | Yes | One or more sponsor names (up to 10). e.g. 'pfizer,roche'. |
| conditionKeyword | string | Yes | Condition 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. |
| status | string | No | Exact trial status in the stored UPPERCASE form (e.g. RECRUITING). Case-sensitive - a mixed-case value returns no rows. |
| phase | string | No | Phase filter; loose forms ('2', 'II', 'Phase 2/3') are normalized server-side, otherwise a case-insensitive substring match. |
| page | integer | No | Page number (default 1). Range: 1 to ∞ |
| limit | integer | No | Results 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"
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| sponsor | string | No | Sponsor name (resolves via autocomplete and hierarchy). |
| disease | string | No | Disease or condition name (resolved to ontology IDs such as EFO, MONDO). |
| drug | string | No | Drug name (generic or brand, resolved to ChEMBL IDs). |
| target | string | No | Biological target (gene/protein) name or symbol. |
| phase | string | No | Clinical 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. |
| status | string | No | Exact trial status in the stored UPPERCASE form (e.g. RECRUITING, COMPLETED, ACTIVE_NOT_RECRUITING). Case-sensitive - a mixed-case value returns no rows. |
| limit | integer | No | Results per page (1-100, default 50). Range: 1 to 100 |
| page | integer | No | Page 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"
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| nctId | string | Yes | ClinicalTrials.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"
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| trialId | string | Yes | Trial 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"