API Documentation
← All tools
GET/api/v1/patents

Patent Search

patents

Paginated, filterable listing of patent publications using direct indexed filters (company/assignee, CPC classification prefix, publication date range, country, legal status) - no graph traversal. include_total is declared required so every call computes the exact meta.total the agent quotes; never quote a page length as a total. Company filters accept an exact raw assignee string, 'organizations/<key>', 'ror:<id>' or 'lei:<id>' and resolve to the company's full graph id cluster (raw mentions + ROR/LEI entities); an unresolved company value or unknown CPC prefix returns HTTP 400 naming the value - the filter is never silently dropped, so an empty result always means the portfolio is truly empty. Requires a Pro workspace (returns HTTP 402 otherwise). Use patents.aggregate for counts, patents.yoy-growth for trends, and patents.details with a row's patent_id for the full enriched record.

When to use it

  • list a company's patents (via company_id or company_name)
  • patents under a CPC classification prefix (e.g. A61K for pharma)
  • recent patent publications for an assignee

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
company_idstringNoOrganization to filter on. Accepts an exact raw assignee string (as it appears in a patent's assignees array), 'organizations/<key>', 'ror:<id>', 'lei:<id>', or a bare ROR/LEI id. Takes precedence over company_name. Unresolved values return HTTP 400 (never silently ignored).
company_namestringNoResolved organization name, used as a fallback when company_id is not provided; the server resolves it to an organization.
cpc_codestringNoCPC classification code or prefix (e.g. 'A61K'). Combined with include_descendants to expand the prefix.
include_descendantsstringNoWhen true (default), a cpc_code prefix expands to every code starting with it; set false for exact-code matches only.
Allowed values: true, false
publication_date_fromstringNoYYYY-MM-DD; matches patents published on or after this date.
publication_date_tostringNoYYYY-MM-DD; matches patents published on or before this date.
countrystringNoCountry code (case-insensitive; the server uppercases it).
legal_statusstringNoLegal status filter (case-insensitive).
pageintegerNoPage number (default 1).
Range: 1 to ∞
limitintegerNoResults per page (1-100, default 20).
Range: 1 to 100
sortstringNoSort field (default publication_date).
Allowed values: publication_date, title
orderstringNoSort direction (default desc).
Allowed values: asc, desc
include_totalstringNoMust be true. Computes the exact result count (meta.total) which the agent must quote as the total; a page length must never be presented as a total.
Allowed values: true, false

Example request

curl -H "x-api-key: YOUR_API_KEY" \
  "https://app.caelrith.com/api/v1/patents"

Response envelope

Successful responses wrap the payload in a success flag.

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

Response shape

List responsePATENTS

Payload: data — Patents

Exact total: meta.total

Pagination: server-side via page and limit

Common row fields

FieldDescription
patent_idPatent ID
titleTitle
publication_datePublished
countryCountry
assigneesAssignees
legal_status—

Empty results: No matching rows (HTTP 200)

meta.total is always present because include_total is client-required - quote it as the exact result count. Unresolved company values (exact raw assignee string, organizations/<key>, ror:<id>, lei:<id>) and unknown CPC prefixes are rejected with HTTP 400 naming the value - the filter is never silently dropped, so an empty data array means the filters resolved and the portfolio is truly empty. meta.filters.company_id_resolved / company_cluster_size echo the resolved company anchor and the number of graph ids the filter spanned (raw mentions + ROR/LEI entities; null / 0 when no company filter was given); meta.filters.cpc_codes_matched echoes the expanded code count (null when no CPC filter).

Catalog version 0.0.0-generated · generated from the API source