Amass logo
Build AssistantDocumentationAPI ReferenceApp gallery
Sign inSign up

Search documentation

Search the documentation by keyword

Getting Started
  • Overview
  • Quickstart
  • Authentication
  • Roadmap
  • Pricing
For AI Agents
  • LLM Quick Reference
Amass Cores
  • BiomedCore
  • DrugCore
  • GeneCore
  • PatentCore
  • RegulatoryCore
  • TrialCore
Examples
  • Starter Agent
  • API Workflows
  • Amass SKILL.md

    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.

    Shell
    curl "https://api.amass.tech/api/v1/cores/genecore/records?query=GLP1R&limit=5" \
      -H "Authorization: Bearer amass_YOUR_KEY"

    Parameters:

    NameRequiredDefaultDescription
    queryyes—Search text (matched across gene symbols, names, synonyms, gene families, RefSeq functional summaries, UniProt keywords, and ChEMBL target class)
    limitno20Results to return (1–300)
    includeno—Optional fields to return. Repeat for multiple: protein, referencesDrugCore
    geneTypeno—NCBI gene type / biotype (see Gene Type values). Repeat to match ANY
    isDruggableno—true keeps druggable targets (any small-molecule or antibody tractability bucket)
    isEssentialno—true keeps essential genes (a dependency in ≥ 1 CRISPR screen)
    targetClassno—Top-level ChEMBL target class (see Target class values). Repeat to match ANY
    tractabilityModalityno—Clinical-precedent tractability modality (see Tractability values). Repeat to match ANY
    tractabilityStageno—Clinical-precedent tractability stage (see Tractability values). Repeat to match ANY
    hasSafetyLiabilitiesno—true keeps only genes with ≥ 1 curated target-safety liability
    maxConstraintLoeufno—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:

    Shell
    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:

    Shell
    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:

    JSON
    { "data": [ { "amassId": "AMGC_...", "symbol": "GLP1R", "..." }, ... ] }

    Get by ID — GET /v1/cores/genecore/records/{amassId}

    Fetch a single gene record by its Amass ID.

    Shell
    curl "https://api.amass.tech/api/v1/cores/genecore/records/AMGC_abc123\
    ?include=referencesDrugCore" \
      -H "Authorization: Bearer amass_YOUR_KEY"

    Response:

    JSON
    { "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.

    KeyIdentifierExample
    ensemblGeneIdEnsembl stable gene IDENSG00000146648
    hgncIdHGNC ID (with the HGNC: prefix)HGNC:3236
    entrezGeneIdNCBI Entrez gene ID1956
    uniprotIdUniProt accessionP00533
    symbolApproved gene symbolEGFR
    omimIdOMIM ID131550
    orphanetOrphanet ID30815
    iupharIUPHAR/Guide to Pharmacology target ID1797
    Shell
    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:

    JSON
    {
      "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)

    FieldTypeDescription
    amassIdstringUnique Amass identifier (AMGC_...)
    ensemblGeneIdstring | nullEnsembl stable gene identifier (e.g. ENSG00000141510)
    symbolstring | nullApproved gene symbol (e.g. TP53)
    namestring | nullFull gene name
    synonymsstring[]Alternative symbols / aliases for the gene
    geneTypestring | nullNCBI gene type / biotype (see Gene Type values)
    summarystring | nullNCBI RefSeq curated free-text functional description of the gene
    locationstring | nullCytogenetic location / chromosomal band (e.g. 17p13.1)
    chromosomestring | nullChromosome the gene resides on (e.g. 17, X)
    strandstring | nullGenomic strand: + (forward) or - (reverse)
    entrezGeneIdstring | nullNCBI Entrez gene identifier
    hgncIdstring | nullHGNC identifier (e.g. HGNC:11998)
    uniprotIdsstring[]Associated UniProt accession(s)
    hgncGeneGroupsobject[]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
    maneSelectstring[]MANE Select canonical transcript id(s) (RefSeq + Ensembl)
    omimIdstring[]OMIM identifier(s) for associated Mendelian disease/phenotype
    orphanetstring | nullOrphanet rare-disease identifier
    iupharstring | nullIUPHAR/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):

    FieldTypeDescription
    tractabilityobject | nullDruggability buckets by modality (small molecule / antibody / protac / other clinical), split into clinical-precedent vs. predictive evidence
    safetyLiabilitiesobject[] | nullCurated target-safety signals (adverse events), each with datasource, source drugs/assays, and modulation effects
    targetClassobject | nullChEMBL target-class hierarchy as an ordered path (broadest → leaf) plus the leaf ChEMBL class id
    gnomadConstraintobject | nullgnomAD v4.0 gene-constraint summary by variant class (synonymous/missense/lossOfFunction); LOEUF and pLI under lossOfFunction
    depmapEssentialityobject | nullCRISPR 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

    FieldInclude valueTypeDescription
    proteinproteinobject | nullRepresentative UniProt Swiss-Prot protein for the gene — identity, function/disease, biophysics, and structure. null when the gene encodes no reviewed protein. See Protein
    referencesDrugCorereferencesDrugCorestring[]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 — referencesDrugCore targets start with AMDC_.
    • 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:

    FieldTypeDescription
    <modality>.clinicalstring[]Satisfied clinical-precedent buckets: Approved Drug, Advanced Clinical, Phase 1 Clinical
    <modality>.predictivestring[]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_CLINICAL
    • tractabilityStage: 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:

    FieldTypeDescription
    pathstring[]Class labels broadest → most specific, e.g. ["Enzyme", "Transferase"]
    leafChemblClassIdnumber | nullChEMBL 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:

    FieldTypeDescription
    eventstring | nullThe adverse event / safety term (e.g. cardiotoxicity)
    datasourcestring | nullCurating source for the signal, as reported upstream
    urlstring | nullDatasource link for the gene
    effectsobject[]Modulation that produces the event: { direction, dosing }
    biosamplesstring[]Cell/tissue labels the signal was observed in (e.g. ["HepaRG"])
    sourcesobject[]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:

    FieldMeaning
    lossOfFunction.loeufLOEUF — loss-of-function observed/expected upper-bound fraction (lower = more intolerant). Mirrors lossOfFunction.oeUpper, surfaced by name to match the maxConstraintLoeuf filter
    lossOfFunction.plignomAD pLI — probability of loss-of-function intolerance
    lossOfFunction.loeufDecileLOEUF decile (0 = most-constrained 10% of genes)
    lossOfFunction.loeufRankGenome-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):

    Shell
    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:

    FieldTypeDescription
    isEssentialbooleanGene-level flag: a dependency in at least one screen
    cellLinesTestednumberCell lines with a gene-effect measurement
    dependentCellLinesnumberCell lines whose gene-effect is below the dependency cutoff (< -0.5)
    meanGeneEffect / medianGeneEffectnumber | nullCentral tendency of the gene-effect distribution
    minGeneEffectnumber | nullMost negative gene-effect (the strongest dependency)
    topDependenciesobject[]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:

    BlockFields
    identitycanonicalAccession, entryName, annotationScore (1–5), evidenceLevel, mappedAccessions[] (populated only when > 1 entry was collapsed)
    functionfunctionSummary, associatedDiseases, tissueSpecificity, keywords[], subcellularLocations[]
    biophysicssequenceLength, molecularMassDa, ecNumbers[], ptmSummary, ptmTypes[]
    structurehas3dStructure, 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.

    ValueDescription
    PROTEIN_CODINGProtein-coding gene
    NCRNANon-coding RNA gene
    PSEUDOPseudogene
    TRNATransfer RNA
    RRNARibosomal RNA
    SNRNASmall nuclear RNA
    SCRNASmall cytoplasmic RNA
    SNORNASmall nucleolar RNA
    MISCRNAMiscellaneous RNA
    BIOLOGICAL_REGIONBiological region
    TRANSPOSONTransposon
    OTHEROther

    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