Algolia A/B Testing API

Creates and manages A/B tests across index configurations and relevance settings, scoring variants on click-through and conversion. Two live versions: v3 is current, and the entire v2 surface is marked deprecated in Algolia's own contract.

Operations 12

GET /{path} Send requests to the Algolia REST API #
POST /{path} Send requests to the Algolia REST API #
PUT /{path} Send requests to the Algolia REST API #
DELETE /{path} Send requests to the Algolia REST API #
POST /3/abtests Create an A/B test #
GET /3/abtests List all A/B tests #
GET /3/abtests/{id} Retrieve A/B test details #
DELETE /3/abtests/{id} Delete an A/B test #
POST /3/abtests/{id}/stop Stop an A/B test #
POST /3/abtests/estimate Estimate the sample size and duration of an A/B test #
GET /3/abtests/{id}/timeseries Retrieve timeseries of an A/B test #
GET /setClientApiKey Switch the API key used to authenticate requests #

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/algolia-ab-testing-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

algolia-abtesting-v3-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: A/B Testing Abtesting V3 API
  summary: The Algolia A/B Testing API lets you manage your Algolia A/B tests to optimize your search experience
  description: "## Base URLs\n\nBase URLs for the A/B testing API:\n\n- `https://analytics.us.algolia.com`\n- `https://analytics.de.algolia.com`\n- `https://analytics.algolia.com` (routes requests to the closest of the above servers, based on your geographical location)\n\nUse the URL that matches your [analytics region](https://dashboard.algolia.com/account/infrastructure/analytics).\n\n**All requests must use HTTPS.**\n\n## Availability and authentication\n\nAccess to the A/B testing API is available as part of the [Premium or Elevate plans](https://www.algolia.com/pricing).\n\nAdd these headers to authenticate requests:\n\n- `x-algolia-application-id`. Your Algolia application ID.\n- `x-algolia-api-key`. An API key with the necessary permissions to make the request.\n  The required access control list (ACL) to make a request is listed in each endpoint's reference.\n\nYou can find your application ID and API key in the [Algolia dashboard](https://dashboard.algolia.com/account/api-keys).\n\n## Rate limits\n\nYou can make up to **100 requests per minute per app** to the A/B testing API.\nThe response includes headers with information about the limits.\n\n## Parameters\n\nQuery parameters must be [URL-encoded](https://developer.mozilla.org/en-US/docs/Glossary/Percent-encoding).\nNon-ASCII characters must be UTF-8 encoded.\nPlus characters (`+`) are interpreted as spaces.\n\n## Response status and errors\n\nThe A/B testing API returns JSON responses.\nSince JSON doesn't guarantee any specific ordering, don't rely on the order of attributes in the API response.\n\nSuccessful responses return `2xx` statuses. Client errors return `4xx` statuses. Server errors return `5xx` statuses.\nError responses have a `message` property with more information.\n\n## Version\n\nThe current version of the A/B Testing API is version 3, indicated by the `/3/` in each endpoint's URL.\n"
  version: 3.0.0
servers:
- url: https://analytics.{region}.algolia.com
  variables:
    region:
      enum:
      - us
      - de
      default: us
- url: https://analytics.algolia.com
security:
- appId: []
  apiKey: []
tags:
- name: abtesting-v3
paths:
  /{path}:
    get:
      operationId: customGet
      summary: Send requests to the Algolia REST API
      description: This method lets you send requests to the Algolia REST API.
      parameters:
      - $ref: '#/components/parameters/PathInPath'
      - $ref: '#/components/parameters/Parameters'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
      tags:
      - abtesting-v3
    post:
      operationId: customPost
      requestBody:
        description: Parameters to send with the custom request.
        content:
          application/json:
            schema:
              type: object
      summary: Send requests to the Algolia REST API
      description: This method lets you send requests to the Algolia REST API.
      parameters:
      - $ref: '#/components/parameters/PathInPath'
      - $ref: '#/components/parameters/Parameters'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
      tags:
      - abtesting-v3
    put:
      operationId: customPut
      requestBody:
        description: Parameters to send with the custom request.
        content:
          application/json:
            schema:
              type: object
      summary: Send requests to the Algolia REST API
      description: This method lets you send requests to the Algolia REST API.
      parameters:
      - $ref: '#/components/parameters/PathInPath'
      - $ref: '#/components/parameters/Parameters'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
      tags:
      - abtesting-v3
    delete:
      operationId: customDelete
      summary: Send requests to the Algolia REST API
      description: This method lets you send requests to the Algolia REST API.
      parameters:
      - $ref: '#/components/parameters/PathInPath'
      - $ref: '#/components/parameters/Parameters'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
      tags:
      - abtesting-v3
  /3/abtests:
    post:
      tags:
      - abtesting-v3
      operationId: addABTests
      x-acl:
      - editSettings
      summary: Create an A/B test
      description: Creates a new A/B test.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: addABTestsRequest
              type: object
              additionalProperties: false
              properties:
                name:
                  $ref: '#/components/schemas/name'
                variants:
                  type: array
                  description: A/B test variants.
                  minItems: 2
                  items:
                    $ref: '#/components/schemas/AddABTestsVariant'
                metrics:
                  type: array
                  description: A/B test metrics involved in the test. Only these metrics will be considered when calculating results.
                  items:
                    $ref: '#/components/schemas/createMetric'
                configuration:
                  $ref: '#/components/schemas/ABTestConfiguration'
                endAt:
                  $ref: '#/components/schemas/endAt'
              required:
              - name
              - variants
              - metrics
              - endAt
      responses:
        '200':
          description: OK
          headers:
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-reset:
              $ref: '#/components/headers/x-ratelimit-reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ABTestResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
    get:
      tags:
      - abtesting-v3
      operationId: listABTests
      x-acl:
      - analytics
      summary: List all A/B tests
      description: Lists all A/B tests you configured for this application.
      parameters:
      - name: offset
        in: query
        description: Position of the first item to return.
        required: false
        schema:
          type: integer
          default: 0
          minimum: 0
      - name: limit
        in: query
        description: Number of items to return.
        required: false
        schema:
          type: integer
          default: 10
      - name: indexPrefix
        in: query
        description: Index name prefix. Only A/B tests for indices starting with this string are included in the response.
        example: dev_
        schema:
          type: string
      - name: indexSuffix
        in: query
        description: Index name suffix. Only A/B tests for indices ending with this string are included in the response.
        example: _development
        schema:
          type: string
      - name: direction
        in: query
        description: 'Sort order for A/B tests by start date.

          Use ''asc'' for ascending or ''desc'' for descending. Active A/B tests are always listed first.

          '
        example: desc
        schema:
          $ref: '#/components/schemas/direction'
      responses:
        '200':
          description: OK
          headers:
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-reset:
              $ref: '#/components/headers/x-ratelimit-reset'
          content:
            application/json:
              schema:
                title: listABTestsResponse
                type: object
                additionalProperties: false
                properties:
                  abtests:
                    $ref: '#/components/schemas/ABTests'
                  count:
                    type: integer
                    description: Number of A/B tests.
                    example: 10
                  total:
                    type: integer
                    description: Number of retrievable A/B tests.
                    example: 12
                required:
                - abtests
                - count
                - total
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
  /3/abtests/{id}:
    get:
      tags:
      - abtesting-v3
      operationId: getABTest
      x-acl:
      - analytics
      summary: Retrieve A/B test details
      description: Retrieves the details for an A/B test by its ID.
      parameters:
      - $ref: '#/components/parameters/ID'
      responses:
        '200':
          description: OK
          headers:
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-reset:
              $ref: '#/components/headers/x-ratelimit-reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ABTest'
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
    delete:
      tags:
      - abtesting-v3
      operationId: deleteABTest
      x-acl:
      - editSettings
      summary: Delete an A/B test
      description: Deletes an A/B test by its ID.
      parameters:
      - $ref: '#/components/parameters/ID'
      responses:
        '200':
          description: OK
          headers:
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-reset:
              $ref: '#/components/headers/x-ratelimit-reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ABTestResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
  /3/abtests/{id}/stop:
    post:
      tags:
      - abtesting-v3
      operationId: stopABTest
      x-acl:
      - editSettings
      summary: Stop an A/B test
      description: 'Stops an A/B test by its ID.


        You can''t restart stopped A/B tests.

        '
      parameters:
      - $ref: '#/components/parameters/ID'
      responses:
        '200':
          description: OK
          headers:
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-reset:
              $ref: '#/components/headers/x-ratelimit-reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ABTestResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
  /3/abtests/estimate:
    post:
      tags:
      - abtesting-v3
      operationId: estimateABTest
      x-acl:
      - analytics
      summary: Estimate the sample size and duration of an A/B test
      description: Given the traffic percentage and the expected effect size, this endpoint estimates the sample size and duration of an A/B test based on historical traffic.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: estimateABTestRequest
              type: object
              additionalProperties: false
              properties:
                configuration:
                  title: estimateConfiguration
                  type: object
                  description: A/B test configuration for estimating the sample size and duration using minimum detectable effect.
                  properties:
                    filters:
                      $ref: '#/components/schemas/MetricsFilters'
                    minimumDetectableEffect:
                      $ref: '#/components/schemas/MinimumDetectableEffect'
                  required:
                  - minimumDetectableEffect
                variants:
                  type: array
                  description: A/B test variants.
                  minItems: 2
                  items:
                    $ref: '#/components/schemas/AddABTestsVariant'
              required:
              - configuration
              - variants
      responses:
        '200':
          description: OK
          headers:
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-reset:
              $ref: '#/components/headers/x-ratelimit-reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EstimateABTestResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
  /3/abtests/{id}/timeseries:
    get:
      tags:
      - abtesting-v3
      operationId: getTimeseries
      x-acl:
      - analytics
      summary: Retrieve timeseries of an A/B test
      description: Retrieves timeseries for an A/B test by its ID.
      parameters:
      - $ref: '#/components/parameters/ID'
      - $ref: '#/components/parameters/StartDate'
      - $ref: '#/components/parameters/EndDate'
      - in: query
        name: metric
        description: List of metrics to retrieve. If not specified, all metrics are returned.
        schema:
          type: array
          items:
            $ref: '#/components/schemas/MetricName'
      responses:
        '200':
          description: OK
          headers:
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-reset:
              $ref: '#/components/headers/x-ratelimit-reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Timeseries'
        '400':
          $ref: '#/components/responses/BadRequest'
        '402':
          $ref: '#/components/responses/FeatureNotEnabled'
        '403':
          $ref: '#/components/responses/MethodNotAllowed'
        '404':
          $ref: '#/components/responses/IndexNotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /setClientApiKey:
    get:
      x-helper: true
      x-asynchronous-helper: false
      x-acl: []
      tags:
      - abtesting-v3
      operationId: setClientApiKey
      summary: Switch the API key used to authenticate requests
      description: 'Switch the API key used to authenticate requests.

        '
      parameters:
      - in: query
        name: apiKey
        description: API key to use for subsequent requests.
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No content.
components:
  schemas:
    ABTests:
      oneOf:
      - type: array
        description: A/B tests.
        items:
          $ref: '#/components/schemas/ABTest'
      - type: 'null'
    timeseriesVariant:
      type: object
      properties:
        dates:
          $ref: '#/components/schemas/metricDates'
    metricDate:
      type: object
      properties:
        date:
          type: string
          description: Date where the metric was updated, in RFC 3339 format.
          example: '2025-06-15'
        metrics:
          $ref: '#/components/schemas/metrics'
    MetricsFilter:
      type: object
      additionalProperties: false
      description: 'Boolean filter applied to the A/B test population. Each filter targets a boolean metric

        and decides whether to include (true) or exclude (false) matching records.

        '
      properties:
        domain:
          type: string
          description: Metric domain (for example `abtesting`, `personalization`).
          example: abtesting
        name:
          type: string
          description: Public metric name.
          example: isOutlier
        trackEffects:
          type: boolean
          description: Whether the experiment should record the effects of this filter.
        includes:
          type: boolean
          description: If true, keep items that match the filter; if false, exclude them.
      required:
      - domain
      - name
    variants:
      type: array
      description: 'A/B test variants.


        The first variant is your _control_ index, typically your production index.

        All of the additional variants are indexes with changed settings that you want to test against the control.

        '
      items:
        $ref: '#/components/schemas/variant'
    createdAt:
      type: string
      description: Date and time when the A/B test was created, in RFC 3339 format.
      example: '2023-06-15T15:06:04.249906Z'
    Decision:
      type: object
      additionalProperties: false
      description: 'Outcome of the A/B test once a winner has been declared.

        Only present when a winning variant has been declared, so its presence indicates the test has been decided.

        '
      properties:
        winnerVariantId:
          type: integer
          description: Identifier of the declared winning variant. The control variant is 1.
          example: 2
        declaredAt:
          type: string
          description: Date and time when the winning variant was declared, in RFC 3339 format.
          example: '2026-06-16T00:00:00Z'
      required:
      - winnerVariantId
      - declaredAt
    ABTest:
      type: object
      additionalProperties: false
      properties:
        abTestID:
          $ref: '#/components/schemas/abTestID'
        updatedAt:
          $ref: '#/components/schemas/updatedAt'
        createdAt:
          $ref: '#/components/schemas/createdAt'
        endAt:
          $ref: '#/components/schemas/endAt'
        stoppedAt:
          $ref: '#/components/schemas/stoppedAt'
        name:
          $ref: '#/components/schemas/name'
        status:
          $ref: '#/components/schemas/Status'
        variants:
          $ref: '#/components/schemas/variants'
        configuration:
          $ref: '#/components/schemas/ABTestConfiguration'
        decision:
          $ref: '#/components/schemas/Decision'
      required:
      - status
      - name
      - createdAt
      - endAt
      - updatedAt
      - abTestID
      - variants
    metricDates:
      type: array
      items:
        $ref: '#/components/schemas/metricDate'
    MetricsFilters:
      type: array
      description: List of metric filters applied to the test population.
      items:
        $ref: '#/components/schemas/MetricsFilter'
    ABTestConfiguration:
      title: configuration
      type: object
      description: A/B test configuration.
      properties:
        minimumDetectableEffect:
          $ref: '#/components/schemas/MinimumDetectableEffect'
        filters:
          $ref: '#/components/schemas/MetricsFilters'
        errorCorrection:
          $ref: '#/components/schemas/ErrorCorrectionType'
    metricResult:
      type: object
      properties:
        name:
          type: string
        updatedAt:
          type: string
          description: Date and time when the metric was last updated, in RFC 3339 format.
        value:
          type: number
          format: double
        valueCIHigh:
          type: number
          format: double
          description: 'The upper bound of the 95% confidence interval for the metric value. The confidence interval is calculated using

            either the relative ratio or relative difference between the metric values for the control and the variant.

            Relative ratio is used for metrics that are ratios (e.g., click-through rate, conversion rate),

            while relative difference is used for continuous metrics (e.g., revenue).

            '
        valueCILow:
          type: number
          format: double
          description: 'The lower bound of the 95% confidence interval for the metric value. The confidence interval is calculated using

            either the relative ratio or relative difference between the metric values for the control and the variant.

            Relative ratio is used for metrics that are ratios (e.g., click-through rate, conversion rate),

            while relative difference is used for continuous metrics (e.g., revenue).

            '
        pValue:
          type: number
          format: double
          description: PValue for the first variant (control) will always be 0. For the other variants, pValue is calculated for the current variant based on the control.
        dimension:
          type: string
          description: Dimension defined during test creation.
        metadata:
          $ref: '#/components/schemas/metricMetadata'
        criticalValue:
          type: number
          format: double
          description: 'The value that was computed during error correction. It is used to determine significance of the metric pValue.

            The critical value is calculated using Bonferroni or Benjamini-Hochberg corrections, based on the given

            configuration during the A/B test creation.

            '
        significant:
          type: boolean
          description: 'Whether the pValue is significant or not based on the critical value and the error correction algorithm used.

            '
      required:
      - name
      - updatedAt
      - value
      - pValue
      example:
      - name: addToCartCount
        updatedAt: '2025-06-15T15:06:44.400601Z'
        value: 5
        pValue: 0.01
      - name: clickThroughRate
        updatedAt: '2025-05-15T17:52:15.644906Z'
        value: 0.20869847452125934
        pValue: 0.004
      - name: revenue
        dimension: USD
        updatedAt: '2025-05-15T17:52:15.644906Z'
        value: 1200.5
        pValue: 0.04
        metadata:
          winsorizedValue: 80.2
      - name: revenue
        dimension: EUR
        updatedAt: '2025-05-15T17:52:15.644906Z'
        value: 999.66
        pValue: 0.04
        metadata:
          winsorizedValue: 888.8
    timeseriesVariants:
      type: array
      description: 'A/B test timeseries variants.


        The first variant is your _control_ index, typically your production index.

        All of the additional variants are indexes with changed settings that you want to test against the control.

        '
      items:
        $ref: '#/components/schemas/timeseriesVariant'
    MinimumDetectableEffect:
      type: object
      description: Configuration for the smallest difference between test variants you want to detect.
      properties:
        size:
          type: number
          format: double
          minimum: 0
          maximum: 1
          description: 'Smallest difference in an observable metric between variants.

            For example, to detect a 10% difference between variants, set this value to 0.1.

            '
        metric:
          $ref: '#/components/schemas/EffectMetric'
      required:
      - size
      - metric
    createMetric:
      type: object
      description: Defines a metric to be retrieved during an A/B test.
      properties:
        name:
          type: string
          description: Name of the metric.
        dimension:
          type: string
          description: Dimension of the metric, for example, in case of a revenue metric it could be USD, EUR...
      required:
      - name
      example:
      - name: revenue
        dimension: USD
      - name: conversionRate
      - name: clickThroughRate
      - name: trackedSearchCount
    trafficPercentage:
      type: integer
      description: Percentage of search requests each variant receives.
      minimum: 1
      maximum: 99
      example: 60
    EffectMetric:
      type: string
      description: Metric for which you want to detect the smallest relative difference.
      enum:
      - addToCartRate
      - clickThroughRate
      - conversionRate
      - purchaseRate
      - noResultsRate
    metrics:
      type: array
      description: All ABTest metrics that were defined during test creation.
      items:
        $ref: '#/components/schemas/metricResult'
    AddABTestsVariant:
      oneOf:
      - title: Variant
        $ref: '#/components/schemas/abTestsVariant'
      - title: Variant with search parameters
        $ref: '#/components/schemas/abTestsVariantSearchParams'
    MetricName:
      type: string
      enum:
      - search_count
      - tracked_search_count
      - user_count
      - tracked_user_count
      - no_result_count
      - add_to_cart_count
      - purchase_count
      - clicked_search_count
      - converted_search_count
      - click_through_rate
      - conversion_rate
      - add_to_cart_rate
      - purchase_rate
      - average_click_position
      - revenue
    variant:
      type: object
      additionalProperties: false
      properties:
        description:
          $ref: '#/components/schemas/description'
        estimatedSampleSize:
          type: integer
          description: 'Estimated number of searches required to achieve the desired statistical significance.


            The A/B test configuration must include a `minimumDetectableEffect` setting for this number to be included in the response.

            '
          example: 0
        index:
          $ref: '#/components/schemas/index'
        trafficPercentage:
          $ref: '#/components/schemas/trafficPercentage'
        metrics:
          $ref: '#/components/schemas/metrics'
        metadata:
          $ref: '#/components/schemas/variantMetadata'
        customSearchParameters:
          type: object
          description: 'Search parameters applied to this variant when the same index is used for multiple variants.

            Only present if custom search parameters were provided during test creation.

            '
          example:
            enablePersonalization: true
            personalizationImpact: 50
      required:
      - index
      - description
      - trafficPercentage
      - metrics
    variantMetadata:
      type: object
      description: Variant specific metadata.
      properties:
        filterEffects:
          $ref: '#/components/schemas/filterEffects'
    stoppedAt:
      type:
      - string
      - 'null'
      description: Date and time when the A/B test was stopped, in RFC 3339 format.
      example: '2023-06-15T15:06:44.400601Z'
    updatedAt:
      type: string
      description: Date and time when the A/B test was last updated, in RFC 3339 format.
      example: '2023-06-15T15:06:44.400601Z'
    metricMetadata:
      type: object
      description: Metric specific metadata.
      properties:
        winsorizedValue:
          type: number
          format: double
          description: 'Only present in case the metric is ''revenue''.

            It is the amount exceeding the 95th percentile of global revenue transactions involved in the AB Test. This amount is not considered when calculating statistical significance.

            It is tied to a per revenue-currency pair contrary to other

            global filter effects (such as outliers and empty search count).

            '
        mean:
          type: number
          format: double
          description: Mean value for this metric.
          example: 53.7
      example:
        winsorizedValue: 888.8
        mean: 53.7
    Timeseries:
      type: object
      additionalProperties: false
      properties:
        abTestID:
          $ref: '#/components/schemas/abTestID'
        variants:
          $ref: '#/components/schemas/timeseriesVariants'
      required:
      - abTestID
      - variants
    ABTestResponse:
      type: object
      additionalProperties: false
      properties:
        index:
          $ref: '#/components/schemas/index'
        abTestID:
          $ref: '#/components/schemas/abTestID'
        taskID:
          $ref: '#/components/schemas/taskID'
      required:
      - abTestID
      - index
      - taskID
    direction:
      type: string
      description: 'Sort order for A/B tests by start date.

        Use ''asc'' for ascending or ''desc'' for descending.

        Active A/B tests are always listed first.

        '
      enum:
      - asc
      - desc
      example: desc
    abTestsVariantSearchParams:
      allOf:
      - $ref: '#/components/schemas/abTestsVariant'
      - $ref: '#/components/schemas/customSearchParams'
    index:
      type: string
      description: Index name of the A/B test variant (case-sensitive).
      example: delcourt_production
    filterEffects:
      type: object
      description: A/B test filter effects resulting from configuration settings.
      properties:
        outliers:
          title: outliersFilter
          type: object
          description: Outliers removed from the A/B test as a result of configuration settings.
          example:
            usersCount: 1
            trackedSearchesCount: 237
          properties:
            usersCount:
              type: integer
              description: Number of users removed from the A/B test.
              example: 1
            trackedSearchesCount:
              type: integer
              description: Number of tracked searches removed from the A/B test.
              example: 237
        emptySearch:
          title: emptySearchFilter
          type: object
          description: Empty searches removed from the A/B test as a result of configuration settings.
          example:
 

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/algolia/refs/heads/main/openapi/algolia-abtesting-v3-api-openapi.yml