API Documentation
← All tools
GET/api/v1/clinical-trials/topics

Clinical Trials by Topic

clinical-trialsNo success wrapper

Search trials by OpenAlex topic name (exact PHRASE match over openalex_topics[].topic_name; relevance-sorted by default). Accepts every optional filter from the registry search. Get exact topic_name strings from the sample endpoint or from trial documents - fuzzy strings will not match.

When to use it

  • trials under an OpenAlex research topic
  • topic-restricted listing with status/phase/sponsor filters

Getting started

Base URL

https://app.caelrith.com/api/v1/tools

Authentication

Include your API key in the x-api-key header.

Parameters

Query parameters

ParameterTypeRequiredDescription
searchstringNoAdditional full-text PHRASE match over title/summary text (same semantics as the registry search).
pagenumberNoPage number (default 1).
Range: 1 to ∞
limitnumberNoResults per page (1-100, default 20).
Range: 1 to 100
statusstringNoExact trial status, case-insensitive input (stored uppercase). Common values: RECRUITING, ACTIVE_NOT_RECRUITING, COMPLETED, TERMINATED, WITHDRAWN, SUSPENDED, NOT_YET_RECRUITING, ENROLLING_BY_INVITATION, UNKNOWN.
phasestringNoExact normalized phase value (stored form).
sponsorstringNoExact match against resolved sponsor names (no fuzzy matching).
conditionstringNoExact match against resolved condition names (no fuzzy matching).
disease_idstringNoDisease CURIE with uppercase prefix (e.g. EFO:0003767, MONDO:0004992). Values without a colon are silently ignored by the server (filter dropped). Get CURIEs from the Disease Autocomplete tool.
enrollment_minnumberNoMinimum enrollment (inclusive).
enrollment_maxnumberNoMaximum enrollment (inclusive).
start_date_afterstringNoYYYY-MM-DD; matches trials with start_date >= this date.
completion_date_beforestringNoYYYY-MM-DD; matches trials with completion_date <= this date.
sortstringNoSort order (server default for topic search: relevance). 'updated' returns only trials with an update timestamp; 'enrollment' only trials with non-null enrollment.
Allowed values: updated, enrollment, relevance
orderstringNoSort direction (default desc); applies to updated/enrollment.
Allowed values: asc, desc
sexstringNoEligible sex, e.g. ALL, FEMALE, MALE.
min_age_yearsnumberNoMinimum participant age in years.
max_age_yearsnumberNoMaximum participant age in years.
healthy_volunteersbooleanNoAccepts healthy volunteers (true/false).
design_allocationstringNoAllocation methodology pass-through (e.g. Randomized).
design_maskingstringNoMasking methodology pass-through (e.g. Double, Single).
design_primary_purposestringNoPrimary purpose pass-through (e.g. Treatment).
sponsor_trial_count_maxnumberNoOnly trials having some sponsor (resolved or raw) with a total trial count below this number - finds small/emerging sponsors.
pi_author_idstringNoOpenAlex author id for a principal investigator. Accepts A#######, openalex_A####### or the full https://openalex.org/... URL. Invalid ids return HTTP 400. Obtain a real id from the user or from the Trial Full Record endpoint's data.researchers[].author_key - there is no name-to-id resolution, so never invent one.
pi_match_tagstringNoRestrict PI links by resolution confidence: verified = institution gate passed (safe), shortcut = name-only match (provisional), llm = LLM-arbiter accepted. Only meaningful together with pi_author_id; on its own it does NOT filter (the full corpus total is returned).
Allowed values: verified, shortcut, llm
topicstringYesOpenAlex topic name, phrase-matched exactly (e.g. 'CAR-T cell therapy research'). Prefer exact topic_name strings seen in trial documents.

Example request

curl -H "x-api-key: YOUR_API_KEY" \
  "https://app.caelrith.com/api/v1/clinical-trials/topics?topic=your_topic"

Response envelope

This endpoint returns an implicit 2xx response - there is no success flag in the body.

{
  "data": { /* payload */ },
  "meta": { /* pagination, totals */ }
}

// No "success" flag on this endpoint - any 2xx JSON is a success.

Response shape

List responseTRIALS

Payload: data — Topic Trials

Exact total: meta.totalItems

Pagination: server-side via page and limit

Common row fields

FieldDescription
trial_idID
titleTitle
statusStatus
phasePhase
start_dateStart Date
enrollmentEnrollment

Empty results: No matching rows (HTTP 200)

Catalog version 0.0.0-generated · generated from the API source