Gainsight Admin API

Admin Model

Operations 7

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/admin/model/{type}/attributes List attributes of a data model · Get Attributes #
Ask an LLM
“What attributes does the user or account model have in PX?”
“Can I see the custom attribute definitions for a model type?”
Tell an agent
Get the model attributes for type {type}.
List every attribute defined on the {type} model.
GET /v1/admin/monitoring/engagement_collisions Report engagement collisions · Get engagement collisions #
Ask an LLM
“Which engagements collided with each other in the last month?”
“Is there a limit on how long a date range I can check for engagement collisions?”
Tell an agent
Show engagement collisions between {dateRangeStart} and {dateRangeEnd}.
List collisions for product {propertyKey} in that window.
GET /v1/admin/monitoring/engagement_error_details/{engagementId} Get error details for an engagement · Get engagement error details #
Ask an LLM
“Why is one particular engagement failing, broken down by browser?”
“Can I see each individual error an engagement threw?”
Tell an agent
Get error details for engagement {engagementId}, grouped by browser.
Show errors for engagement {engagementId} from {dateRangeStart} to {dateRangeEnd}.
GET /v1/admin/monitoring/engagement_errors Summarize engagements with errors · Get engagement errors summary #
Ask an LLM
“Which engagements had errors this week?”
“Can I get one summary row per engagement that has failed?”
Tell an agent
Summarize engagement errors from {dateRangeStart} to {dateRangeEnd}.
List failing engagements for product key {propertyKey}.
GET /v1/admin/monitoring/integrations Check integration statuses · Get integration statuses #
Ask an LLM
“Are my PX integrations healthy right now?”
“What is the current status of each configured integration?”
Tell an agent
Show the status of every configured integration.
Check whether any integration is currently failing.
GET /v1/admin/subscription Get subscription details · Get Subscription detail #
Ask an LLM
“What are the details of my current PX subscription?”
“Where can I see the settings of the subscription my key belongs to?”
Tell an agent
Get the detail of my current subscription.
Show the subscription this API key belongs to.
GET /v1/admin/subscription/users/notSeenAfter Find users not seen since a date · Get Subscription users #
Ask an LLM
“Which users haven't been seen in the product since a given date?”
“Can I list inactive subscription users for cleanup?”
Tell an agent
List subscription users not seen after {notSeenAfterTimestamp}.
Find users inactive since {notSeenAfterTimestamp}, {pageSize} per page.

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-admin-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-admin-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 Admin 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: Admin
  description: Admin Model
paths:
  /v1/admin/model/{type}/attributes:
    get:
      tags:
      - Admin
      summary: Get Attributes
      description: Retrieves the model attributes for a given type
      operationId: getModelAttributesUsingGET
      parameters:
      - name: type
        in: path
        description: Type
        required: true
        schema:
          type: string
          enum:
          - user
          - account
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AttributeMetadata'
        '400':
          description: Bad request
        '401':
          description: Unauthorized or bad API Key
        '404':
          description: Type not found
        '429':
          description: Rate limit exceeded
      deprecated: false
  /v1/admin/monitoring/engagement_collisions:
    get:
      tags:
      - Admin
      summary: Get engagement collisions
      description: 'Retrieves engagement collision events. Will return one row for each engagement collision in the given date range. Supports filtering and paging.

        ### Filtering

        The date range must be less than or equal to 180 days

        Dates are specified as epoch milliseconds, GMT

        Examples:


        | URI | Results |

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

        | GET /v1/admin/monitoring/engagement_collisions?dateRangeStart=1670283822000&dateRangeEnd=1672962222000&propertyKey=AP-XXXXXXXXXXX-2 | Fetches first page of results |

        | GET /v1/admin/monitoring/engagement_collisions?dateRangeStart=1670283822000&dateRangeEnd=1672962222000&propertyKey=AP-XXXXXXXXXXX-2&pageNumber=1&scrollId=abcxyz | Fetches second page of results |'
      operationId: getEngagementCollisionsUsingGET
      parameters:
      - name: dateRangeEnd
        in: query
        description: Date range end (epoch milliseconds)
        required: false
        allowEmptyValue: false
        x-example: dateRangeEnd=1672962222000
        schema:
          type: integer
          format: int64
      - name: dateRangeStart
        in: query
        description: Date range start (epoch milliseconds)
        required: false
        allowEmptyValue: false
        x-example: dateRangeStart=1670283822000
        schema:
          type: integer
          format: int64
      - name: pageNumber
        in: query
        description: Page Number (zero based)
        required: false
        allowEmptyValue: false
        schema:
          type: integer
          format: int32
          default: 0
      - name: pageSize
        in: query
        description: Number of records per page
        required: false
        allowEmptyValue: false
        schema:
          type: integer
          format: int64
          default: 25
          maximum: 1000
          minimum: 1
      - name: propertyKey
        in: query
        description: Product Key
        required: false
        allowEmptyValue: false
        schema:
          type: string
      - name: scrollId
        in: query
        description: Used for fetching subsequent pages after the first one.  Returned in response.scrollId. If null, no additional pages are available
        required: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EngagementCollisionPage'
        '400':
          description: Bad request
        '401':
          description: Unauthorized or bad API Key
        '429':
          description: Rate limit exceeded
      deprecated: false
  /v1/admin/monitoring/engagement_error_details/{engagementId}:
    get:
      tags:
      - Admin
      summary: Get engagement error details
      description: 'Retrieves engagement error details. Will return one row for each engagement error.

        Examples:


        | URI | Results |

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

        | GET /v1/admin/monitoring/engagement_error_details/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx?dateRangeStart=1670283822000&dateRangeEnd=1672962222000&groupByBrowser=true | Error details grouped by browser|

        | GET /v1/admin/monitoring/engagement_error_details/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx?dateRangeStart=1670283822000&dateRangeEnd=1672962222000&groupByBrowser=false | Error details grouped by type|'
      operationId: getEngagementErrorDetailsUsingGET
      parameters:
      - name: dateRangeEnd
        in: query
        description: Date range end (epoch milliseconds)
        required: false
        allowEmptyValue: false
        x-example: dateRangeEnd=1672962222000
        schema:
          type: integer
          format: int64
      - name: dateRangeStart
        in: query
        description: Date range start (epoch milliseconds)
        required: false
        allowEmptyValue: false
        x-example: dateRangeStart=1670283822000
        schema:
          type: integer
          format: int64
      - name: engagementId
        in: path
        description: Engagement id
        required: true
        schema:
          type: string
      - name: groupByBrowser
        in: query
        description: True to group by browser type, false to group by error
        required: false
        allowEmptyValue: false
        schema:
          type: boolean
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EngagementErrorDetailsPage'
        '400':
          description: Bad request
        '401':
          description: Unauthorized or bad API Key
        '429':
          description: Rate limit exceeded
      deprecated: false
  /v1/admin/monitoring/engagement_errors:
    get:
      tags:
      - Admin
      summary: Get engagement errors summary
      description: 'Retrieves engagement error summary. Will return one row for each engagement that has errors in the given date range. Supports filtering and paging.

        ### Filtering

        The date range must be less than or equal to 180 days

        Dates are specified as epoch milliseconds, GMT

        Examples:


        | URI | Results |

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

        | GET /v1/admin/monitoring/engagement_errors?dateRangeStart=1670283822000&dateRangeEnd=1672962222000&propertyKey=AP-XXXXXXXXXXX-2 | Fetches first page of results |

        | GET /v1/admin/monitoring/engagement_errors?dateRangeStart=1670283822000&dateRangeEnd=1672962222000&propertyKey=AP-XXXXXXXXXXX-2&pageNumber=1&scrollId=abcxyz | Fetches second page of results |'
      operationId: getEngagementErrorSummariesUsingGET
      parameters:
      - name: dateRangeEnd
        in: query
        description: Date range end (epoch milliseconds)
        required: false
        allowEmptyValue: false
        x-example: dateRangeEnd=1672962222000
        schema:
          type: integer
          format: int64
      - name: dateRangeStart
        in: query
        description: Date range start (epoch milliseconds)
        required: false
        allowEmptyValue: false
        x-example: dateRangeStart=1670283822000
        schema:
          type: integer
          format: int64
      - name: pageNumber
        in: query
        description: Page Number (zero based)
        required: false
        allowEmptyValue: false
        schema:
          type: integer
          format: int32
          default: 0
      - name: pageSize
        in: query
        description: Number of records per page
        required: false
        allowEmptyValue: false
        schema:
          type: integer
          format: int32
          default: 25
          maximum: 1000
          minimum: 1
      - name: propertyKey
        in: query
        description: Product Key
        required: false
        allowEmptyValue: false
        schema:
          type: string
      - name: scrollId
        in: query
        description: Used for fetching subsequent pages after the first one.  Returned in response.scrollId. If null, no additional pages are available
        required: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/EngagementErrorSummaryPage'
        '400':
          description: Bad request
        '401':
          description: Unauthorized or bad API Key
        '429':
          description: Rate limit exceeded
      deprecated: false
  /v1/admin/monitoring/integrations:
    get:
      tags:
      - Admin
      summary: Get integration statuses
      description: 'Retrieves the current statuses for the configured integrations. Will return one row for each integration.

        Example:


        | URI | Results |

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

        | GET /v1/admin/monitoring/integrations | Fetches all integration statuses |'
      operationId: getIntegrationStatusesUsingGET
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/IntegrationStatusPage'
        '400':
          description: Bad request
        '401':
          description: Unauthorized or bad API Key
        '429':
          description: Rate limit exceeded
      deprecated: false
  /v1/admin/subscription:
    get:
      tags:
      - Admin
      summary: Get Subscription detail
      description: Retrieves Subscription detail for the current sub
      operationId: getDetailUsingGET
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SubscriptionDetail'
        '400':
          description: Bad request
        '401':
          description: Unauthorized or bad API Key
        '404':
          description: Account not found
        '429':
          description: Rate limit exceeded
      deprecated: false
  /v1/admin/subscription/users/notSeenAfter:
    get:
      tags:
      - Admin
      summary: Get Subscription users
      description: Retrieves Subscription users
      operationId: getSubscriptionUsersNotSeenAfterUsingGET
      parameters:
      - name: notSeenAfterTimestamp
        in: query
        description: Not seen after datetime (epoch milliseconds)
        required: true
        allowEmptyValue: false
        schema:
          type: integer
          format: int64
      - 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 users per page
        required: false
        allowEmptyValue: false
        schema:
          type: integer
          format: int32
          default: 200
          maximum: 1000
          minimum: 1
      responses:
        '200':
          description: Success
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SubscriptionDetail'
        '400':
          description: Bad request
        '401':
          description: Unauthorized or bad API Key
        '404':
          description: Account not found
        '429':
          description: Rate limit exceeded
      deprecated: false
components:
  schemas:
    SubscriptionDetail:
      type: object
      required:
      - id
      properties:
        id:
          type: string
        name:
          type: string
        iconUrl:
          type: string
        timeZone:
          type: string
        website:
          type: string
        description:
          type: string
        products:
          type: array
          items:
            $ref: '#/components/schemas/ProductDetail'
      title: SubscriptionDetail
      description: Subscription Detail
    EngagementErrorDetailsPage:
      type: object
      properties:
        engagementErrorDetails:
          type: array
          description: Array of engagement error details
          readOnly: true
          items:
            $ref: '#/components/schemas/EngagementErrorDetails'
      title: EngagementErrorDetailsPage
    EngagementErrorSummary:
      type: object
      properties:
        engagementId:
          type: string
        engagementName:
          type: string
        propertyKey:
          type: string
          example:
          - AP-XXXXXXXXXX-2
          description: PX Product Tag Key
        engagementType:
          type: string
          enum:
          - EMAIL
          - IN_APP_DIALOG
          - IN_APP_CAROUSEL
          - IN_APP_GUIDE
          - IN_APP_NOTIFICATION
          - OUT_BOUND_EMAIL
          - IN_APP_NPS_SURVEY
          - IN_APP_CES_SURVEY
          - IN_APP_RATING_SURVEY
          - IN_APP_BOOLEAN_SURVEY
          - IN_APP_MULTIPLE_QUESTION_SURVEY
        firstOccurrenceDate:
          type: integer
          format: int64
          description: Timestamp of first error, in epoch milliseconds
        lastOccurrenceDate:
          type: integer
          format: int64
          description: Timestamp of last error, in epoch milliseconds
        views:
          type: integer
          format: int64
          description: Number of views of engagement
        ratio:
          type: number
          format: double
          description: Ratio of errors to views
        errorCount:
          type: integer
          format: int64
          description: Number of errors
      title: EngagementErrorSummary
      description: Engagement Error Summary
    EngagementErrorDetails:
      type: object
      properties:
        engagementId:
          type: string
        stepName:
          type: string
        stepNumber:
          type: integer
          format: int32
        errorCount:
          type: integer
          format: int64
          description: Number of errors
        errorType:
          type: string
          description: Error type
        value:
          type: string
          description: Error details
        browser:
          type: string
          description: Type of browser
      title: EngagementErrorDetails
      description: Engagement Error Details
    ProductKeyDetails:
      type: object
      properties:
        channel:
          type: string
        productKey:
          type: string
        url:
          type: string
      title: ProductKeyDetails
      description: Product Key Detail
    EngagementErrorSummaryPage:
      type: object
      properties:
        engagementErrorSummaries:
          type: array
          description: Array of engagement error summaries
          readOnly: true
          items:
            $ref: '#/components/schemas/EngagementErrorSummary'
        totalHits:
          type: integer
          format: int64
          description: Total number of records matching filters
          readOnly: true
        scrollId:
          type: string
          description: If passed on subsequent requests as the scrollId parameter, will fetch the next page
          readOnly: true
      title: EngagementErrorSummaryPage
    ProductDetail:
      type: object
      properties:
        description:
          type: string
        name:
          type: string
        productKeys:
          type: array
          items:
            $ref: '#/components/schemas/ProductKeyDetails'
      title: ProductDetail
      description: Product Detail
    AttributeMetadata:
      type: object
      required:
      - apiName
      - createdDate
      - id
      - internalName
      - modifiedDate
      - name
      - origin
      - state
      - type
      properties:
        id:
          type: string
        name:
          type: string
        apiName:
          type: string
        internalName:
          type: string
        description:
          type: string
        type:
          type: string
          enum:
          - STRING
          - DATE_TIME
          - BOOLEAN
          - NUMBER
        state:
          type: string
          enum:
          - ENABLED
          - DISABLED
          - DELETED
        origin:
          type: string
          enum:
          - CUSTOM
          - DEFAULT
        createdDate:
          type: integer
          format: int64
          readOnly: true
        modifiedDate:
          type: integer
          format: int64
          readOnly: true
        defaultValue:
          type: string
      title: AttributeMetadata
      description: Attribute Metadata
    IntegrationStatus:
      type: object
      properties:
        integrationSyncName:
          type: string
        currentStatus:
          type: string
          enum:
          - UP
          - DOWN
        lastSuccessfulDate:
          type: integer
          format: int64
          description: Date of last successful run, in epoch milliseconds
        lastError:
          type: string
        numberOfRecordsProcessed:
          type: integer
          format: int64
          description: Number of records processed during the last run
      title: IntegrationStatus
      description: Integration Status Summary
    EngagementCollisionPage:
      type: object
      properties:
        engagementCollisions:
          type: array
          description: Array of engagement collisions
          readOnly: true
          items:
            $ref: '#/components/schemas/EngagementCollision'
        totalHits:
          type: integer
          format: int64
          description: Total number of records matching filters
          readOnly: true
        scrollId:
          type: string
          description: If passed on subsequent requests as the scrollId parameter, will fetch the next page
          readOnly: true
      title: EngagementCollisionPage
    IntegrationStatusPage:
      type: object
      properties:
        integrationStatuses:
          type: array
          description: Array of integration status records
          readOnly: true
          items:
            $ref: '#/components/schemas/IntegrationStatus'
      title: IntegrationStatusPage
    EngagementCollision:
      type: object
      properties:
        engagementId:
          type: string
        engagementName:
          type: string
        propertyKey:
          type: string
          example:
          - AP-XXXXXXXXXX-2
          description: PX Product Tag Key
        engagementType:
          type: string
          enum:
          - EMAIL
          - IN_APP_DIALOG
          - IN_APP_CAROUSEL
          - IN_APP_GUIDE
          - IN_APP_NOTIFICATION
          - OUT_BOUND_EMAIL
          - IN_APP_NPS_SURVEY
          - IN_APP_CES_SURVEY
          - IN_APP_RATING_SURVEY
          - IN_APP_BOOLEAN_SURVEY
          - IN_APP_MULTIPLE_QUESTION_SURVEY
        otherQualifiedEngagementNames:
          type: array
          description: Names of other qualified engagements
          items:
            type: string
        views:
          type: integer
          format: int64
          description: Number of views
        priorityRule:
          type: string
          description: Priority rule
        triggeredDate:
          type: integer
          format: int64
          description: Timestamp of collision, in epoch milliseconds
        viewedByUser:
          type: string
          description: User id
      title: EngagementCollision
      description: Engagement Error Summary
  securitySchemes:
    X-APTRINSIC-API-KEY:
      type: apiKey
      name: Aptrinsic API Key
      in: header