Skip to content

Keywords ​

Catalogue search, one keyword card, and paged relations. Every route needs intangia:read. Shared errors are on the API overview.

Search Keywords ​

GET /api/v1/keywords

QueryDefaultNotes
qemptySearch text. An empty query returns no rows.
page1A value below 1, or not a number, becomes 1.
limit10Page size. Capped at 20. A non-positive value becomes 1.
bash
curl "https://app.intangia.co/api/v1/keywords?q=kinase&limit=10" \
  -H "Authorization: Bearer $TOKEN"
json
{
  "data": [
    {
      "id": "8f3c1c2e-4b5a-4d6e-9f70-1a2b3c4d5e6f",
      "name": "kinase",
      "type": "keyword",
      "synonyms": []
    }
  ],
  "meta": { "page": 1, "pageSize": 10 }
}

meta.pageSize is the size that was applied, which may be lower than limit when limit is above 20.

Get a Keyword ​

GET /api/v1/keywords/{keywordId}

include is an optional comma-separated list. Allowed names: indications, pipeline, biology, landscape, metrics, ontology, sponsors. An unknown name returns 400 and lists the allowed names. Omit include for the card alone.

An unknown id returns 404 and { "error": "Keyword not found" }.

bash
curl "https://app.intangia.co/api/v1/keywords/$KEYWORD_ID?include=indications,sponsors" \
  -H "Authorization: Bearer $TOKEN"
json
{
  "id": "8f3c1c2e-4b5a-4d6e-9f70-1a2b3c4d5e6f",
  "name": "kinase",
  "type": "target",
  "description": null,
  "synonyms": ["protein kinase"],
  "activity": { "papers": 120, "patents": 40, "trials": 6, "assets": 2 },
  "scores": {
    "as_of": "2026-09-30",
    "composite": { "score": 72, "raw": 0.72, "label": "High", "description": "..." },
    "momentum": null,
    "maturity": null,
    "competition": null,
    "risk": null,
    "translation": null
  },
  "indications": [{ "id": "...", "name": "Example indication", "count": 3 }],
  "sponsors": {
    "trials": [{ "id": "101", "name": "Example Sponsor", "count": 4 }],
    "papers": [],
    "patents": []
  }
}

Synonyms stop at 12. Each score is null when the catalogue has no tier for it. Sponsor lists on the card are the top 10 for each activity. Page further with relations.

List Relations ​

GET /api/v1/keywords/{keywordId}/relations

QueryRequiredNotes
relationyesindications, assets, pipeline_targets, or sponsors
activityfor sponsorstrials, papers, or patents
limitnoDefault 20, maximum 100. Must be a positive integer.
offsetnoDefault 0. Must be zero or greater.

An unknown keyword returns 404. An unknown relation or activity, or a bad limit or offset, returns 400.

Indication, asset, and pipeline-target ids are keyword ids. A sponsor id is an organisation id.

json
{
  "data": [{ "id": "...", "name": "Example indication", "count": 3 }],
  "meta": { "relation": "indications", "limit": 20, "offset": 0, "total": 3 }
}

Assets include stage instead of count. Pipeline targets include id and name. Sponsor responses add activity to meta and count on each row.

Actionable insights for better R&D and strategy decisions.