API Changelog
Changes to the Caelrith API and this reference documentation, newest first.
v1.1.0Faster grant search; improved PDUFA BTD indication
October 8 2026- FixedGrant search (?search=) is now served from a dedicated search index instead of a full database scan. Requests that previously took 10+ seconds now typically complete in well under a second.
- ChangedSearch requests without a sort parameter now return results ordered by relevance. Pass an explicit sort (for example sort=funding or sort=start_date) to keep a specific ordering.
- AddedGrant list responses now include meta.sort, which echoes the ordering that was applied to the returned page.
- ChangedMulti-word search terms are matched as a phrase: every word must appear, in order, within the title or abstract. Word stemming still applies, so searching for "tumors" also matches "tumor".
- ChangedBreakthrough Therapy Designation (BTD) detection in PDUFA analysis results has been improved. BTD status is extracted from SEC filings, and the extraction logic has been refined for better accuracy.
Known Issues
Current limitations and behaviors that are easy to trip over. Last reviewed: September 2026. Anything not listed here can be reported through your usual support channel.
Some endpoints have no written description yet
Pages marked "Docs pending" lack only the prose description. Their parameters, constraints, and example requests are extracted directly from the API source and are accurate.
Documentation prose is generated from the API catalog
The API reference is generated from the API source. Parameter tables, constraints, and example requests are extracted directly and are accurate; some prose still reads machine-flavored and is being refined.
Response envelopes are not uniform
Most endpoints wrap payloads in { "success": true, "data": ... }, but some return the payload without a success flag. Each tool page labels its envelope ("No success wrapper") - check it before writing a generic client.
Alert list responses strip the metadata payload
Alerts returned from GET /alerts have their metadata fields stripped. Fetch the individual alert (GET /alerts/:alertDbId) to get the full, unstripped object.
Patent aggregates can return empty buckets for a valid company
On GET /api/v1/patents/aggregate, a company_id copied from the resolved_assignees[].organization_id of a full record can return zero buckets for a company that has patents - an HTTP 200 with an empty bucket list, not an error. Use company_name instead.
Resolved patent assignees can be incorrect
Assignee resolution is probabilistic. The assignees_resolved / resolved_assignees array can include an organization that does not own the record. The raw assignees array is the source of truth; check it before treating a resolved assignee as evidence.
Resolved researchers can point at duplicate OpenAlex profiles
OpenAlex sometimes holds multiple author entries for the same person. When a PI link resolves to one of these partial duplicates, the works_count, cited_by_count, and h_index fields on the researcher node reflect the fragment rather than the full output of the person. The trial-to-researcher link is correct - only those profile metrics can mislead. Note that the match tag reflects the institution gate, not whether the profile is a complete record.
Patent dates use different formats in requests and responses
Patent query parameters take YYYY-MM-DD, while patent records return publication_date, priority_date, and application_date as YYYYMMDD, and last_updated as an epoch-millisecond number. Convert between the formats when reusing a response value in a follow-up call.