NCI Glossary Term API

Serves the NCI Dictionary of Cancer Terms — the authoritative plain-language and health-professional definitions used across cancer.gov and by the NCI Dictionary Widget. Supports autosuggest, full-text search, alphabetical expansion and per-term retrieval by id or pretty URL name, in English and Spanish, for both Patient and HealthProfessional audiences. No credential required.

Operations 8

GET /Autosuggest/{dictionary}/{audience}/{language}/{searchText} Search for Terms based on autosuggest criteria #
GET /HealthCheck/status Provides an endpoint for checking that the glossary API and underlying Elasticsearch instance are in a good operational state. #
GET /Terms/{dictionary}/{audience}/{language}/{id} Retrieve the details of a Glossary Term by ID value. #
GET /Terms/{dictionary}/{audience}/{language}/{prettyUrlName} Get the Glossary Term based on Pretty URL Name. #
GET /Terms/{dictionary}/{audience}/{language} Retrieves a portion of the overall set of glossary terms for a given combination of dictionary, audience, and language. #
GET /Terms/expand/{dictionary}/{audience}/{language}/{character} Get all Terms starting with the character passed. #
GET /Terms/count/{dictionary}/{audience}/{language} Get the total number of terms available in the version of a dictionary matching a specific audience and language. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/glossary-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cancer-gov-glossary-openapi.yml Raw ↑
x-generator: NSwag v13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))
openapi: 3.0.0
info:
  title: Glossary Term API
  description: API for Glossary Term
  version: 1.0.0
  x-apis-io-source: https://webapis.cancer.gov/glossary/v1/swagger/v1/swagger.json
  x-apis-io-harvested: '2026-09-05'
  x-apis-io-method: searched
servers:
- url: https://webapis.cancer.gov/glossary/v1
  description: Production host (resolved from the URL this specification was served from; the published document
    carries '/glossary/v1')
paths:
  /Autosuggest/{dictionary}/{audience}/{language}/{searchText}:
    get:
      tags:
      - Autosuggest
      summary: Search for Terms based on autosuggest criteria
      operationId: Autosuggest_GetSuggestions
      parameters:
      - name: dictionary
        in: path
        required: true
        description: The specific dictionary to retrieve from.
        schema:
          type: string
        x-position: 1
      - name: audience
        in: path
        required: true
        description: The target audience.
        schema:
          $ref: '#/components/schemas/AudienceType'
        x-position: 2
      - name: language
        in: path
        required: true
        description: Language (English - en; Spanish - es).
        schema:
          type: string
        x-position: 3
      - name: searchText
        in: path
        required: true
        description: Text to match against
        schema:
          type: string
        x-position: 4
      - name: matchType
        in: query
        description: Should the search match items beginning with the search text (Begin), or containing it (Contains)?
        schema:
          default: Begins
          oneOf:
          - $ref: '#/components/schemas/MatchType'
        x-position: 5
      - name: size
        in: query
        description: The number of records to retrieve.
        schema:
          type: integer
          format: int32
          default: 20
        x-position: 6
      responses:
        '200':
          description: An array GlossaryTerm objects
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Suggestion'
  /HealthCheck/status:
    get:
      tags:
      - HealthCheck
      summary: 'Provides an endpoint for checking that the glossary API and underlying Elasticsearch instance

        are in a good operational state.'
      operationId: HealthCheck_IsHealthy
      responses:
        '200':
          description: "Status 200 and the message \"alive!\" if the service is healthy.\n            \n       \
            \      Status 500  and the message \"Service not healthy.\" otherwise."
          content:
            application/json:
              schema:
                type: string
  /Terms/{dictionary}/{audience}/{language}/{id}:
    get:
      tags:
      - Terms
      summary: Retrieve the details of a Glossary Term by ID value.
      operationId: Terms_GetById
      parameters:
      - name: dictionary
        in: path
        required: true
        description: "The dictionary to use. Valid values are \"cancer.gov\" for the Dictionary of Cancer Terms\n\
          \            and \"genetics\" for the Dictionary of Genetics Terms."
        schema:
          type: string
        x-position: 1
      - name: audience
        in: path
        required: true
        description: The intended audience.
        schema:
          $ref: '#/components/schemas/AudienceType'
        x-position: 2
      - name: language
        in: path
        required: true
        description: The language in which to fetch the details. Valid values are "en" for English and "es" for
          Spanish.
        schema:
          type: string
        x-position: 3
      - name: id
        in: path
        required: true
        description: The term's ID
        schema:
          type: integer
          format: int64
        x-position: 4
      - name: useFallback
        in: query
        description: Set true to use falback logic if the term isn't available for the specified combination of
          audience and dictionary.
        schema:
          type: boolean
          default: false
        x-position: 5
      responses:
        '200':
          description: GlossaryTerm object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryTerm'
  /Terms/{dictionary}/{audience}/{language}/{prettyUrlName}:
    get:
      tags:
      - Terms
      summary: Get the Glossary Term based on Pretty URL Name.
      operationId: Terms_GetByName
      parameters:
      - name: dictionary
        in: path
        required: true
        description: "The dictionary to use. Valid values are \"cancer.gov\" for the Dictionary of Cancer Terms\n\
          \            and \"genetics\" for the Dictionary of Genetics Terms."
        schema:
          type: string
        x-position: 1
      - name: audience
        in: path
        required: true
        description: The intended audience.
        schema:
          $ref: '#/components/schemas/AudienceType'
        x-position: 2
      - name: language
        in: path
        required: true
        description: The language in which to fetch the details. Valid values are "en" for English and "es" for
          Spanish.
        schema:
          type: string
        x-position: 3
      - name: prettyUrlName
        in: path
        required: true
        description: The term's name as a path segment.
        schema:
          type: string
        x-position: 4
      - name: useFallback
        in: query
        description: Set true to use falback logic if the term isn't available for the specified combination of
          audience and dictionary.
        schema:
          type: boolean
          default: false
        x-position: 5
      responses:
        '200':
          description: GlossaryTerm object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryTerm'
  /Terms/{dictionary}/{audience}/{language}:
    get:
      tags:
      - Terms
      summary: Retrieves a portion of the overall set of glossary terms for a given combination of dictionary, audience,
        and language.
      operationId: Terms_GetAll
      parameters:
      - name: dictionary
        in: path
        required: true
        description: "The dictionary to use. Valid values are \"cancer.gov\" for the Dictionary of Cancer Terms\n\
          \            and \"genetics\" for the Dictionary of Genetics Terms."
        schema:
          type: string
        x-position: 1
      - name: audience
        in: path
        required: true
        description: The target audience.
        schema:
          $ref: '#/components/schemas/AudienceType'
        x-position: 2
      - name: language
        in: path
        required: true
        description: Language (English - en; Spanish - es).
        schema:
          type: string
        x-position: 3
      - name: size
        in: query
        description: The number of records to retrieve.
        schema:
          type: integer
          format: int32
          default: 100
        x-position: 4
      - name: from
        in: query
        description: The offset into the overall set to use for the first record.
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 5
      - name: includeAdditionalInfo
        in: query
        description: If true, the RelatedResources and Media fields will be populated. Else, they will be empty.
        schema:
          type: boolean
          default: false
        x-position: 6
      responses:
        '200':
          description: A GlossaryTermResults object containing the desired records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryTermResults'
  /Terms/search/{dictionary}/{audience}/{language}/{query}:
    get:
      tags:
      - Terms
      summary: Search for Terms based on search criteria
      operationId: Terms_Search
      parameters:
      - name: dictionary
        in: path
        required: true
        description: The specific dictionary to retrieve from.
        schema:
          type: string
        x-position: 1
      - name: audience
        in: path
        required: true
        description: The target audience.
        schema:
          $ref: '#/components/schemas/AudienceType'
        x-position: 2
      - name: language
        in: path
        required: true
        description: Language (English - en; Spanish - es).
        schema:
          type: string
        x-position: 3
      - name: query
        in: path
        required: true
        description: The string to search for.
        schema:
          type: string
        x-position: 4
      - name: matchType
        in: query
        description: "Should the search match items beginning with the search text (Begins),\n            containing\
          \ it (Contains), or an exact match (Exact)?"
        schema:
          default: Begins
          oneOf:
          - $ref: '#/components/schemas/MatchType'
        x-position: 5
      - name: size
        in: query
        description: The number of records to retrieve.
        schema:
          type: integer
          format: int32
          default: 100
        x-position: 6
      - name: from
        in: query
        description: The offset into the overall set to use for the first record.
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 7
      - name: includeAdditionalInfo
        in: query
        description: If true, the RelatedResources and Media fields will be populated. Else, they will be empty.
        schema:
          type: boolean
          default: false
        x-position: 8
      responses:
        '200':
          description: A GlossaryTermResults object containing the desired records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryTermResults'
  /Terms/expand/{dictionary}/{audience}/{language}/{character}:
    get:
      tags:
      - Terms
      summary: Get all Terms starting with the character passed.
      operationId: Terms_Expand
      parameters:
      - name: dictionary
        in: path
        required: true
        description: The specific dictionary to retrieve from.
        schema:
          type: string
        x-position: 1
      - name: audience
        in: path
        required: true
        description: The target audience.
        schema:
          $ref: '#/components/schemas/AudienceType'
        x-position: 2
      - name: language
        in: path
        required: true
        description: Language (English - en; Spanish - es).
        schema:
          type: string
        x-position: 3
      - name: character
        in: path
        required: true
        description: The character to search the query
        schema:
          type: string
        x-position: 4
      - name: size
        in: query
        description: The number of records to retrieve.
        schema:
          type: integer
          format: int32
          default: 100
        x-position: 5
      - name: from
        in: query
        description: The offset into the overall set to use for the first record.
        schema:
          type: integer
          format: int32
          default: 0
        x-position: 6
      - name: includeAdditionalInfo
        in: query
        description: If true, the RelatedResources and Media fields will be populated. Else, they will be empty.
        schema:
          type: boolean
          default: false
        x-position: 7
      responses:
        '200':
          description: A GlossaryTermResults object containing the desired records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryTermResults'
  /Terms/count/{dictionary}/{audience}/{language}:
    get:
      tags:
      - Terms
      summary: Get the total number of terms available in the version of a dictionary matching a specific audience
        and language.
      operationId: Terms_GetCount
      parameters:
      - name: dictionary
        in: path
        required: true
        description: The specific dictionary to retrieve from.
        schema:
          type: string
        x-position: 1
      - name: audience
        in: path
        required: true
        description: The target audience.
        schema:
          $ref: '#/components/schemas/AudienceType'
        x-position: 2
      - name: language
        in: path
        required: true
        description: Language (English - en; Spanish - es).
        schema:
          type: string
        x-position: 3
      responses:
        '200':
          description: The number of terms available.
          content:
            application/json:
              schema:
                type: integer
                format: int64
components:
  schemas:
    Suggestion:
      type: object
      description: Describes a single suggestion from autosuggest
      additionalProperties: false
      properties:
        termId:
          type: integer
          description: The term's CDR ID.
          format: int64
        termName:
          type: string
          description: Gets or sets the Name of the Glosary Term.
          nullable: true
    AudienceType:
      type: string
      description: Friendly names for the specific audience a glossary term is intended for.
      x-enumNames:
      - Patient
      - HealthProfessional
      enum:
      - Patient
      - HealthProfessional
    MatchType:
      type: string
      description: Friendly names for the ways to perform a match.
      x-enumNames:
      - Begins
      - Contains
      - Exact
      enum:
      - Begins
      - Contains
      - Exact
    GlossaryTerm:
      type: object
      description: The GlossaryTerm class
      additionalProperties: false
      properties:
        termId:
          type: integer
          description: Gets or sets the Id for the Glosary Term
          format: int64
        language:
          type: string
          description: Gets or sets the Language for the Glosary Term
          nullable: true
        dictionary:
          type: string
          description: Gets or sets the Dictionary for the Glosary Term
          nullable: true
        audience:
          description: Gets or sets the AudienceType for the Glosary Term
          oneOf:
          - $ref: '#/components/schemas/AudienceType'
        termName:
          type: string
          description: Gets or sets the TermName for the Glosary Term
          nullable: true
        firstLetter:
          type: string
          description: Gets or sets the FirstLetter for the Glosary Term
          nullable: true
        prettyUrlName:
          type: string
          description: Gets or sets the prettyUrlName for the Glosary Term
          nullable: true
        pronunciation:
          description: Gets or sets the pronunciation for the Glosary Term
          nullable: true
          oneOf:
          - $ref: '#/components/schemas/Pronunciation'
        definition:
          description: Gets or sets the Definition for the Glosary Term
          nullable: true
          oneOf:
          - $ref: '#/components/schemas/Definition'
        otherLanguages:
          type: array
          description: Gets or sets the translations of this term.
          nullable: true
          items:
            $ref: '#/components/schemas/TermOtherLanguage'
        relatedResources:
          type: array
          description: Gets or sets the Definition for the Glosary Term
          nullable: true
          items:
            $ref: '#/components/schemas/IRelatedResource'
        media:
          type: array
          description: Gets or sets the Definition for the Glosary Term
          nullable: true
          items:
            $ref: '#/components/schemas/IMedia'
    Pronunciation:
      type: object
      description: Class representing the details required for Pronunciation
      additionalProperties: false
      properties:
        key:
          type: string
          description: Gets or sets the Key for Pronunciation
          nullable: true
        audio:
          type: string
          description: Gets or sets the value for Audio for Pronunciation
          nullable: true
    Definition:
      type: object
      description: AudienceType enum
      additionalProperties: false
      properties:
        html:
          type: string
          description: Gets or sets the html value for the definition
          nullable: true
        text:
          type: string
          description: Gets or sets the text for the definition
          nullable: true
    TermOtherLanguage:
      type: object
      description: Represets a glossary term in another language
      additionalProperties: false
      properties:
        language:
          type: string
          description: Gets or sets the Language for the Glosary Term
          nullable: true
        termName:
          type: string
          description: Gets or sets the TermName for the translation
          nullable: true
        prettyUrlName:
          type: string
          description: If available, the translation's human readable name, rendered in a URL-friendly format.
          nullable: true
    IRelatedResource:
      type: object
      description: Describes a GlossaryTerm's related resource.
      x-abstract: true
      additionalProperties: false
      properties:
        type:
          description: Notes the related resource type.
          oneOf:
          - $ref: '#/components/schemas/RelatedResourceType'
        text:
          type: string
          description: Short text description or name of the resource.
          nullable: true
    RelatedResourceType:
      type: integer
      description: RelatedResourceType enum
      x-enumNames:
      - DrugSummary
      - Summary
      - External
      - GlossaryTerm
      enum:
      - 0
      - 1
      - 2
      - 3
    IMedia:
      type: object
      description: Notes a media item, type determined by the Type property.
      x-abstract: true
      additionalProperties: false
      properties:
        type:
          description: type of media to be used
          oneOf:
          - $ref: '#/components/schemas/MediaType'
    MediaType:
      type: integer
      description: MediaType enum
      x-enumNames:
      - Image
      - Video
      enum:
      - 0
      - 1
    GlossaryTermResults:
      type: object
      description: Represents the results of a glossary search operation.
      additionalProperties: false
      properties:
        meta:
          description: Metadata about the results.
          nullable: true
          oneOf:
          - $ref: '#/components/schemas/ResultsMetadata'
        results:
          type: array
          description: Array of GlossaryTerm objects matching the search. May be empty.
          nullable: true
          items:
            $ref: '#/components/schemas/GlossaryTerm'
        links:
          description: Link to ????
          nullable: true
          oneOf:
          - $ref: '#/components/schemas/Metalink'
    ResultsMetadata:
      type: object
      description: Metadata about a GlossaryResults object.
      additionalProperties: false
      properties:
        totalResults:
          type: integer
          description: The total number of results available.
          format: int32
        from:
          type: integer
          description: Offset into the overall list where the current set begins.
          format: int32
    Metalink:
      type: object
      description: Metalink
      additionalProperties: false
      properties:
        self:
          type: string
          description: url
          format: uri
          nullable: true