STRING Enrichment API

Functional enrichment analysis

OpenAPI Specification

string-db-enrichment-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: STRING REST Enrichment API
  description: 'STRING is a protein-protein interaction network database providing scored associations between proteins across thousands of organisms. The REST API enables programmatic access to interaction scores, network visualizations, functional enrichment analysis, homology data, and protein annotations. STRING integrates data from genomic context, co-expression, text mining, biochemical and genetic experiments, and curated databases.

    '
  version: '12.0'
  contact:
    name: STRING Consortium
    url: https://string-db.org
  license:
    name: Creative Commons Attribution
    url: https://string-db.org/cgi/access?footer_active_subpage=licensing
  termsOfService: https://string-db.org/cgi/info?footer_active_subpage=cookies
servers:
- url: https://string-db.org
  description: STRING Production Server
security: []
tags:
- name: enrichment
  description: Functional enrichment analysis
paths:
  /api/{format}/enrichment:
    get:
      operationId: getFunctionalEnrichment
      summary: Functional Enrichment
      description: 'Perform functional enrichment analysis for a set of proteins. Returns enriched GO terms (biological process, molecular function, cellular component), KEGG pathways, Reactome pathways, Pfam domains, InterPro domains, SMART domains, and tissue/disease annotations.

        '
      tags:
      - enrichment
      parameters:
      - $ref: '#/components/parameters/format'
      - name: identifiers
        in: query
        required: true
        description: Protein identifiers, newline-separated (%0d in URL)
        schema:
          type: string
      - $ref: '#/components/parameters/species'
      - name: background_string_identifiers
        in: query
        required: false
        description: Custom background gene set as STRING identifiers for enrichment calculation
        schema:
          type: string
      - name: allow_pubmed
        in: query
        required: false
        description: Include PubMed text mining term enrichment (1=include)
        schema:
          type: integer
          enum:
          - 0
          - 1
          default: 0
      - $ref: '#/components/parameters/caller_identity'
      responses:
        '200':
          description: Enriched functional terms with statistics
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/TsvResponse'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EnrichmentResult'
        '400':
          $ref: '#/components/responses/BadRequest'
    post:
      operationId: getFunctionalEnrichmentPost
      summary: Functional Enrichment (POST)
      tags:
      - enrichment
      parameters:
      - $ref: '#/components/parameters/format'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - identifiers
              properties:
                identifiers:
                  type: string
                species:
                  type: integer
                background_string_identifiers:
                  type: string
                allow_pubmed:
                  type: integer
                  enum:
                  - 0
                  - 1
                caller_identity:
                  type: string
      responses:
        '200':
          description: Enriched functional terms
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/TsvResponse'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EnrichmentResult'
  /api/{format}/enrichmentfigure:
    get:
      operationId: getEnrichmentFigure
      summary: Enrichment Figure
      description: Generate a visual figure (image) of enrichment analysis results for a protein set.
      tags:
      - enrichment
      parameters:
      - $ref: '#/components/parameters/formatImage'
      - name: identifiers
        in: query
        required: true
        description: Protein identifiers, newline-separated (%0d in URL)
        schema:
          type: string
      - $ref: '#/components/parameters/species'
      - $ref: '#/components/parameters/caller_identity'
      responses:
        '200':
          description: Enrichment figure image
          content:
            image/png:
              schema:
                type: string
                format: binary
            image/svg+xml:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
  /api/{format}/ppi_enrichment:
    get:
      operationId: getPpiEnrichment
      summary: PPI Enrichment
      description: 'Test whether the interactions in a set of proteins are more significant than expected by random chance given the size and connectivity of the proteome. Returns an observed interaction count, expected count, p-value, and average interaction score.

        '
      tags:
      - enrichment
      parameters:
      - $ref: '#/components/parameters/formatPpi'
      - name: identifiers
        in: query
        required: true
        description: Protein identifiers, newline-separated (%0d in URL)
        schema:
          type: string
      - $ref: '#/components/parameters/species'
      - $ref: '#/components/parameters/required_score'
      - $ref: '#/components/parameters/network_type'
      - $ref: '#/components/parameters/caller_identity'
      responses:
        '200':
          description: PPI enrichment statistics
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/TsvResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/PpiEnrichment'
        '400':
          $ref: '#/components/responses/BadRequest'
components:
  parameters:
    formatPpi:
      name: format
      in: path
      required: true
      description: Output format
      schema:
        type: string
        enum:
        - tsv
        - json
        - xml
        example: json
    caller_identity:
      name: caller_identity
      in: query
      required: false
      description: 'A string identifying your application or organization. Strongly recommended; helps STRING admins contact you if there are issues.

        '
      schema:
        type: string
        example: my_bioinformatics_pipeline
    format:
      name: format
      in: path
      required: true
      description: Output format
      schema:
        type: string
        enum:
        - tsv
        - tsv-no-header
        - json
        - xml
        example: json
    network_type:
      name: network_type
      in: query
      required: false
      description: Type of STRING network to use
      schema:
        type: string
        enum:
        - functional
        - physical
        default: functional
    species:
      name: species
      in: query
      required: false
      description: 'NCBI taxon ID to restrict results to a specific organism. Common values: 9606 (human), 10090 (mouse), 10116 (rat), 7227 (D. melanogaster), 6239 (C. elegans), 4932 (S. cerevisiae), 3702 (A. thaliana), 7955 (zebrafish).

        '
      schema:
        type: integer
        example: 9606
    required_score:
      name: required_score
      in: query
      required: false
      description: 'Minimum combined interaction score threshold (0-1000). Higher values return only higher-confidence interactions. Common thresholds: 150 (low), 400 (medium), 700 (high), 900 (highest).

        '
      schema:
        type: integer
        minimum: 0
        maximum: 1000
        default: 400
    formatImage:
      name: format
      in: path
      required: true
      description: Image format
      schema:
        type: string
        enum:
        - image
        - highres_image
        - svg
        example: image
  responses:
    BadRequest:
      description: Bad request (invalid parameters)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
        text/plain:
          schema:
            type: string
  schemas:
    EnrichmentResult:
      type: object
      description: Functional enrichment result for one term
      properties:
        category:
          type: string
          description: 'Functional annotation category (e.g. Process, KEGG, Pfam, RCTM, Tissue)

            '
          example: Process
        term:
          type: string
          description: Functional term identifier
          example: GO:0006915
        number_of_genes:
          type: integer
          description: Number of input genes annotated to this term
        number_of_genes_in_background:
          type: integer
          description: Number of background genes annotated to this term
        ncbiTaxonId:
          type: integer
          description: NCBI taxon ID
        inputGenes:
          type: string
          description: Comma-separated list of input gene names annotated to this term
        preferredNames:
          type: string
          description: Comma-separated list of preferred gene names
        p_value:
          type: number
          description: Enrichment p-value (hypergeometric test)
          example: 1.23e-10
        fdr:
          type: number
          description: False discovery rate (Benjamini-Hochberg corrected)
          example: 4.56e-08
        description:
          type: string
          description: Human-readable name of the functional term
          example: apoptotic process
    TsvResponse:
      type: string
      description: Tab-separated values response with header row
    Error:
      type: object
      properties:
        status:
          type: integer
        error:
          type: string
        message:
          type: string
    PpiEnrichment:
      type: object
      description: PPI enrichment statistics for the input protein set
      properties:
        number_of_nodes:
          type: integer
          description: Number of proteins in the input set
        number_of_edges:
          type: integer
          description: Observed number of interactions
        average_node_degree:
          type: number
          description: Average number of interaction partners per protein
        local_clustering_coefficient:
          type: number
          description: Average local clustering coefficient
        expected_number_of_edges:
          type: number
          description: Expected number of interactions at random
        p_value:
          type: number
          description: P-value for interaction enrichment
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: api_key
      description: 'API key required only for Values/Ranks Enrichment endpoints. Obtain via POST /api/json/get_api_key. All other endpoints are publicly accessible without authentication.

        '
externalDocs:
  description: STRING API Documentation
  url: https://string-db.org/help/api/