ABMeter Exposures API

The Exposures API from ABMeter — 1 operation(s) for exposures.

Operations 2

GET /exposures Get parameter exposures #
POST /exposures Submit parameter exposures #

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/abmeter-ai:abmeter-ai-exposures-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

abmeter-ai-exposures-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Abmeter Ai Exposures API
  version: 1.0.0
  contact:
    name: ABMeter Support
    email: info@abmeter.com
  license:
    name: Commercial
    url: https://abmeter.ai/terms
  description: 'Operations tagged Exposures across 2 of this provider''s published API definitions: spec.yaml, abmeter-ai-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://abmeter.ai/api/v1
  description: ABMeter API
security:
- bearerAuth: []
tags:
- name: Exposures
paths:
  /exposures:
    get:
      summary: Get parameter exposures
      description: 'Retrieves a log of parameter exposures for a specific user, sorted with the most recent exposures first. Each exposure record contains the following fields:


        * **`user_id`**: The identifier of the user who was exposed.

        * **`parameter_slug`**: The unique identifier of the parameter that was resolved.

        * **`space_slug`**: The unique identifier of the space parameter assigned to.

        * **`resolved_value`**: The actual value (string, boolean, or number) that was sent to the user.

        * **`resolved_at`**: The timestamp (ISO 8601) when the parameter value was resolved.

        * **`exposable_slug`**: The identifier of the experiment or feature flag that provided the value. Will be `null` if the default value was used.

        * **`exposable_type`**: The type of the exposable entity (e.g., `Experiment` or `FeatureFlag`). Will be `null` if the default value was used.

        * **`audience_slug`**: The identifier of the audience that the user was a part of, which caused this exposure. Will be `null` if the default value was used.


        This data is the source of truth for analyzing experiment results and for debugging user-specific behavior. The list can be filtered by a specific parameter and a time range.'
      security:
      - bearerAuth: []
      parameters:
      - name: parameter_slug
        in: query
        schema:
          $ref: '#/components/schemas/Slug'
        required: false
        description: Filter exposures by specific parameter slug
      - name: user_id
        in: query
        required: true
        schema:
          type: string
        description: The user ID to retrieve exposures for
      - name: from
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Filter exposures from this timestamp (ISO 8601 format)
      - name: to
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Filter exposures to this timestamp (ISO 8601 format)
      responses:
        '200':
          description: List of parameter exposures
          content:
            application/json:
              example:
              - audience_slug: audience-beta-testers
                exposable_slug: feature-flag-darker-theme
                exposable_type: FeatureFlag
                parameter_slug: parameter-background-color
                resolved_at: '2026-01-30T12:00:00Z'
                resolved_value: '#8B0000'
                space_slug: main
                user_id: user_1
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ParameterExposure'
        '400':
          description: Bad request - missing user_id
          content:
            application/json:
              example:
                error: Bad request - user_id is required
                status: 400
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Exposures
      operationId: getExposures
      x-operation-id-source: derived
    post:
      summary: Submit parameter exposures
      description: 'Submit a batch of parameter exposures from client SDKs. This endpoint is used by

        client libraries to periodically submit tracked parameter resolutions that occurred

        on the client side. Typically called every minute or so to batch exposures efficiently.


        The API will process each exposure independently. If some exposures fail validation while others succeed,

        the response will indicate partial failure with detailed error information for each failed exposure.


        Error indices in the response are 0-based, matching the array position in the request.'
      security:
      - bearerAuth: []
      parameters: []
      responses:
        '201':
          description: Exposures recorded successfully
          content:
            application/json:
              example:
                recorded_count: 1
                invalid_count: 0
              schema:
                type: object
                properties:
                  recorded_count:
                    type: integer
                    description: Number of exposures successfully recorded
                  invalid_count:
                    type: integer
                    description: Number of exposures that were invalid and skipped
        '400':
          description: Bad request - invalid format or some/all exposures failed processing
          content:
            application/json:
              example:
                error: Failed to process 2 out of 3 exposures
                status: 400
                details:
                  recorded_count: 1
                  invalid_count: 2
                  failures:
                  - index: 1
                    error: Parameter not found for this customer
                  - index: 2
                    error: Space not found for this customer
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ExposureSubmission'
              minItems: 0
              maxItems: 1000
              example:
              - parameter_id: 123
                space_id: 456
                resolved_value: Welcome back!
                user_id: user_123456
                exposable_type: Experiment
                exposable_id: 789
                audience_id: 101
                resolved_at: '2026-01-25T10:30:00Z'
      tags:
      - Exposures
      operationId: postExposures
      x-operation-id-source: derived
    servers:
    - url: https://abmeter.ai/api/v1
      description: ABMeter API
components:
  schemas:
    ParameterExposure:
      type: object
      description: Record of a parameter value being resolved for a specific user
      properties:
        parameter_slug:
          $ref: '#/components/schemas/Slug'
          description: The slug of the parameter that was resolved
        space_slug:
          $ref: '#/components/schemas/Slug'
          description: The slug of the space containing the parameter
        resolved_value:
          oneOf:
          - type: string
          - type: boolean
          - type: number
          description: The resolved parameter value for this user
        user_id:
          type: string
          description: The user ID this exposure is for
        exposable_slug:
          $ref: '#/components/schemas/Slug'
          description: Slug of the experiment or feature flag that provided the override (null for default values)
        exposable_type:
          type:
          - string
          - 'null'
          description: Type of the exposable entity (e.g., Experiment or FeatureFlag). Will be null if the default value was used.
        audience_slug:
          $ref: '#/components/schemas/Slug'
          description: Slug of the audience that matched (for experiments and feature flags)
        resolved_at:
          type: string
          format: date-time
          description: When this parameter value was resolved
      required:
      - parameter_slug
      - space_slug
      - user_id
      - resolved_value
      - resolved_at
      - exposable_slug
      - audience_slug
    Error:
      type: object
      description: 'Standard error response format for all API endpoints


        **Important:** The response is ALWAYS an object/hash, never null or any other type.

        The `details` field, when present, is ALWAYS an object/hash (e.g., `{}` not `null` or `[]`).

        The `details` field may be omitted when there are no additional details to provide.'
      properties:
        error:
          type: string
          description: Human-readable error message
        code:
          type: string
          description: Machine-readable error code (optional)
        details:
          type: object
          description: 'Additional error details. When present, ALWAYS an object/hash.

            May contain field-specific errors or other structured information.

            Examples: `{"name": ["can''t be blank"]}` for validation errors, `{"message": "Invalid state"}` for other errors'
          additionalProperties: true
      required:
      - error
    ExposureSubmission:
      type: object
      description: Internal format for submitting parameter exposures from client SDKs
      properties:
        parameter_id:
          type: integer
          description: The database ID of the parameter that was resolved
        space_id:
          type: integer
          description: The database ID of the space containing the parameter
        resolved_value:
          oneOf:
          - type: string
          - type: boolean
          - type: number
          description: The resolved parameter value for this user
        user_id:
          type:
          - string
          - 'null'
          description: The user ID this exposure is for (null for default values)
        exposable_type:
          type:
          - string
          - 'null'
          description: Type of the entity that provided the override (Experiment, FeatureFlag, null for default)
        exposable_id:
          type:
          - integer
          - 'null'
          description: Database ID of the experiment or feature flag that provided the override
        audience_id:
          type:
          - integer
          - 'null'
          description: Database ID of the audience that matched (for experiments and feature flags)
        resolved_at:
          type: string
          format: date-time
          description: When this parameter value was resolved
      required:
      - parameter_id
      - space_id
      - resolved_value
      - resolved_at
      - user_id
      - exposable_type
      - exposable_id
      - audience_id
    Slug:
      type: string
      description: 'Standardized identifier for entities used across the API. Recommended format: each entity type has its own prefix pattern followed by a short alphanumeric identifier (e.g., parameter-ab4c, space-main, audience-control).'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key from the ABMeter dashboard. Pass it in the Authorization header with 'Bearer' prefix.
x-refined-from:
- spec.yaml
- abmeter-ai-openapi.yml