GeneCore
GeneCore provides access to 43K+ harmonized gene records integrated from HGNC, NCBI, UniProt, and Ensembl. Each record carries a rich set of external identifiers: Ensembl, NCBI Entrez, UniProt, MANE Select transcripts, OMIM, Orphanet, and IUPHAR, plus the HGNC gene family it belongs to.
For drug-target genes, records are enriched with comprehensive target intelligence spanning four key domains (see Target intelligence detail):
- Clinical-Precedent Tractability: Druggability and clinical-readiness buckets across small molecules, antibodies, and other modalities.
- Curated Target Safety: Known target-safety signals, clinical adverse events, and known target-modulation effects.
- Genetic & Evolutionary Constraint: Population-level intolerance to loss of function, synonymous/missense mutations, and constraint scores.
- Cellular Essentiality: Gene dependency profiles and essentiality mapping across disease model cell lines.
These records also feature an opt-in Swiss-Prot protein-annotation block and are cross-linked to their targeting drugs (DrugCore).
Endpoints
Search — GET /v1/cores/genecore/records
Keyword search across gene symbols, names, synonyms, gene families, RefSeq functional summaries, UniProt keywords, and ChEMBL target class, with optional filters for gene type and target intelligence (druggability, tractability, target class, safety, genetic constraint). Beyond exact symbols/names, free-text concept queries (e.g. tyrosine kinase, GPCR, apoptosis) match the controlled-vocabulary keyword and class fields.
curl "https://api.amass.tech/api/v1/cores/genecore/records?query=GLP1R&limit=5" \
-H "Authorization: Bearer amass_YOUR_KEY"Parameters:
| Name | Required | Default | Description |
|---|---|---|---|
query | yes | — | Search text (matched across gene symbols, names, synonyms, gene families, RefSeq functional summaries, UniProt keywords, and ChEMBL target class) |
limit | no | 20 | Results to return (1–300) |
include | no | — | Optional fields to return. Repeat for multiple: protein, referencesDrugCore |
geneType | no | — | NCBI gene type / biotype (see Gene Type values). Repeat to match ANY |
isDruggable | no | — | true keeps druggable targets (any small-molecule or antibody tractability bucket) |
isEssential | no | — | true keeps essential genes (a dependency in ≥ 1 CRISPR screen) |
targetClass | no | — | Top-level ChEMBL target class (see Target class values). Repeat to match ANY |
tractabilityModality | no | — | Clinical-precedent tractability modality (see Tractability values). Repeat to match ANY |
tractabilityStage | no | — | Clinical-precedent tractability stage (see Tractability values). Repeat to match ANY |
hasSafetyLiabilities | no | — | true keeps only genes with ≥ 1 curated target-safety liability |
maxConstraintLoeuf | no | — | Keep genes with gnomAD v4.0 LOEUF ≤ this value (lower = more loss-of-function-constrained). See Genetic constraint |
Example with filters — protein-coding genes matching a keyword:
curl "https://api.amass.tech/api/v1/cores/genecore/records\
?query=glucagon+receptor\
&geneType=PROTEIN_CODING\
&limit=20" \
-H "Authorization: Bearer amass_YOUR_KEY"Repeat geneType to match ANY of several values, e.g. geneType=PROTEIN_CODING&geneType=NCRNA.
Example with target-intelligence filters — druggable enzymes with an approved small-molecule precedent:
curl "https://api.amass.tech/api/v1/cores/genecore/records\
?query=kinase\
&targetClass=ENZYME\
&tractabilityModality=SMALL_MOLECULE\
&tractabilityStage=APPROVED_DRUG\
&isDruggable=true\
&limit=20" \
-H "Authorization: Bearer amass_YOUR_KEY"Response:
{ "data": [ { "amassId": "AMGC_...", "symbol": "GLP1R", "..." }, ... ] }Get by ID — GET /v1/cores/genecore/records/{amassId}
Fetch a single gene record by its Amass ID.
curl "https://api.amass.tech/api/v1/cores/genecore/records/AMGC_abc123\
?include=referencesDrugCore" \
-H "Authorization: Bearer amass_YOUR_KEY"Response:
{ "data": { "amassId": "AMGC_...", "symbol": "...", "..." } }Returns 404 if not found, or 400 if the Amass ID is malformed.
Lookup — POST /v1/cores/genecore/records/lookup
Convert public gene identifiers to Amass IDs in batch. Each item carries exactly one identifier key — an empty item, or one with several identifier keys, is rejected.
| Key | Identifier | Example |
|---|---|---|
ensemblGeneId | Ensembl stable gene ID | ENSG00000146648 |
hgncId | HGNC ID (with the HGNC: prefix) | HGNC:3236 |
entrezGeneId | NCBI Entrez gene ID | 1956 |
uniprotId | UniProt accession | P00533 |
symbol | Approved gene symbol | EGFR |
omimId | OMIM ID | 131550 |
orphanet | Orphanet ID | 30815 |
iuphar | IUPHAR/Guide to Pharmacology target ID | 1797 |
curl -X POST "https://api.amass.tech/api/v1/cores/genecore/records/lookup" \
-H "Authorization: Bearer amass_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "ensemblGeneId": "ENSG00000146648" },
{ "symbol": "EGFR" },
{ "uniprotId": "P00533" },
{ "ensemblGeneId": "ENSG99999999999" }
]
}'Response:
{
"data": [
{
"input": { "ensemblGeneId": "ENSG00000146648" },
"amassIds": ["AMGC_abc123"]
},
{
"input": { "symbol": "EGFR" },
"amassIds": ["AMGC_abc123"]
},
{
"input": { "uniprotId": "P00533" },
"amassIds": ["AMGC_abc123"]
},
{
"input": { "ensemblGeneId": "ENSG99999999999" },
"error": { "code": "NOT_FOUND", "message": "Gene record not found." }
}
]
}Identifiers are matched against the genes namespace before an Amass ID is issued, so unknown IDs come back as NOT_FOUND rather than a dangling AMGC_. Most identifiers resolve to a single gene; a shared uniprotId/omimId may return more than one AMGC_. Individual items can fail without failing the whole request — always check each item for an error field.
Record Schema
Default fields (always returned)
| Field | Type | Description |
|---|---|---|
amassId | string | Unique Amass identifier (AMGC_...) |
ensemblGeneId | string | null | Ensembl stable gene identifier (e.g. ENSG00000141510) |
symbol | string | null | Approved gene symbol (e.g. TP53) |
name | string | null | Full gene name |
synonyms | string[] | Alternative symbols / aliases for the gene |
geneType | string | null | NCBI gene type / biotype (see Gene Type values) |
summary | string | null | NCBI RefSeq curated free-text functional description of the gene |
location | string | null | Cytogenetic location / chromosomal band (e.g. 17p13.1) |
chromosome | string | null | Chromosome the gene resides on (e.g. 17, X) |
strand | string | null | Genomic strand: + (forward) or - (reverse) |
entrezGeneId | string | null | NCBI Entrez gene identifier |
hgncId | string | null | HGNC identifier (e.g. HGNC:11998) |
uniprotIds | string[] | Associated UniProt accession(s) |
hgncGeneGroups | object[] | HGNC gene groups (families) the gene belongs to; each { id, name } pairs a stable HGNC group id with its name (e.g. { "id": "1332", "name": "MTOR complex 1" }), resolvable at genenames.org/data/genegroup |
maneSelect | string[] | MANE Select canonical transcript id(s) (RefSeq + Ensembl) |
omimId | string[] | OMIM identifier(s) for associated Mendelian disease/phenotype |
orphanet | string | null | Orphanet rare-disease identifier |
iuphar | string | null | IUPHAR/Guide to Pharmacology target identifier |
The remaining default fields are target-intelligence objects — returned by default, but null when no data for the gene (see Target intelligence detail for each object's shape):
| Field | Type | Description |
|---|---|---|
tractability | object | null | Druggability buckets by modality (small molecule / antibody / protac / other clinical), split into clinical-precedent vs. predictive evidence |
safetyLiabilities | object[] | null | Curated target-safety signals (adverse events), each with datasource, source drugs/assays, and modulation effects |
targetClass | object | null | ChEMBL target-class hierarchy as an ordered path (broadest → leaf) plus the leaf ChEMBL class id |
gnomadConstraint | object | null | gnomAD v4.0 gene-constraint summary by variant class (synonymous/missense/lossOfFunction); LOEUF and pLI under lossOfFunction |
depmapEssentiality | object | null | CRISPR dependency-screen essentiality summary: dependency flag, gene-effect distribution, and most-dependent cell lines |
Optional fields
Request these with the include parameter. Repeat for multiple: ?include=protein&include=referencesDrugCore
| Field | Include value | Type | Description |
|---|---|---|---|
protein | protein | object | null | Representative UniProt Swiss-Prot protein for the gene — identity, function/disease, biophysics, and structure. null when the gene encodes no reviewed protein. See Protein |
referencesDrugCore | referencesDrugCore | string[] | Cross-core link → DrugCore. Amass IDs of DrugCore records (drugs/molecules) that target this gene, linking genes to their pharmacology |
Reference field semantics
╔══════════════ GeneCore (genes) ══════════════╗
║ ║
║ ┌──────────┐ ║
║ │ AMGC_X │ ║
║ └──────────┘ ║
║ ║
╚══════════════════════════════════════════════╝
│
referencesDrugCore
= [AMDC_d01, AMDC_d02]
│
▼
╔═══════ DrugCore (drugs) ═══════╗
║ ║
║ AMDC_d01 AMDC_d02 ║
║ ║
╚════════════════════════════════╝- Cross-core arrows leave GeneCore —
referencesDrugCoretargets start withAMDC_. - Inside DrugCore, the linked records carry their own reference fields (trials, literature, regulatory authorizations) — see DrugCore.
- GeneCore records have no intra-core hierarchy; every link points out to another core.
Target intelligence detail
Each record carries target-intelligence objects, returned by default and null when no target intelligence is recorded for the gene. The objects below describe the returned shape; each also documents its matching search filter. Many genes (especially non-protein-coding) have no target intelligence at all.
Tractability
tractability is keyed by drug modality — smallMolecule, antibody, protac, otherClinical — and each modality splits its satisfied druggability buckets into two lanes:
| Field | Type | Description |
|---|---|---|
<modality>.clinical | string[] | Satisfied clinical-precedent buckets: Approved Drug, Advanced Clinical, Phase 1 Clinical |
<modality>.predictive | string[] | Satisfied predictive-evidence buckets (structural pockets, ligands, localization, …) |
Filter — two enum params, each repeatable (OR), combined as a cross-product where an omitted dimension means "any":
tractabilityModality:SMALL_MOLECULE,ANTIBODY,PROTAC,OTHER_CLINICALtractabilityStage:APPROVED_DRUG,ADVANCED_CLINICAL,PHASE_1_CLINICAL
tractabilityModality=SMALL_MOLECULE alone matches any clinical stage; pair with tractabilityStage to require a stage. Only the three clinical-precedent stages are filterable — the predictive lane is returned but not filterable. isDruggable=true is a shortcut for "any satisfied small-molecule or antibody bucket".
Target class
targetClass is the ChEMBL protein-classification hierarchy collapsed to an ordered path:
| Field | Type | Description |
|---|---|---|
path | string[] | Class labels broadest → most specific, e.g. ["Enzyme", "Transferase"] |
leafChemblClassId | number | null | ChEMBL protein-classification id of the most specific (leaf) class in the path |
Filter — targetClass, a repeatable (OR) enum of the top-level (broadest) classes only; the full path is still returned, but deeper levels (e.g. Kinase) are not filterable. Values: ENZYME, MEMBRANE_RECEPTOR, ION_CHANNEL, TRANSPORTER, TRANSCRIPTION_FACTOR, EPIGENETIC_REGULATOR, SECRETED_PROTEIN, SURFACE_ANTIGEN, STRUCTURAL_PROTEIN, ADHESION, OTHER_CYTOSOLIC_PROTEIN, OTHER_NUCLEAR_PROTEIN, AUXILIARY_TRANSPORT_PROTEIN, UNCLASSIFIED_PROTEIN.
Safety liabilities
safetyLiabilities is an array of curated target-safety signals, each:
| Field | Type | Description |
|---|---|---|
event | string | null | The adverse event / safety term (e.g. cardiotoxicity) |
datasource | string | null | Curating source for the signal, as reported upstream |
url | string | null | Datasource link for the gene |
effects | object[] | Modulation that produces the event: { direction, dosing } |
biosamples | string[] | Cell/tissue labels the signal was observed in (e.g. ["HepaRG"]) |
sources | object[] | Triggering drugs / assays: { name, type } |
Filter — hasSafetyLiabilities=true keeps only genes with at least one liability. The event vocabulary is curated free text, so it is not filterable by value — filter on presence and read the events from the response.
Genetic constraint (gnomAD v4.0)
gnomadConstraint summarizes gnomAD v4.0 Gene Constraint, keyed by variant class — synonymous, missense, and lossOfFunction. Each class carries observed vs. expected variant counts and their ratio (oe, with oeLower / oeUpper bounds; the synonymous / missense classes also carry a constraint Z-score under constraintZ). The headline loss-of-function metrics live under lossOfFunction:
| Field | Meaning |
|---|---|
lossOfFunction.loeuf | LOEUF — loss-of-function observed/expected upper-bound fraction (lower = more intolerant). Mirrors lossOfFunction.oeUpper, surfaced by name to match the maxConstraintLoeuf filter |
lossOfFunction.pli | gnomAD pLI — probability of loss-of-function intolerance |
lossOfFunction.loeufDecile | LOEUF decile (0 = most-constrained 10% of genes) |
lossOfFunction.loeufRank | Genome-wide LOEUF rank (lower = more constrained) |
LOEUF guidance. LOEUF is a continuous metric of a gene's intolerance to loss-of-function variation, and we encourage using it as such. However, if your application requires a binary threshold to define loss-of-function (LoF) constrained genes, use these recommended cutoffs for gnomAD v4.0 (the version displayed in this API):
- LOEUF: Use LOEUF < 0.6 (note that the distribution shifted from < 0.35 in gnomAD v2.1.1).
- pLI: Use pLI ≥ 0.9 (remains stable across versions).
- LOEUF Deciles: Alternatively, filter by the first decile, as relative rankings are highly consistent across releases.
Filter — maxConstraintLoeuf keeps genes whose LOEUF (lossOfFunction.loeuf) is ≤ the value you pass (a lower bound selects more-constrained genes):
curl "https://api.amass.tech/api/v1/cores/genecore/records\
?query=kinase\
&maxConstraintLoeuf=0.6\
&limit=20" \
-H "Authorization: Bearer amass_YOUR_KEY"Essentiality
depmapEssentiality summarizes the CRISPR dependency screens for the gene:
| Field | Type | Description |
|---|---|---|
isEssential | boolean | Gene-level flag: a dependency in at least one screen |
cellLinesTested | number | Cell lines with a gene-effect measurement |
dependentCellLines | number | Cell lines whose gene-effect is below the dependency cutoff (< -0.5) |
meanGeneEffect / medianGeneEffect | number | null | Central tendency of the gene-effect distribution |
minGeneEffect | number | null | Most negative gene-effect (the strongest dependency) |
topDependencies | object[] | Most-dependent cell lines (capped at 10), each { cellLineName, depmapId, tissue, disease, geneEffect, expression } |
A more negative gene-effect means a stronger dependency. Filter — isEssential=true keeps genes flagged as a dependency.
Protein (include=protein)
Opt in with ?include=protein. protein is one representative UniProt Swiss-Prot entry per gene (prose fields from the canonical entry; list fields unioned across matched entries), grouped into four blocks:
| Block | Fields |
|---|---|
identity | canonicalAccession, entryName, annotationScore (1–5), evidenceLevel, mappedAccessions[] (populated only when > 1 entry was collapsed) |
function | functionSummary, associatedDiseases, tissueSpecificity, keywords[], subcellularLocations[] |
biophysics | sequenceLength, molecularMassDa, ecNumbers[], ptmSummary, ptmTypes[] |
structure | has3dStructure, pdbIds[], pfamIds[], interproIds[] |
protein is null when the gene encodes no reviewed Swiss-Prot protein.
Filter Values
Gene Type
NCBI gene type / biotype (joined from NCBI Gene by Entrez ID). Use with the geneType search filter or read from the geneType field.
| Value | Description |
|---|---|
PROTEIN_CODING | Protein-coding gene |
NCRNA | Non-coding RNA gene |
PSEUDO | Pseudogene |
TRNA | Transfer RNA |
RRNA | Ribosomal RNA |
SNRNA | Small nuclear RNA |
SCRNA | Small cytoplasmic RNA |
SNORNA | Small nucleolar RNA |
MISCRNA | Miscellaneous RNA |
BIOLOGICAL_REGION | Biological region |
TRANSPOSON | Transposon |
OTHER | Other |
See Also
- DrugCore — Drug and molecule records
- TrialCore — Clinical trial records
- BiomedCore — Biomedical literature records
- RegulatoryCore — FDA/EMA regulatory authorization records
- API Workflows — See GeneCore in action: target prioritization, genetic constraint filters, and mapping targets to clinical pharmacology
- Overview — Errors and rate limits
- Quickstart — Getting started with examples