Gainsight Feature API

Feature Operations

Operations 6

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /v1/feature List tracked features · Get features #
Ask an LLM
“What features are defined in my product's feature tree?”
“Can I list features for one product key only?”
Tell an agent
List features for product key {propertyKey}.
Show the first {pageSize} features.
GET /v1/feature/adoption/{featureId} Get feature adoption statistics · Get feature adoption statistics #
Ask an LLM
“How many users adopted a feature last week?”
“What is the longest date range allowed for feature adoption numbers?”
Tell an agent
Get adoption numbers for feature {featureId}.
Show adoption of feature {featureId} from {dateRangeStart} to {dateRangeEnd}.
POST /v1/feature/backfill/{featureId} Backfill a feature's historical data · Request backfill for feature #
Ask an LLM
“Can PX recompute a feature's usage for data captured before it was defined?”
“How do I request a backfill after changing a feature's rules?”
Tell an agent
Request a backfill for feature {featureId}.
Start a historical data backfill on feature {featureId}.
GET /v1/feature/{featureId} Get a feature · Get feature #
Ask an LLM
“How do I see one feature's name, type and parent?”
“Can I fetch a single feature definition by ID?”
Tell an agent
Get feature {featureId}.
Show the definition of feature {featureId}.
PUT /v1/feature/{featureId} Rename or move a feature · Update feature #
Ask an LLM
“Can I move a feature to the root of the feature tree?”
“Which feature fields can be edited, and are labels supported?”
Tell an agent
Rename feature {featureId} to {name} (id {id}, type {type}, product {propertyKey}).
Move feature {featureId} under parent {parentFeatureId}, keeping id {id}, name {name}, type {type}, product {propertyKey}.
GET /v2/feature_ext List features with extended details · getFeaturesExtended #
Ask an LLM
“Is there a v2 feature listing with more detail than the basic one?”
“Can I get extended feature data for a product key?”
Tell an agent
List extended v2 feature data for product {propertyKey}.
Show the extended feature list, page {pageNumber}.

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/gainsight-feature-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

gainsight-feature-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Gainsight PX API provides a programmatic (server-based) method to access the users, accounts, and events that have been captured by the Gainsight PX subscription.
  version: 0.1.6
  title: Gainsight PX REST Feature API
  contact:
    name: Gainsight PX
    url: https://www.gainsight.com/product-experience/
    email: pxsupport@gainsight.com
  license:
    name: internal
servers:
- url: https://api.aptrinsic.com/
tags:
- name: Feature
  description: Feature Operations
paths:
  /v1/feature:
    get:
      tags:
      - Feature
      summary: Get features
      description: 'Retrieves features. Supports paging.

        Examples:


        | URI | Results |

        | ----- | -------- |

        | GET /v1/feature?pageSize=100 | Get first 100 features. |

        | GET /v1/feature?pageSize=100&pageNumber=1 | Get next 100 features. |

        | GET /v1/feature?propertyKey=AP-XXXXXXXX-2-1 | Get features for given property key |'
      operationId: getFeaturesUsingGET
      parameters:
      - name: pageNumber
        in: query
        description: Page number
        required: false
        allowEmptyValue: false
        schema:
          type: integer
          format: int32
          default: 0
      - name: pageSize
        in: query
        description: Number of events per page
        required: false
        allowEmptyValue: false
        schema:
          type: integer
          format: int32
          default: 25
          maximum: 200
          minimum: 1
      - name: propertyKey
        in: query
        description: Property Key
        required: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/FeaturesPage'
        '400':
          description: Bad request
        '401':
          description: Unauthorized or bad API Key
        '429':
          description: Rate limit exceeded
      deprecated: false
  /v1/feature/adoption/{featureId}:
    get:
      tags:
      - Feature
      summary: Get feature adoption statistics
      description: Retrieves the feature adoption numbers for a specific feature and date range. If dateRangeEnd is not specified, defaults to the current time. Max date range is 7 days.
      operationId: getFeatureAdoptionUsingGET
      parameters:
      - name: dateRangeEnd
        in: query
        description: Date range end
        required: false
        allowEmptyValue: false
        x-example: dateRangeEnd=1674651841000
        schema:
          type: integer
          format: int64
      - name: dateRangeStart
        in: query
        description: Date range start
        required: false
        allowEmptyValue: false
        x-example: dateRangeStart=1674651841000
        schema:
          type: integer
          format: int64
      - name: featureId
        in: path
        description: Feature id
        required: true
        schema:
          type: string
      - name: propertyKey
        in: query
        description: Property Key
        required: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Feature'
        '400':
          description: Bad request
        '401':
          description: Unauthorized or bad API Key
        '404':
          description: Feature not found
        '429':
          description: Rate limit exceeded
      deprecated: false
  /v1/feature/backfill/{featureId}:
    post:
      tags:
      - Feature
      summary: Request backfill for feature
      description: Requests that PX begin a backfill operation for the feature with the given ID
      operationId: backfillFeatureUsingPOST
      parameters:
      - name: featureId
        in: path
        description: Feature id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ResponseEntity'
        '204':
          description: No Content
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ResponseEntity'
        '401':
          description: Unauthorized or bad API Key
        '403':
          description: Forbidden
        '404':
          description: Feature not found
        '429':
          description: Rate limit exceeded
      deprecated: false
  /v1/feature/{featureId}:
    get:
      tags:
      - Feature
      summary: Get feature
      description: Retrieves the feature with the given id
      operationId: getFeatureUsingGET
      parameters:
      - name: featureId
        in: path
        description: Feature id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Feature'
        '400':
          description: Bad request
        '401':
          description: Unauthorized or bad API Key
        '404':
          description: Feature not found
        '429':
          description: Rate limit exceeded
      deprecated: false
    put:
      tags:
      - Feature
      summary: Update feature
      description: 'Updates a feature with the given data

        Does not support editing labels

        Supported Fields:


        | FieldName |

        | ----- |

        | name |

        | parentFeatureId (use "ROOT" to move to base of feature tree |'
      operationId: updateFeatureUsingPUT
      parameters:
      - name: featureId
        in: path
        description: Feature id
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Updated
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ResponseEntity'
        '401':
          description: Unauthorized or bad API Key
        '404':
          description: Feature not found
        '429':
          description: Rate limit exceeded
      deprecated: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Feature'
        description: Feature data
        required: true
  /v2/feature_ext:
    get:
      tags:
      - Feature
      summary: getFeaturesExtended
      operationId: getFeaturesExtendedUsingGET
      parameters:
      - name: pageNumber
        in: query
        description: Page number
        required: false
        allowEmptyValue: false
        schema:
          type: integer
          format: int32
          default: 0
      - name: pageSize
        in: query
        description: Number of events per page
        required: false
        allowEmptyValue: false
        schema:
          type: integer
          format: int32
          default: 25
          maximum: 200
          minimum: 1
      - name: propertyKey
        in: query
        description: Property Key
        required: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/FeatureWithDetailsPage'
      deprecated: false
components:
  schemas:
    FeatureWithDetailsPage:
      type: object
      properties:
        features:
          type: array
          description: Array of features
          readOnly: true
          items:
            $ref: '#/components/schemas/FeatureWithDetails'
        pageNumber:
          type: integer
          format: int32
          description: Page number
          readOnly: true
        isLastPage:
          type: boolean
          description: True if no more records available on next page
          readOnly: true
      title: FeatureWithDetailsPage
    ResponseEntity:
      type: object
      properties:
        body:
          type: object
        statusCode:
          type: string
          enum:
          - '100'
          - '101'
          - '102'
          - '103'
          - '200'
          - '201'
          - '202'
          - '203'
          - '204'
          - '205'
          - '206'
          - '207'
          - '208'
          - '226'
          - '300'
          - '301'
          - '302'
          - '303'
          - '304'
          - '305'
          - '307'
          - '308'
          - '400'
          - '401'
          - '402'
          - '403'
          - '404'
          - '405'
          - '406'
          - '407'
          - '408'
          - '409'
          - '410'
          - '411'
          - '412'
          - '413'
          - '414'
          - '415'
          - '416'
          - '417'
          - '418'
          - '419'
          - '420'
          - '421'
          - '422'
          - '423'
          - '424'
          - '426'
          - '428'
          - '429'
          - '431'
          - '451'
          - '500'
          - '501'
          - '502'
          - '503'
          - '504'
          - '505'
          - '506'
          - '507'
          - '508'
          - '509'
          - '510'
          - '511'
        statusCodeValue:
          type: integer
          format: int32
      title: ResponseEntity
    MappedElement:
      type: object
      required:
      - eventType
      - id
      - name
      - state
      - type
      properties:
        id:
          type: string
        name:
          type: string
        eventType:
          type: string
          enum:
          - CLICK
          - LINK
          - FORM
          - PAGE_VIEW
          - CUSTOM_EVENT
          - SCREEN
        state:
          type: string
          enum:
          - ENABLED
          - DISABLED
          - DELETED
        type:
          type: string
          enum:
          - EVENT
          - TAG
          - URL
          - CUSTOM_EVENT
          - TEXT_ELEMENT
          - SCREEN
      title: MappedElement
      description: Mapped Element
    Feature:
      type: object
      required:
      - id
      - name
      - propertyKey
      - type
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
          enum:
          - FEATURE
          - MODULE
        parentFeatureId:
          type: string
        propertyKey:
          type: string
        status:
          type: string
          enum:
          - ACTIVATED
          - DELETED
        featureLabels:
          type: array
          description: Array of labels associated with the feature
          items:
            $ref: '#/components/schemas/FeatureLabel'
      title: Feature
      description: Feature object
    FeaturesPage:
      type: object
      properties:
        features:
          type: array
          description: Array of features
          readOnly: true
          items:
            $ref: '#/components/schemas/Feature'
        pageNumber:
          type: integer
          format: int32
          description: Page number
          readOnly: true
        isLastPage:
          type: boolean
          description: True if no more records available on next page
          readOnly: true
      title: FeaturesPage
    FeatureLabel:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        color:
          type: string
      title: FeatureLabel
      description: Feature label object
    FeatureWithDetails:
      type: object
      required:
      - id
      - name
      - propertyKey
      - type
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
          enum:
          - FEATURE
          - MODULE
        parentFeatureId:
          type: string
        propertyKey:
          type: string
        status:
          type: string
          enum:
          - ACTIVATED
          - DELETED
        mappedElements:
          type: array
          items:
            $ref: '#/components/schemas/MappedElement'
        featureLabels:
          type: array
          description: Array of labels associated with the feature
          items:
            $ref: '#/components/schemas/FeatureLabel'
      title: FeatureWithDetails
      description: Detailed Feature object
  securitySchemes:
    X-APTRINSIC-API-KEY:
      type: apiKey
      name: Aptrinsic API Key
      in: header