/api/v1/tools/clinical/search-compositeClinical Composite Search
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.
When to use it
- size a sponsor's portfolio in a disease
- find trials combining sponsor + drug + disease filters
Getting started
Base URL
https://app.caelrith.com/api/v1/toolsAuthentication
Include your API key in the x-api-key header.
Parameters
Query 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"
Response envelope
Successful responses wrap the payload in a success flag.
{
"success": true,
"data": { /* payload */ },
"meta": { /* pagination, totals */ }
}Response shape
Payload: data.trials — Clinical Trials
Exact total: data.totalCount
Breakdown: data.breakdown (fields: status → count)
Audit trail: data.audit_trail
Pagination: server-side via page and limit
Common row fields
| Field | Description |
|---|---|
| id | ID |
| title | Title |
| status | Status |
| phase | Phase |
| startDate | Start Date |
Empty results: No matching rows (HTTP 200) (0 matched; an unresolvable disease/drug/target value inside a COMBINED query also yields 0 - verify the exact entity names before concluding no trials exist)
Catalog version 0.0.0-generated · generated from the API source