API Documentation
← API overview

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.

Open

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.

By design

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.

Open

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.

Open

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.

Open

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.

Open

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.

Open

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.

Open

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.