National Institutes of Health (NIH) Studies API

Related to clinical trial studies

Operations 5

GET /studies Studies #
GET /studies/{nctId} Single Study #
GET /studies/metadata Data Model Fields #
GET /studies/search-areas Search Areas #
GET /studies/enums Enums #

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/nih-studies-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

nih-studies-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ClinicalTrials.gov REST Studies API
  description: This API is made available to provide users meta data, statistics, and the most recent version of the clinical trials available on ClinicalTrials.gov.
  version: 2.0.5
servers:
- url: https://clinicaltrials.gov/api/v2
  description: This server
tags:
- name: Studies
  description: Related to clinical trial studies
paths:
  /studies:
    get:
      summary: Studies
      description: "Returns data of studies matching query and filter parameters. The studies are returned page by page.\nIf response contains `nextPageToken`, use its value in `pageToken` to get next page.\nThe last page will not contain `nextPageToken`. A page may have empty `studies` array.\nRequest for each subsequent page **must** have the same parameters as for the first page, except\n`countTotal`, `pageSize`, and `pageToken` parameters.\n\nIf neither queries nor filters are set, all studies will be returned.\nIf any query parameter contains only NCT IDs (comma- and/or space-separated), filters are ignored.\n\n`query.*` parameters are in [Essie expression syntax](/find-studies/constructing-complex-search-queries).\nThose parameters affect ranking of studies, if sorted by relevance. See `sort` parameter for details.\n\n`filter.*` and `postFilter.*` parameters have same effect as there is no aggregation calculation. \nBoth are available just to simplify applying parameters from search request.\nBoth do not affect ranking of studies.\n\nNote: When trying JSON format in your browser, do not set too large `pageSize` parameter, if `fields` is\nunlimited. That may return too much data for the browser to parse and render."
      tags:
      - Studies
      operationId: listStudies
      parameters:
      - name: format
        in: query
        description: 'Must be one of the following:

          * `csv`- return CSV table with one page of study data; first page will contain header with column names; available fields are listed on [CSV Download](/data-api/about-api/csv-download) page

          * `json`- return JSON with one page of study data; every study object is placed in a separate line; `markup` type fields format depends on `markupFormat` parameter'
        required: false
        schema:
          type: string
          enum:
          - csv
          - json
          default: json
      - name: markupFormat
        in: query
        description: 'Format of `markup` type fields:

          * `markdown`- [markdown](https://spec.commonmark.org/0.28/) format

          * `legacy`- compatible with classic PRS


          Applicable only to `json` format.'
        required: false
        schema:
          type: string
          enum:
          - markdown
          - legacy
          default: markdown
      - name: query.cond
        in: query
        description: '"Conditions or disease" query in [Essie expression syntax](/find-studies/constructing-complex-search-queries). See "ConditionSearch Area" on [Search Areas](/data-api/about-api/search-areas#ConditionSearch) for more details.'
        required: false
        schema:
          type: string
        examples:
          example1:
            value: lung cancer
          example2:
            value: (head OR neck) AND pain
      - name: query.term
        in: query
        description: '"Other terms" query in [Essie expression syntax](/find-studies/constructing-complex-search-queries). See "BasicSearch Area" on [Search Areas](/data-api/about-api/search-areas#BasicSearch) for more details.'
        required: false
        schema:
          type: string
        examples:
          example1:
            value: AREA[LastUpdatePostDate]RANGE[2023-01-15,MAX]
      - name: query.locn
        in: query
        description: '"Location terms" query in [Essie expression syntax](/find-studies/constructing-complex-search-queries). See "LocationSearch Area" on [Search Areas](/data-api/about-api/search-areas#LocationSearch) for more details.'
        required: false
        schema:
          type: string
      - name: query.titles
        in: query
        description: '"Title / acronym" query in [Essie expression syntax](/find-studies/constructing-complex-search-queries). See "TitleSearch Area" on [Search Areas](/data-api/about-api/search-areas#TitleSearch) for more details.'
        required: false
        schema:
          type: string
      - name: query.intr
        in: query
        description: '"Intervention / treatment" query in [Essie expression syntax](/find-studies/constructing-complex-search-queries). See "InterventionSearch Area" on [Search Areas](/data-api/about-api/search-areas#InterventionSearch) for more details.'
        required: false
        schema:
          type: string
      - name: query.outc
        in: query
        description: '"Outcome measure" query in [Essie expression syntax](/find-studies/constructing-complex-search-queries). See "OutcomeSearch Area" on [Search Areas](/data-api/about-api/search-areas#OutcomeSearch) for more details.'
        required: false
        schema:
          type: string
      - name: query.spons
        in: query
        description: '"Sponsor / collaborator" query in [Essie expression syntax](/find-studies/constructing-complex-search-queries). See "SponsorSearch Area" on [Search Areas](/data-api/about-api/search-areas#SponsorSearch) for more details.'
        required: false
        schema:
          type: string
      - name: query.lead
        in: query
        description: Searches in "LeadSponsorName" field. See [Study Data Structure](/data-api/about-api/study-data-structure#LeadSponsorName) for more details. The query is in [Essie expression syntax](/find-studies/constructing-complex-search-queries).
        required: false
        schema:
          type: string
      - name: query.id
        in: query
        description: '"Study IDs" query in [Essie expression syntax](/find-studies/constructing-complex-search-queries). See "IdSearch Area" on [Search Areas](/data-api/about-api/search-areas#IdSearch) for more details.'
        required: false
        schema:
          type: string
      - name: query.patient
        in: query
        description: See "PatientSearch Area" on [Search Areas](/data-api/about-api/search-areas#PatientSearch) for more details.
        required: false
        schema:
          type: string
      - name: filter.overallStatus
        in: query
        style: pipeDelimited
        explode: false
        description: Filter by comma- or pipe-separated list of statuses
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        examples:
          example1:
            value:
            - NOT_YET_RECRUITING
            - RECRUITING
          example2:
            value:
            - COMPLETED
      - name: filter.geo
        in: query
        description: 'Filter by geo-function. Currently only distance function is supported.

          Format: `distance(latitude,longitude,distance)`'
        required: false
        schema:
          type: string
          pattern: ^distance\(-?\d+(\.\d+)?,-?\d+(\.\d+)?,\d+(\.\d+)?(km|mi)?\)$
        examples:
          example1:
            value: distance(39.0035707,-77.1013313,50mi)
      - name: filter.ids
        in: query
        style: pipeDelimited
        explode: false
        description: 'Filter by comma- or pipe-separated list of NCT IDs (a.k.a. ClinicalTrials.gov identifiers).

          The provided IDs will be searched in [NCTId](data-api/about-api/study-data-structure#NCTId) and

          [NCTIdAlias](data-api/about-api/study-data-structure#NCTIdAlias) fields.'
        required: false
        schema:
          type: array
          items:
            type: string
            pattern: ^[Nn][Cc][Tt]0*[1-9]\d{0,7}$
        examples:
          example1:
            value:
            - NCT04852770
            - NCT01728545
            - NCT02109302
      - name: filter.advanced
        in: query
        description: Filter by query in [Essie expression syntax](/find-studies/constructing-complex-search-queries)
        required: false
        schema:
          type: string
        examples:
          example1:
            value: AREA[StartDate]2022
          example2:
            value: AREA[MinimumAge]RANGE[MIN, 16 years] AND AREA[MaximumAge]RANGE[16 years, MAX]
      - name: filter.synonyms
        in: query
        style: pipeDelimited
        explode: false
        description: Filter by comma- or pipe-separated list of `area`:`synonym_id` pairs
        required: false
        schema:
          type: array
          items:
            type: string
        examples:
          example1:
            value:
            - ConditionSearch:1651367
            - BasicSearch:2013558
      - name: postFilter.overallStatus
        in: query
        style: pipeDelimited
        explode: false
        description: Filter by comma- or pipe-separated list of statuses
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        examples:
          example1:
            value:
            - NOT_YET_RECRUITING
            - RECRUITING
          example2:
            value:
            - COMPLETED
      - name: postFilter.geo
        in: query
        description: 'Filter by geo-function. Currently only distance function is supported.

          Format: `distance(latitude,longitude,distance)`'
        required: false
        schema:
          type: string
          pattern: ^distance\(-?\d+(\.\d+)?,-?\d+(\.\d+)?,\d+(\.\d+)?(km|mi)?\)$
        examples:
          example1:
            value: distance(39.0035707,-77.1013313,50mi)
      - name: postFilter.ids
        in: query
        style: pipeDelimited
        explode: false
        description: 'Filter by comma- or pipe-separated list of NCT IDs (a.k.a. ClinicalTrials.gov identifiers).

          The provided IDs will be searched in [NCTId](data-api/about-api/study-data-structure#NCTId) and

          [NCTIdAlias](data-api/about-api/study-data-structure#NCTIdAlias) fields.'
        required: false
        schema:
          type: array
          items:
            type: string
            pattern: ^[Nn][Cc][Tt]0*[1-9]\d{0,7}$
        examples:
          example1:
            value:
            - NCT04852770
            - NCT01728545
            - NCT02109302
      - name: postFilter.advanced
        in: query
        description: Filter by query in [Essie expression syntax](/find-studies/constructing-complex-search-queries)
        required: false
        schema:
          type: string
        examples:
          example1:
            value: AREA[StartDate]2022
          example2:
            value: AREA[MinimumAge]RANGE[MIN, 16 years] AND AREA[MaximumAge]RANGE[16 years, MAX]
      - name: postFilter.synonyms
        in: query
        style: pipeDelimited
        explode: false
        description: Filter by comma- or pipe-separated list of `area`:`synonym_id` pairs
        required: false
        schema:
          type: array
          items:
            type: string
        examples:
          example1:
            value:
            - ConditionSearch:1651367
            - BasicSearch:2013558
      - name: aggFilters
        in: query
        description: 'Apply aggregation filters, aggregation counts will not be provided.

          The value is comma- or pipe-separated list of pairs `filter_id`:`space-separated list of option keys` for the checked options.'
        required: false
        schema:
          type: string
        examples:
          example1:
            value: results:with,status:com
          example2:
            value: status:not rec,sex:f,healthy:y
      - name: geoDecay
        in: query
        description: 'Set proximity factor by distance from `filter.geo` location to the closest [LocationGeoPoint](/data-api/about-api/study-data-structure#LocationGeoPoint) of a study.

          Ignored, if `filter.geo` parameter is not set or response contains more than 10,000 studies.'
        required: false
        schema:
          type: string
          pattern: ^func:(gauss|exp|linear),scale:(\d+(\.\d+)?(km|mi)),offset:(\d+(\.\d+)?(km|mi)),decay:(\d+(\.\d+)?)$
          default: func:exp,scale:300mi,offset:0mi,decay:0.5
        examples:
          example1:
            value: func:linear,scale:100km,offset:10km,decay:0.1
          example2:
            value: func:gauss,scale:500mi,offset:0mi,decay:0.3
      - name: fields
        in: query
        style: pipeDelimited
        explode: false
        description: 'If specified, must be non-empty comma- or pipe-separated list of fields to return. If unspecified, all fields will be returned.

          Order of the fields does not matter.


          For `csv` format, specify list of columns. The column names are available on [CSV Download](/data-api/about-api/csv-download).


          For `json` format, every list item is either area name, piece name, field name, or special name.

          If a piece or a field is a branch node, all descendant fields will be included.

          All area names are available on [Search Areas](/data-api/about-api/search-areas),

          the piece and field names — on [Data Structure](/data-api/about-api/study-data-structure) and also can be retrieved at `/studies/metadata` endpoint.

          There is a special name, `@query`, which expands to all fields queried by search.'
        required: false
        schema:
          type: array
          minItems: 1
          items:
            type: string
            pattern: ^([a-zA-Z][a-zA-Z0-9\-. ]*)|(@query)$
        examples:
          example1:
            value:
            - NCTId
            - BriefTitle
            - OverallStatus
            - HasResults
          example2:
            value: ProtocolSection
      - name: sort
        in: query
        style: pipeDelimited
        explode: false
        description: 'Comma- or pipe-separated list of sorting options of the studies. The returning studies are not sorted by default for a performance reason.

          Every list item contains a field/piece name and an optional sort direction (`asc` for ascending or `desc` for descending)

          after colon character.


          All piece and field names can be found on [Data Structure](/data-api/about-api/study-data-structure) and also can be retrieved

          at `/studies/metadata` endpoint. Currently, only date and numeric fields are allowed for sorting.

          There is a special "field" `@relevance` to sort by relevance to a search query.


          Studies missing sort field are always last. Default sort direction:

          * Date field - `desc`

          * Numeric field - `asc`

          * `@relevance` - `desc`'
        required: false
        schema:
          type: array
          maxItems: 2
          default: []
          items:
            type: string
            pattern: ^(([a-zA-Z][a-zA-Z0-9\-. ]*)|(@relevance))(:(asc|desc))?$
        examples:
          example1:
            value:
            - '@relevance'
          example2:
            value:
            - LastUpdatePostDate
          example3:
            value:
            - EnrollmentCount:desc
            - NumArmGroups
      - name: countTotal
        in: query
        description: 'Count total number of studies in all pages and return `totalCount` field with first page, if `true`.

          For CSV, the result can be found in `x-total-count` response header.

          The parameter is ignored for the subsequent pages.'
        required: false
        schema:
          type: boolean
          default: false
      - name: pageSize
        in: query
        description: 'Page size is maximum number of studies to return in response. It does not have to be the same for every page.

          If not specified or set to 0, the default value will be used. It will be coerced down to  1,000, if greater than that.'
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
          default: 10
        examples:
          example1:
            value: 2
          example2:
            value: 100
      - name: pageToken
        in: query
        description: 'Token to get next page. Set it to a `nextPageToken` value returned with the previous page in JSON format.

          For CSV, it can be found in `x-next-page-token` response header.

          Do not specify it for first page.'
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PagedStudies'
              example:
                totalCount: 438897
                studies:
                - protocolSection:
                    identificationModule:
                      nctId: NCT03540771
                      briefTitle: Introducing Palliative Care (PC) Within the Treatment of End Stage Liver Disease (ESLD)
                    statusModule:
                      overallStatus: RECRUITING
                  hasResults: false
                - protocolSection:
                    identificationModule:
                      nctId: NCT03630471
                      briefTitle: Effectiveness of a Problem-solving Intervention for Common Adolescent Mental Health Problems in India
                    statusModule:
                      overallStatus: COMPLETED
                  hasResults: false
                - protocolSection:
                    identificationModule:
                      nctId: NCT00587795
                      briefTitle: Orthopedic Study of the Aircast StabilAir Wrist Fracture Brace
                    statusModule:
                      overallStatus: TERMINATED
                  hasResults: true
                nextPageToken: abracadabra
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/errorMessage'
  /studies/{nctId}:
    get:
      summary: Single Study
      description: Returns data of a single study.
      tags:
      - Studies
      operationId: fetchStudy
      parameters:
      - name: nctId
        in: path
        description: 'NCT Number of a study. If found in [NCTIdAlias](data-api/about-api/study-data-structure#NCTIdAlias) field,

          301 HTTP redirect to the actual study will be returned.'
        required: true
        schema:
          type: string
          pattern: ^[Nn][Cc][Tt]0*[1-9]\d{0,7}$
        examples:
          example1:
            value: NCT00841061
          example2:
            value: NCT04000165
      - name: format
        in: query
        description: 'Must be one of the following:

          * `csv`- return CSV table; available fields are listed on [CSV Download](/data-api/about-api/csv-download)

          * `json`- return JSON object; format of `markup` fields depends on `markupFormat` parameter

          * `json.zip`- put JSON object into a .json file and download it as zip archive; field values of type `markup` are in [markdown](https://spec.commonmark.org/0.28/) format

          * `fhir.json` - return FHIR JSON; fields are not customizable; see [Access Data in FHIR](/data-api/fhir)

          * `ris`- return RIS record; available tags are listed on [RIS Download](/data-api/about-api/ris-download)'
        required: false
        schema:
          type: string
          enum:
          - csv
          - json
          - json.zip
          - fhir.json
          - ris
          default: json
      - name: markupFormat
        in: query
        description: 'Format of `markup` type fields:

          * `markdown`- [markdown](https://spec.commonmark.org/0.28/) format

          * `legacy`- compatible with classic PRS


          Applicable only to `json` format.'
        required: false
        schema:
          type: string
          enum:
          - markdown
          - legacy
          default: markdown
      - name: fields
        in: query
        style: pipeDelimited
        explode: false
        description: 'If specified, must be non-empty comma- or pipe-separated list of fields to return. If unspecified, all fields will be returned.

          Order of the fields does not matter.


          For `csv` format, specify list of columns. The column names are available on [CSV Download](/data-api/about-api/csv-download).


          For `json` and `json.zip` formats, every list item is either area name, piece name, or field name.

          If a piece or a field is a branch node, all descendant fields will be included.

          All area names are available on [Search Areas](/data-api/about-api/search-areas),

          the piece and field names - on [Data Structure](/data-api/about-api/study-data-structure) and also can be retrieved at `/studies/metadata` endpoint.


          For `fhir.json` format, all available fields are returned and this parameter must be unspecified.


          For `ris` format, specify list of tags. The tag names are available on [RIS Download](/data-api/about-api/ris-download).'
        required: false
        schema:
          type: array
          minItems: 1
          items:
            type: string
            pattern: ^[a-zA-Z][a-zA-Z0-9\-. ]*$
        examples:
          example1:
            value:
            - NCTId
            - BriefTitle
            - Reference
          example2:
            value:
            - ConditionsModule
            - EligibilityModule
      responses:
        '200':
          description: OK
          content:
            text/csv:
              schema:
                $ref: '#/components/schemas/StudiesCsv'
            application/json:
              schema:
                $ref: '#/components/schemas/Study'
            application/zip:
              schema:
                $ref: '#/components/schemas/StudiesZip'
            application/fhir+json:
              schema:
                $ref: '#/components/schemas/StudyFhir'
        '301':
          description: Moved Permanently
          content: {}
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/errorMessage'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/errorMessage'
  /studies/metadata:
    get:
      summary: Data Model Fields
      description: Returns study data model fields.
      tags:
      - Studies
      operationId: studiesMetadata
      parameters:
      - name: includeIndexedOnly
        in: query
        description: Include indexed-only fields, if `true`
        required: false
        schema:
          type: boolean
          default: false
      - name: includeHistoricOnly
        in: query
        description: Include fields available only in historic data, if `true`
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FieldNodeList'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/errorMessage'
  /studies/search-areas:
    get:
      summary: Search Areas
      description: Search Docs and their Search Areas.
      tags:
      - Studies
      operationId: searchAreas
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchDocumentList'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/errorMessage'
  /studies/enums:
    get:
      summary: Enums
      description: "Returns enumeration types and their values.\n\nEvery item of the returning array represents enum type and contains the following properties:\n* `type` - enum type name\n* `pieces` - array of names of all data pieces having the enum type\n* `values` - all available values of the enum; every item contains the following properties:\n  * `value` - data value\n  * `legacyValue` - data value in legacy API\n  * `exceptions` - map from data piece name to legacy value when different from `legacyValue`\n    (some data pieces had special enum values in legacy API)"
      tags:
      - Studies
      operationId: enums
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnumInfoList'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/errorMessage'
components:
  schemas:
    AgreementRestrictionType:
      type: string
      enum:
      - LTE60
      - GT60
      - OTHER
    DescriptionModule:
      type: object
      properties:
        briefSummary:
          type: string
        detailedDescription:
          type: string
    NonInferiorityType:
      type: string
      enum:
      - SUPERIORITY
      - NON_INFERIORITY
      - EQUIVALENCE
      - OTHER
      - NON_INFERIORITY_OR_EQUIVALENCE
      - SUPERIORITY_OR_OTHER
      - NON_INFERIORITY_OR_EQUIVALENCE_LEGACY
      - SUPERIORITY_OR_OTHER_LEGACY
    FirstMcpInfo:
      type: object
      properties:
        postDateStruct:
          $ref: '#/components/schemas/DateStruct'
    EnrollmentType:
      type: string
      enum:
      - ACTUAL
      - ESTIMATED
    RecruitmentStatus:
      type: string
      enum:
      - ACTIVE_NOT_RECRUITING
      - COMPLETED
      - ENROLLING_BY_INVITATION
      - NOT_YET_RECRUITING
      - RECRUITING
      - SUSPENDED
      - TERMINATED
      - WITHDRAWN
      - AVAILABLE
    MeasureParam:
      type: string
      enum:
      - GEOMETRIC_MEAN
      - GEOMETRIC_LEAST_SQUARES_MEAN
      - LEAST_SQUARES_MEAN
      - LOG_MEAN
      - MEAN
      - MEDIAN
      - NUMBER
      - COUNT_OF_PARTICIPANTS
      - COUNT_OF_UNITS
    DateTimeMinutes:
      type: string
      description: Date and time in `yyyy-MM-dd'T'HH:mm` format
    ProtocolSection:
      type: object
      properties:
        identificationModule:
          $ref: '#/components/schemas/IdentificationModule'
        statusModule:
          $ref: '#/components/schemas/StatusModule'
        sponsorCollaboratorsModule:
          $ref: '#/components/schemas/SponsorCollaboratorsModule'
        oversightModule:
          $ref: '#/components/schemas/OversightModule'
        descriptionModule:
          $ref: '#/components/schemas/DescriptionModule'
        conditionsModule:
          $ref: '#/components/schemas/ConditionsModule'
        designModule:
          $ref: '#/components/schemas/DesignModule'
        armsInterventionsModule:
          $ref: '#/components/schemas/ArmsInterventionsModule'
        outcomesModule:
          $ref: '#/components/schemas/OutcomesModule'
        eligibilityModule:
          $ref: '#/components/schemas/EligibilityModule'
        contactsLocationsModule:
          $ref: '#/components/schemas/ContactsLocationsModule'
        referencesModule:
          $ref: '#/components/schemas/ReferencesModule'
        ipdSharingStatementModule:
          $ref: '#/components/schemas/IpdSharingStatementModule'
    EligibilityModule:
      type: object
      properties:
        eligibilityCriteria:
          type: string
        healthyVolunteers:
          type: boolean
        sex:
          $ref: '#/components/schemas/Sex'
        genderBased:
          type: boolean
        genderDescription:
          type: string
        minimumAge:
          type: string
          pattern: ^\d+ (Year|Years|Month|Months|Week|Weeks|Day|Days|Hour|Hours|Minute|Minutes)$
        maximumAge:
          type: string
          pattern: ^\d+ (Year|Years|Month|Months|Week|Weeks|Day|Days|Hour|Hours|Minute|Minutes)$
        stdAges:
          type: array
          items:
            $ref: '#/components/schemas/StandardAge'
        studyPopulation:
          type: string
        samplingMethod:
          $ref: '#/components/schemas/SamplingMethod'
    SearchDocumentList:
      type: array
      items:
        $ref: '#/components/schemas/SearchDocument'
    AvailIpd:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        url:
          type: string
        comment:
          type: string
    Contact:
      type: object
      properties:
        name:
          type: string
        role:
          $ref: '#/components/schemas/ContactRole'
        phone:
          type: string
        phoneExt:
          type: string
        email:
          type: string
    ObservationalModel:
      type: string
      enum:
      - COHORT
      - CASE_CONTROL
      - CASE_ONLY
      - CASE_CROSSOVER
      - ECOLOGIC_OR_COMMUNITY
      - FAMILY_BASED
      - DEFINED_POPULATION
      - NATURAL_HISTORY
      - OTHER
    SecondaryIdType:
      type: string
      enum:
      - NIH
      - FDA
      - VA
      - CDC
      - AHRQ
      - SAMHSA
      - OTHER_GRANT
      - EUDRACT_NUMBER
      - CTIS
      - REGISTRY
      - OTHER
    ConfidenceIntervalNumSides:
      type: string
      enum:
      - ONE_SIDED
      - TWO_SIDED
    AdverseEventsModule:
      type: object
      properties:
        frequencyThreshold:
          type: string
        timeFrame:
          type: string
        description:
          type: string
        allCauseMortalityComment:
          type: string
        eventGroups:
          type: array
          items:
            $ref: '#/components/schemas/EventGroup'
        seriousEvents:
          type: array
          items:
            $ref: '#/components/schemas/AdverseEvent'
        otherEvents:
          type: array
          items:
            $ref: '#/components/schemas/AdverseEvent'
    BrowseModule:
      type: object
      properties:
        meshes:
          type: array
          items:
            $ref: '#/components/schemas/Mesh'
        ancestors:
          type: array
          items:
            $ref: '#/components/schemas/Mesh'
        browseLeaves:
          type: array
          items:
            $ref: '#/components/schemas/BrowseLeaf'
        browseBranches:
          type: array
          items:
            $ref: '#/components/schemas/BrowseBranch'
    StudyList:
      title: Array of studies
      description: '`study` field values of type `markup` are in markdown format.

        '
      type: array
      items:
        $ref: '#/components/schemas/Study'
    MoreInfoModule:
      type: object
      properties:
        limitationsAndCaveats:
          $ref: '#/components/schemas/LimitationsAndCaveats'
        certainAgreement:
          $ref: '#/components/schemas/CertainAgreement'
        pointOfContact:
          $ref: '#/components/schemas/PointOfContact'
    DropWithdraw:
      type: object
      properties:
        type:
          type: string
        comment:
          type: string
        reasons:
          type: array
          items:
            $ref: '#/components/schemas/FlowStats'
    UnpostedAnnotation:
      type: object
      properties:
        unpostedResponsibleParty:
          type: string
        unpostedEvents:
          type: array
          items:
            $ref: '#/components/schemas/UnpostedEvent'
    DateStruct:
      type: object
      properties:
        date:
          type: string
          format: date
        type:
          $ref: '#/components/schemas/DateType'
    ExpandedAccessInfo:
      type: object
      properties:
        hasExpandedAccess:
          type: boolean
        nctId:
          $ref: '#/components/schemas/nct'
        statusForNctId:
          $ref: '#/components/schemas/ExpandedAccessStatus'
    SeeAlsoLink:
      type: object
      properties:
        label:
          type: string
        url:
          type: string
    GeoPoint:
      type: object
      properties:
        lat:
          type: number
        lon:
          type: number
      required:
      - lat
      - lon
    StandardAge:
      type: string
      enum:
      - CHILD
      - ADULT
      - OLDER_ADULT
    BrowseLeafRelevance:
      type: string
      enum:
      - LOW
      - HIGH
    UnpostedEvent:
     

# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nih/refs/heads/main/openapi/nih-studies-api-openapi.yml