# Open Targets

> Search the evidence linking genes to diseases, from Open Targets: the open drug target discovery platform built by EMBL-EBI, the Wellcome Sanger Institute and a group of pharmaceutical companies. Ask which genes are worth going after for a disease, or what a gene has already been linked to, and get a score from 0 to 1 that pools human genetics, known drugs, animal models, pathways, expression and the literature, with the working shown. Look up targets, diseases, drugs, variants and GWAS studies; read what a drug treats and what side effects it has; see where a gene is expressed and what it interacts with; and find the papers behind any of it. Names work everywhere identifiers do, so 'TP53' and 'asthma' are enough. No account or API key required.

App · Research & Academia · 19 actions. Web page: https://docs.lodol.com/docs/integrations/open-targets

## Actions

### Check the Platform status

Check Open Targets is reachable and report which data release it is serving. Open Targets publishes a new release every few months and the association scores move between them, so a workflow that records or compares results is worth stamping with the release they came from. Also useful as a health check at the top of a longer run.

**Inputs**: None.

**Outputs**

- `api_version` (text): Version of the API, e.g. '26.6.3'
- `data_release` (text): Data release being served, e.g. '26.06'
- `endpoint` (text): The endpoint that answered
- `interaction_sources` (list): Interaction databases loaded, and the version of each
- `name` (text): What the API calls itself
- `reachable` (true/false): True when the Platform answered

**Example output**

```json
{
  "api_version": "26.6.3",
  "data_release": "26.06",
  "endpoint": "https://api.platform.opentargets.org/api/v4/graphql",
  "interaction_sources": [
    {
      "source": "intact",
      "version": "252"
    },
    {
      "source": "reactome",
      "version": "95"
    }
  ],
  "name": "Open Targets GraphQL & REST API Beta",
  "reachable": true
}
```

### Find diseases for a target

The mirror of finding targets for a disease: everything this gene has been linked to, best evidenced first, each with a score from 0 to 1 and a breakdown by kind of evidence. Use it to see what a gene is already implicated in before committing to it, or to spot where an existing programme might be repositioned.

**Inputs**

- Target (`target`, text, required): The gene or protein, as a symbol such as 'TP53' or an Ensembl gene id such as 'ENSG00000141510'. A symbol is looked up for you and the response says which target it resolved to.
- Score on these kinds of evidence (`datatypes`, text): Narrow the association score to particular kinds of evidence. Leave blank to use everything, which is how the Open Targets website scores by default. Ticking 'Genetic associations' alone, for example, ranks by human genetics and ignores the rest. One or more of: `genetic_association` (Genetic associations), `somatic_mutation` (Somatic mutations), `known_drug` (Known drugs), `affected_pathway` (Affected pathways), `literature` (Literature (text mining)), `rna_expression` (RNA expression), `animal_model` (Animal models).
- Include indirect associations (`include_indirect`, true/false): Also count evidence attached to related diseases further down the ontology. Off by default, matching the Open Targets website. Turning it on widens the net a long way: BRCA1 goes from about 1,300 diseases to about 17,000, and diseases with no direct evidence of their own can outrank the ones that have it. Default: `false`.
- How many to return (`size`, number): How many rows to return, from 1 to 3000. Defaults to 25. From 1 to 3000. Default: `25`.
- Page (`page`, number): Which page of results to return, counting from 0. Use it with 'How many to return' to walk through a long list. From 0 to 10000. Default: `0`.

**Outputs**

- `count` (number): How many rows came back
- `diseases` (list)
- `include_indirect` (true/false): Whether evidence from related diseases was counted
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `target` (object): The target the list is for
- `total` (number): How many diseases are associated in total

**Example output**

```json
{
  "count": 2,
  "diseases": [
    {
      "id": "MONDO_0007254",
      "name": "breast cancer",
      "score": 0.839042,
      "scores_by_datatype": {
        "genetic_association": 0.980212,
        "genetic_literature": 0.607931,
        "literature": 0.998482
      },
      "therapeutic_areas": [
        {
          "id": "OTAR_0000017",
          "name": "reproductive system or breast disease"
        },
        {
          "id": "MONDO_0045024",
          "name": "cancer or benign tumor"
        }
      ]
    },
    {
      "id": "Orphanet_145",
      "name": "Hereditary breast and ovarian cancer syndrome",
      "score": 0.827813,
      "scores_by_datatype": {
        "animal_model": 0.401797,
        "genetic_association": 0.917973,
        "genetic_literature": 0.885582,
        "literature": 0.375326
      },
      "therapeutic_areas": [
        {
          "id": "OTAR_0000018",
          "name": "genetic, familial or congenital disease"
        },
        {
          "id": "OTAR_0000017",
          "name": "reproductive system or breast disease"
        }
      ]
    }
  ],
  "include_indirect": false,
  "resolved": {
    "id": "ENSG00000012048",
    "matched_on": "name",
    "name": "BRCA1",
    "other_matches": [
      {
        "id": "ENSG00000267595",
        "name": "BRCA1P1"
      },
      {
        "id": "ENSG00000136492",
        "name": "BRIP1"
      }
    ]
  },
  "target": {
    "id": "ENSG00000012048",
    "symbol": "BRCA1"
  },
  "total": 1359
}
```

### Find drugs for a target

List the drugs and clinical candidates aimed at a gene, and how far each one has got. Use it to check whether a target is already drugged before starting work on it, to find a tool compound, or to spot a molecule that could be repositioned. Filter to approved drugs alone to see only what is on the market.

**Inputs**

- Target (`target`, text, required): The gene or protein, as a symbol such as 'TP53' or an Ensembl gene id such as 'ENSG00000141510'. A symbol is looked up for you and the response says which target it resolved to.
- Clinical stages (`stages`, text): Keep only the rows that reached these stages. Leave blank for all of them. Tick 'Approved' alone to see only what is on the market. One or more of: `APPROVAL` (Approved), `PHASE_4` (Phase 4), `PHASE_3` (Phase 3), `PHASE_2` (Phase 2), `PHASE_1_2` (Phase 1/2), `PHASE_1` (Phase 1), `EARLY_PHASE_1` (Early phase 1), `PRECLINICAL`, `UNKNOWN`.
- How many to return (`size`, number): How many rows to return, from 1 to 3000. Defaults to 25. From 1 to 3000. Default: `25`.

**Outputs**

- `count` (number): How many rows came back
- `drugs` (list)
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `target` (object): The target the list is for
- `total` (number): How many candidates exist before filtering

**Example output**

```json
{
  "count": 2,
  "drugs": [
    {
      "diseases": [
        {
          "id": "MONDO_0018874",
          "name": "acute myeloid leukemia"
        },
        {
          "id": "MONDO_0005070",
          "name": "neoplasm"
        }
      ],
      "drug": {
        "id": "CHEMBL3678958",
        "name": "RUSERONTINIB",
        "type": "Small molecule"
      },
      "max_clinical_stage": "PHASE_3"
    },
    {
      "diseases": [
        {
          "id": "MONDO_0005233",
          "name": "non-small cell lung carcinoma"
        },
        {
          "id": "MONDO_0005233",
          "name": "non-small cell lung carcinoma"
        }
      ],
      "drug": {
        "id": "CHEMBL3544983",
        "name": "TESEVATINIB",
        "type": "Small molecule"
      },
      "max_clinical_stage": "PHASE_3"
    }
  ],
  "resolved": {
    "id": "ENSG00000146648",
    "matched_on": "name",
    "name": "EGFR",
    "other_matches": [
      {
        "id": "ENSG00000224057",
        "name": "EGFR-AS1"
      },
      {
        "id": "ENSG00000151491",
        "name": "EPS8"
      }
    ]
  },
  "target": {
    "id": "ENSG00000146648",
    "symbol": "EGFR"
  },
  "total": 82
}
```

### Find papers about something

Find the papers that mention a target, disease or drug, newest first, with a link straight to each one on Europe PMC. Narrow it to a range of years to catch only what has been published recently, which is what a standing literature alert needs.

**Inputs**

- Target, disease or drug (`entity`, text, required): The thing to find papers about, as a name or an identifier. Set 'What kind of thing is it' to match.
- What kind of thing is it (`entity_type`, text): Which kind of entity the name refers to, so it resolves against the right index. Defaults to a target. One of: `target` (A target (gene or protein)), `disease` (A disease or phenotype), `drug` (A drug or clinical candidate). Default: `target`.
- Published from (`start_year`, number): Only papers published in this year or later. Leave blank for all. From 1800 to 2100.
- Published up to (`end_year`, number): Only papers published in this year or earlier. Leave blank for all. From 1800 to 2100.
- Next page cursor (`cursor`, text): Pass back the 'next_cursor' from a previous run to fetch the following batch. Leave blank to start from the beginning. This list is paged by cursor rather than by page number, and the cursor is absent on the last batch.

**Outputs**

- `count` (number): How many rows came back
- `entity_type` (text): What kind of thing the papers are about
- `matching_filters` (number): How many fall inside the years asked for
- `next_cursor` (text): Pass back as 'cursor' for the next batch; absent on the last one
- `publications` (list)
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `total` (number): How many papers mention it at all

**Example output**

```json
{
  "count": 25,
  "entity_type": "target",
  "matching_filters": 40064,
  "next_cursor": "eyJpbmRleCI6MSwic2l6ZSI6MjV9",
  "publications": [
    {
      "published": "2025-07-01",
      "pubmed_id": "40683859",
      "url": "https://europepmc.org/article/MED/40683859"
    },
    {
      "published": "2025-01-01",
      "pubmed_id": "40761246",
      "url": "https://europepmc.org/article/MED/40761246"
    }
  ],
  "resolved": {
    "id": "ENSG00000141510",
    "matched_on": "name",
    "name": "TP53",
    "other_matches": [
      {
        "id": "ENSG00000172315",
        "name": "TP53RK"
      },
      {
        "id": "ENSG00000183632",
        "name": "TP53TG3"
      }
    ]
  },
  "total": 347754
}
```

### Find similar entities

Find the targets, diseases and drugs that sit closest to one you name. Closeness is worked out from how often things are written about together across the literature, so it surfaces neighbours no single database lists as related: genes that keep appearing beside yours, diseases that behave like the one you are working on, drugs that travel in the same company.

**Inputs**

- Target, disease or drug (`entity`, text, required): The thing to find neighbours for, as a name or an identifier. Set 'What kind of thing is it' to match.
- What kind of thing is it (`entity_type`, text): Which kind of entity the name refers to, so it resolves against the right index. Defaults to a target. One of: `target` (A target (gene or protein)), `disease` (A disease or phenotype), `drug` (A drug or clinical candidate). Default: `target`.
- Only return these kinds (`related_types`, text): Limit the neighbours to particular kinds. Leave blank to get targets, diseases and drugs together. One or more of: `target` (Targets), `disease` (Diseases), `drug` (Drugs).
- Minimum closeness (`minimum_score`, number): Only return neighbours scoring at least this, from 0 to 1. Leave blank for all of them. From 0 to 1.
- How many to return (`size`, number): How many neighbours to return, from 1 to 500. Defaults to 25. From 1 to 500. Default: `25`.

**Outputs**

- `count` (number): How many neighbours came back
- `entity_type` (text): What kind of thing the neighbours were found for
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `similar` (list)

**Example output**

```json
{
  "count": 1,
  "entity_type": "target",
  "resolved": {
    "id": "ENSG00000012048",
    "matched_on": "name",
    "name": "BRCA1",
    "other_matches": [
      {
        "id": "ENSG00000267595",
        "name": "BRCA1P1"
      },
      {
        "id": "ENSG00000136492",
        "name": "BRIP1"
      }
    ]
  },
  "similar": [
    {
      "full_name": "FA complementation group L",
      "id": "ENSG00000115392",
      "name": "FANCL",
      "score": 0.8453822777443951,
      "type": "target"
    }
  ]
}
```

### Find studies for a disease

List the GWAS and molecular QTL studies that looked at a disease, with how many people took part and whether full summary statistics are available. Use it to find the genetics behind an association, or to check how well powered the evidence for a disease actually is before relying on it.

**Inputs**

- Disease (`disease`, text, required): The disease or phenotype, as a name such as 'asthma' or an ontology id such as 'MONDO_0004979'. A name is looked up for you and the response says which disease it resolved to.
- Include indirect associations (`include_indirect`, true/false): Also count evidence attached to related diseases further down the ontology. Off by default, matching the Open Targets website. Turning it on widens the net a long way: BRCA1 goes from about 1,300 diseases to about 17,000, and diseases with no direct evidence of their own can outrank the ones that have it. Default: `false`.
- How many to return (`size`, number): How many rows to return, from 1 to 3000. Defaults to 25. From 1 to 3000. Default: `25`.
- Page (`page`, number): Which page of results to return, counting from 0. Use it with 'How many to return' to walk through a long list. From 0 to 10000. Default: `0`.

**Outputs**

- `count` (number): How many rows came back
- `include_indirect` (true/false): Whether studies of related diseases were counted
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `studies` (list)
- `total` (number): How many studies exist in total

**Example output**

```json
{
  "count": 2,
  "include_indirect": false,
  "resolved": {
    "id": "MONDO_0004979",
    "matched_on": "name",
    "name": "asthma",
    "other_matches": [
      {
        "id": "MONDO_0005405",
        "name": "childhood onset asthma"
      },
      {
        "id": "MONDO_0004784",
        "name": "allergic asthma"
      }
    ]
  },
  "studies": [
    {
      "cases": 22761,
      "controls": 441248,
      "date": null,
      "first_author": null,
      "has_summary_statistics": true,
      "id": "FINNGEN_R12_ASTHMA_ACUTE_RESPIRATORY_INFECTIONS",
      "pubmed_id": "36653562",
      "sample_size": 464009,
      "study_type": "gwas",
      "trait": "Asthma-related acute respiratory infections"
    },
    {
      "cases": 3565,
      "controls": 441248,
      "date": null,
      "first_author": null,
      "has_summary_statistics": true,
      "id": "FINNGEN_R12_ASTHMA_EOSINOPHIL_SUGG",
      "pubmed_id": "36653562",
      "sample_size": 444813,
      "study_type": "gwas",
      "trait": "Suggestive for eosinophilic asthma"
    }
  ],
  "total": 279
}
```

### Find targets for a disease

The question the Platform exists to answer: which genes are worth going after for this disease. Every target comes back with a score from 0 to 1 pooling human genetics, known drugs, animal models, pathways, expression and the literature, best first, plus the same score broken down by kind of evidence so you can see what is carrying it. Narrow the scoring to genetics alone to rank by human evidence only.

**Inputs**

- Disease (`disease`, text, required): The disease or phenotype, as a name such as 'asthma' or an ontology id such as 'MONDO_0004979'. A name is looked up for you and the response says which disease it resolved to.
- Score on these kinds of evidence (`datatypes`, text): Narrow the association score to particular kinds of evidence. Leave blank to use everything, which is how the Open Targets website scores by default. Ticking 'Genetic associations' alone, for example, ranks by human genetics and ignores the rest. One or more of: `genetic_association` (Genetic associations), `somatic_mutation` (Somatic mutations), `known_drug` (Known drugs), `affected_pathway` (Affected pathways), `literature` (Literature (text mining)), `rna_expression` (RNA expression), `animal_model` (Animal models).
- Include indirect associations (`include_indirect`, true/false): Also count evidence attached to related diseases further down the ontology. Off by default, matching the Open Targets website. Turning it on widens the net a long way: BRCA1 goes from about 1,300 diseases to about 17,000, and diseases with no direct evidence of their own can outrank the ones that have it. Default: `false`.
- How many to return (`size`, number): How many rows to return, from 1 to 3000. Defaults to 25. From 1 to 3000. Default: `25`.
- Page (`page`, number): Which page of results to return, counting from 0. Use it with 'How many to return' to walk through a long list. From 0 to 10000. Default: `0`.

**Outputs**

- `count` (number): How many rows came back
- `disease` (object): The disease the list is for
- `include_indirect` (true/false): Whether evidence from related diseases was counted
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `targets` (list)
- `total` (number): How many targets are associated in total

**Example output**

```json
{
  "count": 2,
  "disease": {
    "id": "MONDO_0004979",
    "name": "asthma"
  },
  "include_indirect": false,
  "resolved": {
    "id": "MONDO_0004979",
    "matched_on": "name",
    "name": "asthma",
    "other_matches": [
      {
        "id": "MONDO_0005405",
        "name": "childhood onset asthma"
      },
      {
        "id": "MONDO_0004784",
        "name": "allergic asthma"
      }
    ]
  },
  "targets": [
    {
      "biotype": "protein_coding",
      "id": "ENSG00000077238",
      "name": "interleukin 4 receptor",
      "score": 0.741666,
      "scores_by_datatype": {
        "animal_model": 0.402724,
        "clinical": 0.9691,
        "genetic_association": 0.925066,
        "literature": 0.656219
      },
      "symbol": "IL4R",
      "target_classes": [
        "Secreted protein"
      ]
    },
    {
      "biotype": "protein_coding",
      "id": "ENSG00000143631",
      "name": "filaggrin",
      "score": 0.741328,
      "scores_by_datatype": {
        "genetic_association": 0.969372,
        "literature": 0.347116
      },
      "symbol": "FLG",
      "target_classes": []
    }
  ],
  "total": 7185
}
```

### Find what a target interacts with

List the proteins a gene's product physically interacts with or shares a pathway with, drawn from IntAct, Reactome, Signor and STRING. Use it to build the neighbourhood around a target, to find a way in when the target itself is undruggable, or to check what else a drug might disturb.

**Inputs**

- Target (`target`, text, required): The gene or protein, as a symbol such as 'TP53' or an Ensembl gene id such as 'ENSG00000141510'. A symbol is looked up for you and the response says which target it resolved to.
- Source database (`source`, text): Which interaction database to read. Leave blank for all of them. IntAct and Signor are curated from experiments, Reactome from pathways, and STRING mixes evidence including prediction. One of: `intact` (IntAct (curated experiments)), `reactome` (Reactome (pathway reactions)), `signor` (Signor (curated signalling)), `string` (STRING (mixed, includes predictions)).
- Minimum confidence (`minimum_score`, number): Only return interactions scoring at least this, from 0 to 1. Leave blank for all of them. STRING in particular returns a long tail of weak predictions, so 0.7 or higher is a useful floor. From 0 to 1.
- How many to return (`size`, number): How many rows to return, from 1 to 3000. Defaults to 25. From 1 to 3000. Default: `25`.
- Page (`page`, number): Which page of results to return, counting from 0. Use it with 'How many to return' to walk through a long list. From 0 to 10000. Default: `0`.

**Outputs**

- `count` (number): How many rows came back
- `interactions` (list)
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `target` (object): The target the list is for
- `total` (number): How many interactions exist in total

**Example output**

```json
{
  "count": 2,
  "interactions": [
    {
      "partner": {
        "id": "ENSG00000183765",
        "name": "checkpoint kinase 2",
        "symbol": "CHEK2"
      },
      "partner_role": "unspecified role",
      "role": "unspecified role",
      "score": 0.999,
      "source": "string",
      "supporting_evidence": 4
    },
    {
      "partner": {
        "id": "ENSG00000101773",
        "name": "RB binding protein 8, endonuclease",
        "symbol": "RBBP8"
      },
      "partner_role": "unspecified role",
      "role": "unspecified role",
      "score": 0.999,
      "source": "string",
      "supporting_evidence": 4
    }
  ],
  "resolved": {
    "id": "ENSG00000012048",
    "matched_on": "name",
    "name": "BRCA1",
    "other_matches": [
      {
        "id": "ENSG00000267595",
        "name": "BRCA1P1"
      },
      {
        "id": "ENSG00000136492",
        "name": "BRIP1"
      }
    ]
  },
  "target": {
    "id": "ENSG00000012048",
    "symbol": "BRCA1"
  },
  "total": 3464
}
```

### Get a disease

Look up a disease or phenotype and get its description, the names it goes by, the therapeutic areas it belongs to, and its parents and children in the ontology. The parents and children matter: Open Targets files evidence against whichever term a study used, so walking up or down is often how you find the rest of it.

**Inputs**

- Disease (`disease`, text, required): The disease or phenotype, as a name such as 'asthma' or an ontology id such as 'MONDO_0004979'. A name is looked up for you and the response says which disease it resolved to.

**Outputs**

- `children` (list): Narrower terms directly below it
- `cross_references` (list): The same disease in other vocabularies, e.g. ICD10 or MeSH
- `description` (text): What the disease is
- `id` (text): Ontology id, e.g. 'MONDO_0004979'
- `is_therapeutic_area` (true/false): Whether this term is itself a therapeutic area
- `name` (text): Name of the disease
- `parents` (list): Broader terms directly above it
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `synonyms` (list): Other names it goes by
- `therapeutic_areas` (list): Broad areas it sits under

**Example output**

```json
{
  "children": [
    {
      "id": "HP_0012042",
      "name": "Aspirin-induced asthma"
    },
    {
      "id": "MONDO_0004766",
      "name": "status asthmaticus"
    }
  ],
  "cross_references": [
    "DOID:2841",
    "HP:0002099"
  ],
  "description": "A bronchial disease that is characterized by chronic inflammation and narrowing of the airways, which is caused by a combination of environmental and genetic factors resulting in recurring periods of wheezing (a whistling sound while breath...",
  "id": "MONDO_0004979",
  "is_therapeutic_area": false,
  "name": "asthma",
  "parents": [
    {
      "id": "HP_0010978",
      "name": "Abnormality of immune system physiology"
    },
    {
      "id": "MONDO_0001358",
      "name": "bronchial disorder"
    }
  ],
  "resolved": {
    "id": "MONDO_0004979",
    "matched_on": "name",
    "name": "asthma",
    "other_matches": [
      {
        "id": "MONDO_0005405",
        "name": "childhood onset asthma"
      },
      {
        "id": "MONDO_0004784",
        "name": "allergic asthma"
      }
    ]
  },
  "synonyms": [
    "bronchial hyperreactivity",
    "chronic obstructive asthma"
  ],
  "therapeutic_areas": [
    {
      "id": "EFO_0000651",
      "name": "phenotype"
    },
    {
      "id": "OTAR_0000010",
      "name": "respiratory or thoracic disease"
    }
  ]
}
```

### Get a drug

Look up a drug or clinical candidate and get what it is, how far it has got, what it is sold as, how it works and what it acts on, plus any black box warnings and withdrawals on record. Accepts a drug name, so 'adalimumab' works as well as its ChEMBL id.

**Inputs**

- Drug (`drug`, text, required): The drug or clinical candidate, as a name such as 'adalimumab' or a ChEMBL id such as 'CHEMBL1201580'. A name is looked up for you and the response says which drug it resolved to.

**Outputs**

- `child_molecules` (list): Salts and formulations of this molecule
- `cross_references` (list): The same drug in other databases
- `description` (text): One line on what it is and how far it has got
- `drug_type` (text): e.g. 'Small molecule' or 'Antibody'
- `id` (text): ChEMBL id
- `maximum_clinical_stage` (text): Furthest stage reached across all indications
- `mechanisms_of_action` (list): How it works, and the targets it acts on
- `name` (text): Name of the drug
- `parent_molecule` (object): The molecule this one is a form of, when it is one
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `synonyms` (list): Other names it goes by
- `trade_names` (list): Brands it is sold under
- `warnings` (list): Black box warnings and withdrawals

**Example output**

```json
{
  "child_molecules": [],
  "cross_references": [
    {
      "references": [
        "human/EPAR/amgevita",
        "human/EPAR/amsparity"
      ],
      "source": "EMA"
    },
    {
      "references": [
        "adalimumab"
      ],
      "source": "DailyMed"
    }
  ],
  "description": "Antibody drug with a maximum clinical stage of Approval (across all indications), with 29 approved and 52 investigational indications.",
  "drug_type": "Antibody",
  "id": "CHEMBL1201580",
  "maximum_clinical_stage": "APPROVAL",
  "mechanisms_of_action": [
    {
      "action_type": "INHIBITOR",
      "mechanism": "TNF-alpha inhibitor",
      "target_name": "Tumor necrosis factor",
      "targets": [
        {
          "id": "ENSG00000232810",
          "symbol": "TNF"
        }
      ]
    }
  ],
  "name": "ADALIMUMAB",
  "parent_molecule": null,
  "resolved": {
    "id": "CHEMBL1201580",
    "matched_on": "name",
    "name": "ADALIMUMAB",
    "other_matches": [
      {
        "id": "CHEMBL1201581",
        "name": "INFLIXIMAB"
      },
      {
        "id": "CHEMBL1201572",
        "name": "ETANERCEPT"
      }
    ]
  },
  "synonyms": [
    "AVT-02",
    "Abp-501"
  ],
  "trade_names": [
    "Amgevita",
    "Amsparity"
  ],
  "warnings": [
    {
      "country": "United States",
      "description": null,
      "toxicity_class": "infectious disease",
      "type": "Black Box Warning",
      "year": null
    },
    {
      "country": "United States",
      "description": null,
      "toxicity_class": "carcinogenicity",
      "type": "Black Box Warning",
      "year": null
    }
  ]
}
```

### Get a drug's reported side effects

List the side effects reported for a drug, from the FDA's adverse event database, most significant first. The log likelihood ratio says how much more often an effect is reported for this drug than for drugs in general, and anything above the critical value is the significant tail: each row is flagged so a workflow can act on that without doing the statistics itself.

**Inputs**

- Drug (`drug`, text, required): The drug or clinical candidate, as a name such as 'adalimumab' or a ChEMBL id such as 'CHEMBL1201580'. A name is looked up for you and the response says which drug it resolved to.
- How many to return (`size`, number): How many rows to return, from 1 to 3000. Defaults to 25. From 1 to 3000. Default: `25`.
- Page (`page`, number): Which page of results to return, counting from 0. Use it with 'How many to return' to walk through a long list. From 0 to 10000. Default: `0`.

**Outputs**

- `adverse_events` (list)
- `count` (number): How many rows came back
- `critical_value` (number): The threshold above which an effect counts as significant
- `drug` (object): The drug the list is for
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `total` (number): How many distinct effects were reported

**Example output**

```json
{
  "adverse_events": [
    {
      "event": "injection site pain",
      "log_likelihood_ratio": 33558.32542339875,
      "meddra_code": "",
      "reports": 36582,
      "significant": true
    },
    {
      "event": "rheumatoid arthritis",
      "log_likelihood_ratio": 31700.010178783443,
      "meddra_code": "",
      "reports": 26240,
      "significant": true
    }
  ],
  "count": 2,
  "critical_value": 6377.5031374997925,
  "drug": {
    "id": "CHEMBL1201580",
    "name": "ADALIMUMAB"
  },
  "resolved": {
    "id": "CHEMBL1201580",
    "matched_on": "name",
    "name": "ADALIMUMAB",
    "other_matches": [
      {
        "id": "CHEMBL1201581",
        "name": "INFLIXIMAB"
      },
      {
        "id": "CHEMBL1201572",
        "name": "ETANERCEPT"
      }
    ]
  },
  "total": 14
}
```

### Get a study

Look up a GWAS or molecular QTL study: what it measured, how many people took part, how many were cases and controls, and the paper it came from. Study ids come from the search action or from the studies listed for a disease.

**Inputs**

- Study id (`study`, text, required): The study identifier, such as 'GCST004131' from the GWAS Catalog or 'FINNGEN_R12_ASTHMA' from FinnGen. Study ids have no single shape, so this one is taken literally rather than looked up: use 'Search Open Targets' narrowed to studies to find one.

**Outputs**

- `biosample` (object): For a QTL study, the tissue or cell type
- `cases` (number): How many had the condition
- `cohorts` (list): Cohorts the samples came from
- `controls` (number): How many did not
- `diseases` (list): Diseases the trait was mapped onto
- `has_summary_statistics` (true/false): Whether full summary statistics are available
- `id` (text): Study identifier
- `initial_sample_size` (text): The cohort as described by the study
- `project_id` (text): Project the study belongs to
- `publication` (object): PubMed id, title, first author, date and journal
- `sample_size` (number): How many people took part
- `study_type` (text): 'gwas', 'eqtl', 'pqtl' and so on
- `target` (object): For a QTL study, the gene whose expression was measured
- `trait` (text): What the study measured, in its own words

**Example output**

```json
{
  "biosample": null,
  "cases": 25042,
  "cohorts": [],
  "controls": 34915,
  "diseases": [
    {
      "id": "MONDO_0005265",
      "name": "inflammatory bowel disease"
    }
  ],
  "has_summary_statistics": true,
  "id": "GCST004131",
  "initial_sample_size": "25,042 European and unknown ancestry cases, 34,915 European and unknown ancestry controls",
  "project_id": "GCST",
  "publication": {
    "date": "2017-01-09",
    "first_author": "de Lange KM",
    "journal": "Nat Genet",
    "pubmed_id": "28067908",
    "title": "Genome-wide association study implicates immune activation of multiple integrin genes in inflammatory bowel disease."
  },
  "sample_size": 59957,
  "study_type": "gwas",
  "target": null,
  "trait": "Inflammatory bowel disease"
}
```

### Get a target

Look up a gene or protein and get back what it is, where it sits in the genome, which protein it makes, where in the cell it acts, which pathways it belongs to, whether it is essential, what safety concerns are on record, and how druggable it looks to a small molecule or an antibody. Accepts a gene symbol, so 'TP53' works as well as its Ensembl id.

**Inputs**

- Target (`target`, text, required): The gene or protein, as a symbol such as 'TP53' or an Ensembl gene id such as 'ENSG00000141510'. A symbol is looked up for you and the response says which target it resolved to.

**Outputs**

- `biotype` (text): What kind of gene it is, e.g. 'protein_coding'
- `cancer_hallmarks` (list): Cancer hallmarks it promotes or suppresses
- `description` (text): What the protein does
- `genetic_constraint` (list): How intolerant of mutation the gene is in humans
- `genomic_location` (object): Chromosome, start, end and strand
- `id` (text): Ensembl gene id
- `is_essential` (true/false): Whether knocking it out kills a cell
- `name` (text): Approved full name
- `pathways` (list): Reactome pathways it takes part in
- `protein_ids` (list): UniProt and other protein identifiers
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `safety_liabilities` (list): Known safety concerns on record
- `subcellular_locations` (list): Where in the cell it is found
- `symbol` (text): Approved gene symbol, e.g. 'TP53'
- `synonyms` (list): Other names it goes by
- `target_classes` (list): Protein family, e.g. 'Transcription factor'
- `target_enabling_package` (object): Target Enabling Package, when one exists
- `tractability` (list): Which druggability buckets it falls into, by modality. Only the ones it meets are listed

**Example output**

```json
{
  "biotype": "protein_coding",
  "cancer_hallmarks": [
    {
      "description": "induces differentiation of mouse embryonic stem cells by suppressing Nanog expression",
      "hallmark": "cell replicative immortality",
      "impact": "suppresses",
      "pubmed_id": 15619621
    },
    {
      "description": "inhibits angiogenesis through the upregulation of maspin expression",
      "hallmark": "angiogenesis",
      "impact": "suppresses",
      "pubmed_id": 10742136
    }
  ],
  "description": "Multifunctional transcription factor that induces cell cycle arrest, DNA repair or apoptosis upon binding to its target DNA sequence (PubMed:11025664, PubMed:12524540, PubMed:12810724, PubMed:15186775, PubMed:15340061, PubMed:17317671, PubM...",
  "genetic_constraint": [
    {
      "observed_over_expected": 0.8759499788284302,
      "score": 0.9583699703216553,
      "type": "syn"
    },
    {
      "observed_over_expected": 0.8636800050735474,
      "score": 1.1539000272750854,
      "type": "mis"
    }
  ],
  "genomic_location": {
    "chromosome": "17",
    "end": 7687546,
    "start": 7661779,
    "strand": -1
  },
  "id": "ENSG00000141510",
  "is_essential": false,
  "name": "tumor protein p53",
  "pathways": [
    {
      "id": "R-HSA-3232118",
      "name": "SUMOylation of transcription factors"
    },
    {
      "id": "R-HSA-2559586",
      "name": "DNA Damage/Telomere Stress Induced Senescence"
    }
  ],
  "protein_ids": [
    {
      "id": "P04637",
      "source": "uniprot_swissprot"
    },
    {
      "id": "A0A087WT22",
      "source": "uniprot_trembl"
    }
  ],
  "resolved": {
    "id": "ENSG00000141510",
    "matched_on": "name",
    "name": "TP53",
    "other_matches": [
      {
        "id": "ENSG00000172315",
        "name": "TP53RK"
      },
      {
        "id": "ENSG00000183632",
        "name": "TP53TG3"
      }
    ]
  },
  "safety_liabilities": [
    {
      "event": "drug toxicity",
      "event_id": "",
      "source": "ClinPGx"
    },
    {
      "event": "Tumorigenesis, Hepatocellular carcinoma",
      "event_id": "MONDO_0007256",
      "source": "AOP-Wiki"
    }
  ],
  "subcellular_locations": [
    "Cytoplasm",
    "Nucleus"
  ],
  "symbol": "TP53",
  "synonyms": [
    "Cellular tumor antigen p53",
    "TP53"
  ],
  "target_classes": [
    "Transcription factor"
  ],
  "target_enabling_package": null,
  "tractability": [
    {
      "assessment": "Advanced Clinical",
      "modality": "SM"
    },
    {
      "assessment": "Structure with Ligand",
      "modality": "SM"
    }
  ]
}
```

### Get a variant

Look up a genetic variant and get where it sits, what it changes, how damaging the prediction tools think it is, and how common it is in each population. Accepts an rsID such as 'rs7412' as well as the chromosome_position_reference_alternate form the Platform files it under.

**Inputs**

- Variant (`variant`, text, required): The variant, either as chromosome_position_reference_alternate such as '19_44908822_C_T', or as an rsID such as 'rs7412', which is looked up for you.

**Outputs**

- `allele_frequencies` (list): How common it is in each population
- `alternate_allele` (text): The base this variant carries instead
- `chromosome` (text): Chromosome it sits on
- `description` (text): What the variant does, where known
- `hgvs_id` (text): HGVS notation for the change
- `id` (text): Variant id as the Platform files it
- `most_severe_consequence` (object): Worst predicted effect, e.g. 'missense_variant'
- `position` (number): Position along the chromosome
- `predictions` (list): What each prediction tool makes of it, e.g. SIFT or AlphaMissense
- `reference_allele` (text): The base normally found there
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `rs_ids` (list): dbSNP rsIDs for the same variant

**Example output**

```json
{
  "allele_frequencies": [
    {
      "frequency": 0.04164195744478971,
      "population": "sas_adj"
    },
    {
      "frequency": 0.07050511124473842,
      "population": "remaining_adj"
    }
  ],
  "alternate_allele": "T",
  "chromosome": "19",
  "description": "Missense variant overlapping with APOE, causing amino-acid change: R176C with moderate impact.",
  "hgvs_id": "19:g.44908822C>T",
  "id": "19_44908822_C_T",
  "most_severe_consequence": {
    "id": "SO:0001583",
    "name": "missense_variant"
  },
  "position": 44908822,
  "predictions": [
    {
      "assessment": "missense_variant",
      "flag": null,
      "method": "VEP",
      "normalised_score": 0.6800000071525574,
      "score": 0.6800000071525574
    },
    {
      "assessment": "deleterious",
      "flag": null,
      "method": "SIFT",
      "normalised_score": 1,
      "score": 0
    }
  ],
  "reference_allele": "C",
  "resolved": {
    "id": "19_44908822_C_T",
    "matched_on": "name",
    "name": "19_44908822_C_T",
    "other_matches": [
      {
        "id": "1_161338117_T_C",
        "name": "1_161338117_T_C"
      },
      {
        "id": "10_26984223_A_T",
        "name": "10_26984223_A_T"
      }
    ]
  },
  "rs_ids": [
    "rs7412"
  ]
}
```

### Get the evidence for a link

Read the individual findings behind one target and disease link, rather than the score that summarises them. Each row names the database it came from, the kind of evidence it is, and the paper behind it where there is one. This is the action for showing your working, or for pulling the citations into a report.

**Inputs**

- Disease (`disease`, text, required): The disease or phenotype, as a name such as 'asthma' or an ontology id such as 'MONDO_0004979'. A name is looked up for you and the response says which disease it resolved to.
- Target (`target`, text, required): The gene or protein, as a symbol such as 'BRCA1' or an Ensembl gene id. Required: evidence is a statement about a target and a disease together, so both halves are needed.
- Only these databases (`datasources`, text): Limit the evidence to particular databases, for example 'europepmc' for text mining or 'eva' for ClinVar. Leave blank for all of them.
- How many to return (`size`, number): How many rows to return, from 1 to 3000. Defaults to 25. From 1 to 3000. Default: `25`.
- Next page cursor (`cursor`, text): Pass back the 'next_cursor' from a previous run to fetch the following batch. Leave blank to start from the beginning. This list is paged by cursor rather than by page number, and the cursor is absent on the last batch.

**Outputs**

- `count` (number): How many rows came back
- `disease` (object): The disease half of the pair
- `evidence` (list)
- `next_cursor` (text): Pass back as 'cursor' for the next batch; absent on the last one
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `target` (object): The target half of the pair
- `total` (number): How many pieces of evidence exist in total

**Example output**

```json
{
  "count": 2,
  "disease": {
    "id": "MONDO_0007254",
    "name": "breast cancer"
  },
  "evidence": [
    {
      "datasource": "europepmc",
      "datatype": "literature",
      "disease": {
        "id": "MONDO_0007254",
        "name": "breast cancer"
      },
      "disease_from_source": null,
      "id": "00f1509ed2f3c5ee8af182865a380cc3080a26c4",
      "publication_year": 2015,
      "pubmed_ids": [
        "26643130"
      ],
      "score": 1,
      "target": {
        "id": "ENSG00000012048",
        "symbol": "BRCA1"
      }
    },
    {
      "datasource": "uniprot_variants",
      "datatype": "genetic_association",
      "disease": {
        "id": "MONDO_0007254",
        "name": "breast cancer"
      },
      "disease_from_source": "Breast cancer",
      "id": "02bca21bdfbffde85a1de9763c48034b95075187",
      "publication_year": null,
      "pubmed_ids": [
        "17924331",
        "23867111"
      ],
      "score": 1,
      "target": {
        "id": "ENSG00000012048",
        "symbol": "BRCA1"
      }
    }
  ],
  "next_cursor": "eyJpbmRleCI6MSwic2l6ZSI6Mn0=",
  "resolved": {
    "id": "MONDO_0007254",
    "matched_on": "name",
    "name": "breast cancer",
    "other_matches": [
      {
        "id": "MONDO_0004989",
        "name": "breast carcinoma"
      },
      {
        "id": "Orphanet_145",
        "name": "Hereditary breast and ovarian cancer syndrome"
      }
    ]
  },
  "target": {
    "id": "ENSG00000012048",
    "matched_on": "name",
    "name": "BRCA1",
    "other_matches": [
      {
        "id": "ENSG00000267595",
        "name": "BRCA1P1"
      },
      {
        "id": "ENSG00000136492",
        "name": "BRIP1"
      }
    ]
  },
  "total": 41001
}
```

### Get what a drug is used for

List everything a drug is approved for or has been trialled against, with how far each one got. Use it to see the full label beyond the headline indication, to find where a molecule has already failed, or to look for repositioning room. Filter to approved alone for the on-market picture.

**Inputs**

- Drug (`drug`, text, required): The drug or clinical candidate, as a name such as 'adalimumab' or a ChEMBL id such as 'CHEMBL1201580'. A name is looked up for you and the response says which drug it resolved to.
- Clinical stages (`stages`, text): Keep only the rows that reached these stages. Leave blank for all of them. Tick 'Approved' alone to see only what is on the market. One or more of: `APPROVAL` (Approved), `PHASE_4` (Phase 4), `PHASE_3` (Phase 3), `PHASE_2` (Phase 2), `PHASE_1_2` (Phase 1/2), `PHASE_1` (Phase 1), `EARLY_PHASE_1` (Early phase 1), `PRECLINICAL`, `UNKNOWN`.
- How many to return (`size`, number): How many rows to return, from 1 to 3000. Defaults to 25. From 1 to 3000. Default: `25`.

**Outputs**

- `count` (number): How many rows came back
- `drug` (object): The drug the list is for
- `indications` (list)
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `total` (number): How many indications exist before filtering

**Example output**

```json
{
  "count": 2,
  "drug": {
    "id": "CHEMBL1201580",
    "name": "ADALIMUMAB"
  },
  "indications": [
    {
      "disease": {
        "id": "MONDO_0006651",
        "name": "anterior uveitis"
      },
      "max_clinical_stage": "UNKNOWN",
      "therapeutic_areas": [
        {
          "id": "MONDO_0024458",
          "name": "disorder of visual system"
        },
        {
          "id": "EFO_0000651",
          "name": "phenotype"
        }
      ]
    },
    {
      "disease": {
        "id": "MONDO_0006918",
        "name": "posterior uveitis"
      },
      "max_clinical_stage": "PHASE_3",
      "therapeutic_areas": [
        {
          "id": "MONDO_0024458",
          "name": "disorder of visual system"
        },
        {
          "id": "EFO_0000651",
          "name": "phenotype"
        }
      ]
    }
  ],
  "resolved": {
    "id": "CHEMBL1201580",
    "matched_on": "name",
    "name": "ADALIMUMAB",
    "other_matches": [
      {
        "id": "CHEMBL1201581",
        "name": "INFLIXIMAB"
      },
      {
        "id": "CHEMBL1201572",
        "name": "ETANERCEPT"
      }
    ]
  },
  "total": 68
}
```

### Get where a target is expressed

Read how strongly a gene is expressed across human tissues and cell types, from GTEx and single cell atlases. Use it to check a target is actually present where the disease is, and to see where else it is switched on, which is often where the side effects come from. Each row carries the median and the quartiles rather than one number.

**Inputs**

- Target (`target`, text, required): The gene or protein, as a symbol such as 'TP53' or an Ensembl gene id such as 'ENSG00000141510'. A symbol is looked up for you and the response says which target it resolved to.
- How many to return (`size`, number): How many tissue rows to return, from 1 to 3000. Defaults to 50. A well studied gene has well over a thousand. From 1 to 3000. Default: `50`.
- Page (`page`, number): Which page of results to return, counting from 0. Use it with 'How many to return' to walk through a long list. From 0 to 10000. Default: `0`.

**Outputs**

- `count` (number): How many rows came back
- `resolved` (object): What the name or id given was taken to mean, so a workflow can check the lookup rather than trusting it
- `target` (object): The target the list is for
- `tissues` (list)
- `total` (number): How many tissue measurements exist in total

**Example output**

```json
{
  "count": 2,
  "resolved": {
    "id": "ENSG00000141510",
    "matched_on": "name",
    "name": "TP53",
    "other_matches": [
      {
        "id": "ENSG00000172315",
        "name": "TP53RK"
      },
      {
        "id": "ENSG00000183632",
        "name": "TP53TG3"
      }
    ]
  },
  "target": {
    "id": "ENSG00000141510",
    "symbol": "TP53"
  },
  "tissues": [
    {
      "assay": "bulk rna-seq",
      "lower_quartile": 6.86882,
      "maximum": 39.3025,
      "median": 8.4579,
      "minimum": 2.25904,
      "source": "gtex",
      "tissue": "Pituitary",
      "tissue_id": "UBERON_0000007",
      "tissue_specificity": 0,
      "unit": "TPM",
      "upper_quartile": 10.5936
    },
    {
      "assay": "scrna-seq",
      "lower_quartile": 42.655113220214844,
      "maximum": 42.655113220214844,
      "median": 42.655113220214844,
      "minimum": 42.655113220214844,
      "source": "tabula_sapiens",
      "tissue": "endocrine pancreas",
      "tissue_id": "UBERON_0000016",
      "tissue_specificity": 0,
      "unit": "CPM(pseudobulk sum[counts])",
      "upper_quartile": 42.655113220214844
    }
  ],
  "total": 1409
}
```

### Map names to identifiers

Turn a column of names into the identifiers the Platform uses. Hand it gene symbols, disease names or drug names out of a spreadsheet and get an id per row, with anything that matched nothing listed separately rather than quietly dropped. Where a name could mean several things the closest match wins and the rest are listed beside it.

**Inputs**

- Names to map (`terms`, text, required): The names or identifiers to look up, up to 100 at a time. Accepts a list or a comma-separated string.
- Only these kinds (`entity_types`, text): Limit what the names are allowed to resolve to. Leave blank to let each name match whatever fits best. One or more of: `target` (Targets (genes and proteins)), `disease` (Diseases and phenotypes), `drug` (Drugs and clinical candidates), `variant` (Genetic variants), `study` (GWAS and QTL studies).

**Outputs**

- `count` (number): How many names resolved
- `mappings` (list)
- `unmatched` (list): Names that matched nothing at all

**Example output**

```json
{
  "count": 2,
  "mappings": [
    {
      "id": "ENSG00000012048",
      "name": "BRCA1",
      "other_matches": [],
      "term": "BRCA1",
      "type": "target"
    },
    {
      "id": "CHEMBL1201580",
      "name": "ADALIMUMAB",
      "other_matches": [
        {
          "id": "CHEMBL1201581",
          "name": "INFLIXIMAB",
          "type": "drug"
        },
        {
          "id": "CHEMBL1201833",
          "name": "GOLIMUMAB",
          "type": "drug"
        }
      ],
      "term": "adalimumab",
      "type": "drug"
    }
  ],
  "unmatched": []
}
```

### Search Open Targets

Search the whole Platform at once for a phrase and get back whatever matches: genes, diseases, drugs, variants and studies together, each with the identifier the other actions take. Use it as the first step when you have words rather than identifiers, or narrow it to one kind of thing to build a picker.

**Inputs**

- Search for (`query`, text, required): The words to search for. Matches names, symbols, synonyms and descriptions across the whole Platform.
- Only these kinds (`entity_types`, text): Limit the search to particular kinds of entity. Leave blank to search everything at once. One or more of: `target` (Targets (genes and proteins)), `disease` (Diseases and phenotypes), `drug` (Drugs and clinical candidates), `variant` (Genetic variants), `study` (GWAS and QTL studies).
- How many to return (`size`, number): How many rows to return, from 1 to 3000. Defaults to 25. From 1 to 3000. Default: `25`.
- Page (`page`, number): Which page of results to return, counting from 0. Use it with 'How many to return' to walk through a long list. From 0 to 10000. Default: `0`.

**Outputs**

- `count` (number): How many rows came back
- `query` (text): What was searched for
- `results` (list)
- `total` (number): How many matches exist in total, not just on this page

**Example output**

```json
{
  "count": 2,
  "query": "cystic fibrosis",
  "results": [
    {
      "categories": [
        "genetic, familial or congenital disease",
        "respiratory or thoracic disease"
      ],
      "description": "Autosomal recessive disorder caused by pathogenic variants in the CFTR gene (cystic fibrosis transmembrane conductance regulator), which encodes a chloride and bicarbonate channel expressed in epithelial cells, and follow the diagnosis crit...",
      "id": "MONDO_0009061",
      "name": "cystic fibrosis",
      "score": 5451.9863,
      "type": "disease"
    },
    {
      "categories": [
        "nutritional or metabolic disease",
        "phenotype"
      ],
      "description": "Cystic fibrosis-related diabetes is a form of diabetes that occurs frequently in individuals with cystic fibrosis. It has some characteristics in common with type 1 diabetes and type 2 diabetes but is distinct from both.",
      "id": "EFO_0801077",
      "name": "cystic fibrosis-related diabetes",
      "score": 942.66364,
      "type": "disease"
    }
  ],
  "total": 1042
}
```
