Convert Audiences API

Audiences let you segment your users in the ways that are important to your business. You can segment by event (e.g., session_start or level_up) and by user property (e.g., Browser/OS, Geo, Language), and combine events, parameters, and properties to include practically any subset of users. Read more information about Audiences.

Operations 9

POST /accounts/{account_id}/projects/{project_id}/audiences List audiences within a project #
GET /accounts/{account_id}/projects/{project_id}/audiences/{audience_id} Get details for a specific audience #
POST /accounts/{account_id}/projects/{project_id}/audiences/add Create a new audience #
POST /accounts/{account_id}/projects/{project_id}/audiences/{audience_id}/update Update an existing audience #
DELETE /accounts/{account_id}/projects/{project_id}/audiences/{audience_id}/delete Delete an audience #
POST /accounts/{account_id}/projects/{project_id}/audiences/bulk-update Update multiple audiences at once #
POST /accounts/{account_id}/projects/{project_id}/audiences/bulk-delete Delete multiple audiences at once #
GET /accounts/{account_id}/projects/{project_id}/audiences-presets List predefined audience templates (presets) #
POST /accounts/{account_id}/projects/{project_id}/audiences/{audience_id}/clone Clone an existing audience #

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/convert-audiences-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

convert-audiences-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Convert Accounts Audiences API
  description: 'Move your app forward with the Convert API. The Convert API allows

    you to manage your Convert Experiences projects using code. The REST API is

    an interface for managing and extending functionality of Convert. For

    example, instead of creating and maintaining projects using the Convert

    Experiences web dashboard you can create an experiment programmatically.

    Additionally, if you prefer to run custom analysis on experiment results you

    can leverage the API to pull data from Convert Experiences into your own

    workflow. If you do not have a Convert account already, sign up for a free

    developer account at https://www.convert.com/api/.


    *[Convert API V1](/doc/v1) is still available and documentation can be found [here](/doc/v1) but using it is highly discouraged

    as it will be phased out in the future*

    '
  version: 2.0.0
servers:
- url: https://api.convert.com/api/v2
  description: Live API server
- url: https://apidev.convert.com/api/v2
  description: DEV API server
- url: http://apidev.convert.com:5000/api/v2
  description: DEV mocked API server
tags:
- name: Audiences
  description: Audiences let you segment your users in the ways that are important to your business. You can segment by event (e.g., session_start or level_up) and by user property (e.g., Browser/OS, Geo, Language), and combine events, parameters, and properties to include practically any subset of users. Read more information about <a href="https://support.convert.com/hc/en-us/articles/115000009891-Defining-Audiences-for-your-Experience">Audiences</a>.
paths:
  /accounts/{account_id}/projects/{project_id}/audiences:
    post:
      operationId: getAudiencesList
      summary: List audiences within a project
      description: 'Retrieves a list of all audiences defined for a specific project.

        Audiences segment visitors based on criteria like behavior, demographics, traffic source, or custom data, to target experiences.

        Supports filtering by status, type, name, and pagination.

        The Knowledge Base article "Define Audiences for your Experience" explains: "An ''Audience'' is a group of visitors that you want to be included in your experience".

        '
      tags:
      - Audiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/GetAudiencesListRequest'
      responses:
        '200':
          $ref: '#/components/responses/AudiencesListResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/audiences/{audience_id}:
    get:
      operationId: getAudience
      summary: Get details for a specific audience
      description: 'Retrieves detailed information about a single audience, identified by its `audience_id`.

        This includes its name, type (permanent, transient, segmentation), status, and the rules defining the audience criteria (e.g., browser is Chrome, country is USA, visited specific page).

        The `include` parameter can fetch additional data like usage statistics.

        '
      tags:
      - Audiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project into which the audience is stored
        schema:
          type: integer
      - name: audience_id
        in: path
        required: true
        description: ID of the audience to be retrieved
        schema:
          type: integer
      - name: include
        in: query
        required: false
        description: 'Specifies the list of fields to be included in the response, which otherwise would not be sent.


          Read more in the section related to [Optional Fields](#tag/Optional-Fields)

          '
        schema:
          type: array
          items:
            $ref: '#/components/schemas/AudienceIncludeFields'
      responses:
        '200':
          $ref: '#/components/responses/AudienceResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/audiences/add:
    post:
      operationId: createAudience
      summary: Create a new audience
      description: 'Defines a new audience within a project.

        Requires a name, type (permanent, transient, segmentation), and a set of rules defining the audience criteria.

        Rules can be based on visitor data (browser, device, geo-location, language, visit count, cookie values), traffic sources (UTM parameters, referrer), page tags, or JavaScript conditions.

        The Knowledge Base article "Define an Advanced Audience" lists many available conditions.

        '
      tags:
      - Audiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project into which the audience is to be stored
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/CreateAudienceRequest'
      responses:
        '201':
          $ref: '#/components/responses/AudienceResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/audiences/{audience_id}/update:
    post:
      operationId: updateAudience
      summary: Update an existing audience
      description: 'Modifies the configuration of an existing audience.

        This can include changing its name, type, status (active/archived), or the rules defining its criteria.

        '
      tags:
      - Audiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        in: path
        required: true
        description: ID of the project into which the audience is stored
        schema:
          type: integer
      - name: audience_id
        in: path
        required: true
        description: ID of the audience to be updated
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/UpdateAudienceRequest'
      responses:
        '200':
          $ref: '#/components/responses/AudienceResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/audiences/{audience_id}/delete:
    delete:
      operationId: deleteAudience
      summary: Delete an audience
      description: 'Permanently removes an audience from a project. This action is irreversible.

        If the audience is in use by active experiences, consider archiving it instead or unlinking it from experiences first.

        '
      tags:
      - Audiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      - name: audience_id
        in: path
        required: true
        description: ID of the audience to be deleted
        schema:
          type: integer
      responses:
        '200':
          $ref: '#/components/responses/SuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/audiences/bulk-update:
    post:
      operationId: bulkAudiencesUpdate
      summary: Update multiple audiences at once
      description: 'Allows for changing the status (e.g., active, archived) of multiple audiences within a project simultaneously.

        Requires a list of audience IDs and the target status.

        '
      tags:
      - Audiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/BulkUpdateAudiencesRequest'
      responses:
        '200':
          $ref: '#/components/responses/BulkSuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/audiences/bulk-delete:
    post:
      operationId: bulkAudiencesDelete
      summary: Delete multiple audiences at once
      description: 'Permanently removes multiple audiences from a project in a single operation.

        Requires a list of audience IDs. This action is irreversible.

        '
      tags:
      - Audiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/BulkDeleteAudiencesRequest'
      responses:
        '200':
          $ref: '#/components/responses/BulkSuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/audiences-presets:
    get:
      operationId: getAudiencesPresets
      summary: List predefined audience templates (presets)
      description: 'Retrieves a list of predefined audience templates (presets) available for use.

        These presets offer common targeting configurations (e.g., "New Visitors", "Mobile Users", "Visitors from Google") to speed up audience setup.

        The Knowledge Base article "Define an Audience from the Templates" describes this.

        '
      tags:
      - Audiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          $ref: '#/components/responses/AudiencesPresetsListResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/audiences/{audience_id}/clone:
    post:
      operationId: cloneAudience
      summary: Clone an existing audience
      description: 'Creates a new audience as an identical copy of an existing one (specified by `audience_id`).

        Useful for creating a similar audience with minor modifications or for templating.

        '
      tags:
      - Audiences
      parameters:
      - name: account_id
        in: path
        required: true
        description: ID of the account that owns the retrieved/saved data
        schema:
          type: integer
      - name: project_id
        description: ID of the project to which save/retrieved data is connected
        in: path
        required: true
        schema:
          type: integer
      - name: audience_id
        in: path
        required: true
        description: ID of the audience to be deleted
        schema:
          type: integer
      - name: include
        in: query
        required: false
        description: 'Specifies the list of fields to be included in the response, which otherwise would not be sent.


          Read more in the section related to [Optional Fields](#tag/Optional-Fields)

          '
        schema:
          type: array
          items:
            $ref: '#/components/schemas/AudienceIncludeFields'
      responses:
        '201':
          $ref: '#/components/responses/AudienceResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
components:
  schemas:
    BaseRuleWithBrowserNameValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: Browser name used for matching
            type: string
            enum:
            - chrome
            - microsoft_ie
            - firefox
            - microsoft_edge
            - mozilla
            - opera
            - safari
    AudienceTypesWithUrl:
      description: 'Defines the behavior for an audience that *includes* URL-based conditions in its rules.

        - `segmentation`: Once a visitor matches the audience criteria (which can include URL rules), they are tagged and permanently added to this segment. This segment membership persists across sessions and can be used for long-term targeting or analysis. URL rules are evaluated to determine initial entry into the segment.

        Knowledge Base: "A segment basically allows a visitor to qualify for an audience on subsequent visits even if they do not meet the audience conditions."

        '
      type: string
      enum:
      - segmentation
    BaseRuleWithSegmentBucketedValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: ID of the segment used for matching
            type: number
    Pagination:
      type: object
      properties:
        current_page:
          description: The current page number being displayed from the paginated set.
          type: integer
          minimum: 1
        items_count:
          description: The total number of items available across all pages for the current filter criteria.
          type: integer
          minimum: 0
        items_per_page:
          description: The number of items included in the current page of results (matches `results_per_page` from the request).
          type: integer
          minimum: 0
        pages_count:
          description: The total number of pages available for the current filter criteria and `results_per_page` setting.
          type: integer
          minimum: 0
    GenericTextKeyValueMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithStringValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/GenericTextKeyValueMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/TextMatchingOptions'
      - $ref: '#/components/schemas/GenericKey'
    DayOfWeekMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithDayOfWeekValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/DayOfWeekMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/NumericMatchingOptions'
    WeatherConditionMatchRulesTypes:
      type: string
      enum:
      - weather_condition
    GenericBoolMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithBooleanValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/BoolMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/ChoiceMatchingOptions'
    GetAudiencesListRequestData:
      allOf:
      - $ref: '#/components/schemas/OnlyCount'
      - $ref: '#/components/schemas/AudiencesListFilteringOptions'
      - $ref: '#/components/schemas/PageNumber'
      - type: object
        properties:
          include:
            description: Specifies the list of fields to be included in the response, which otherwise would not be sent.
            type: array
            items:
              $ref: '#/components/schemas/AudienceIncludeFields'
          only:
            description: 'Only retrieve audiences with the given ids.

              '
            type: array
            nullable: true
            items:
              type: integer
            maxItems: 100
          except:
            description: 'Except audiences with the given ids.

              '
            type: array
            items:
              type: integer
            maxItems: 100
    TextMatchingOptions:
      type: string
      enum:
      - matches
      - regexMatches
      - contains
      - endsWith
      - startsWith
    MinuteOfHourMatchRulesTypes:
      type: string
      enum:
      - local_time_minute_of_hour
      - project_time_minute_of_hour
    SortDirection:
      type: object
      properties:
        sort_direction:
          type: string
          nullable: true
          default: desc
          description: 'The direction for sorting the list results, based on the `sort_by` field.

            - `asc`: Ascending order (e.g., A-Z, 1-10, oldest to newest).

            - `desc`: Descending order (e.g., Z-A, 10-1, newest to oldest).

            Defaults to `desc` (newest/highest first) if not specified.

            '
          enum:
          - asc
          - desc
    GenericTextKeyValueMatchRulesTypes:
      type: string
      enum:
      - generic_text_key_value
    AudiencePreset:
      type: object
      properties:
        id:
          type: integer
          description: The unique identifier for the audience preset.
          readOnly: true
        description:
          type: string
          description: A brief explanation of the criteria this preset audience targets.
        name:
          type: string
          description: The display name of the preset audience (e.g., "All Visitors", "Desktop Users").
        stats:
          type: object
          readOnly: true
          description: Statistics related to the usage of this preset.
          properties:
            experiences_usage:
              description: 'The number of active experiences currently using this preset audience.

                '
              type: number
              default: 0
        rules:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/RuleObjectAudience'
    BaseRuleWithMinuteOfHourValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: Minute of hour used for matching
            type: number
            minimum: 1
            maximum: 60
    TextMatchRulesTypes:
      type: string
      enum:
      - url
      - url_with_query
      - query_string
      - campaign
      - keyword
      - medium
      - source_name
      - city
      - region
      - browser_version
      - user_agent
      - page_tag_page_type
      - page_tag_category_id
      - page_tag_category_name
      - page_tag_product_sku
      - page_tag_product_name
      - page_tag_customer_id
      - page_tag_custom_1
      - page_tag_custom_2
      - page_tag_custom_3
      - page_tag_custom_4
      - visitor_id
    GenericBoolKeyValueMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithBooleanValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/GenericBoolKeyValueMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/ChoiceMatchingOptions'
      - $ref: '#/components/schemas/GenericKey'
    BaseRuleWithOsValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: Operating System name used for matching
            type: string
            enum:
            - android
            - iphone
            - ipod
            - ipad
            - windows
            - macos
            - linux
    AudiencesPresetsListResponseData:
      type: object
      description: Response containing a list of predefined audience templates (presets) available in the system.
      properties:
        data:
          $ref: '#/components/schemas/AudiencesPresetsList'
    BaseRuleWithStringValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: The value used to match against 'rule_type' using 'matching'
            type: string
    GenericNumericKeyValueMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithNumericValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/GenericNumericKeyValueMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/NumericMatchingOptions'
      - $ref: '#/components/schemas/GenericKey'
    OnlyCount:
      type: object
      properties:
        onlyCount:
          type: boolean
          description: 'If set to `true` in a list request, the response will only contain the total count of matching items (`extra.pagination.items_count`)

            and will not include the actual item data. Useful for quickly getting totals without fetching full datasets.

            '
    AudiencesListResponseData:
      type: object
      description: Response containing a list of audiences defined within a project, along with pagination details if applicable.
      properties:
        data:
          $ref: '#/components/schemas/AudiencesList'
        extra:
          $ref: '#/components/schemas/Extra'
    RuleObjectAudience:
      type: object
      nullable: true
      description: This one describes a logical rule that is being used inside the app for triggering goals, matching audiences etc
      properties:
        OR:
          description: This describes an outer set of blocks which are evaluated using OR's between them
          type: array
          items:
            type: object
            properties:
              AND:
                description: This describes a colections of logical blocks which are evaluated using AND's between them
                type: array
                items:
                  type: object
                  properties:
                    OR_WHEN:
                      description: This describes a colections of logical blocks which are evaluated using OR's between them
                      type: array
                      items:
                        $ref: '#/components/schemas/RuleElementAudience'
    VisitorTypeMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithVisitorTypeValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/VisitorTypeMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/ChoiceMatchingOptions'
    DayOfWeekMatchRulesTypes:
      type: string
      enum:
      - local_time_day_of_week
      - project_time_day_of_week
    JsConditionMatchRulesTypes:
      type: string
      enum:
      - js_condition
    BulkUpdateAudienceRequestData:
      type: object
      description: Request body for bulk updating the status of multiple audiences.
      additionalProperties: false
      properties:
        id:
          $ref: '#/components/schemas/BulkAudiencesIds'
        status:
          $ref: '#/components/schemas/AudienceStatuses'
      required:
      - id
      - status
    LanguageMatchRulesTypes:
      type: string
      enum:
      - language
    BaseMatch:
      type: object
      properties:
        negated:
          description: 'If `true`, the logical result of the match is inverted.

            For example, if `match_type` is ''contains'' and `value` is ''apple'', `negated: true` means the rule matches if the attribute *does not* contain ''apple''.

            '
          type: boolean
    AudiencesList:
      type: array
      description: A list of audience objects.
      items:
        $ref: '#/components/schemas/Audience'
    GenericNumericMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithNumericValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/NumericMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/NumericMatchingOptions'
    GenericTextMatchRule:
      allOf:
      - $ref: '#/components/schemas/BaseRuleWithStringValue'
      - type: object
        required:
        - rule_type
        properties:
          rule_type:
            $ref: '#/components/schemas/TextMatchRulesTypes'
          matching:
            allOf:
            - $ref: '#/components/schemas/BaseMatch'
            - type: object
              properties:
                match_type:
                  $ref: '#/components/schemas/TextMatchingOptions'
    RuleElementNoUrl:
      oneOf:
      - $ref: '#/components/schemas/GenericTextMatchRule'
      - $ref: '#/components/schemas/GenericNumericMatchRule'
      - $ref: '#/components/schemas/GenericBoolMatchRule'
      - $ref: '#/components/schemas/CookieMatchRule'
      - $ref: '#/components/schemas/GenericTextKeyValueMatchRule'
      - $ref: '#/components/schemas/GenericNumericKeyValueMatchRule'
      - $ref: '#/components/schemas/GenericBoolKeyValueMatchRule'
      - $ref: '#/components/schemas/CountryMatchRule'
      - $ref: '#/components/schemas/LanguageMatchRule'
      - $ref: '#/components/schemas/GoalTriggeredMatchRule'
      - $ref: '#/components/schemas/SegmentBucketedMatchRule'
      - $ref: '#/components/schemas/DayOfWeekMatchRule'
      - $ref: '#/components/schemas/HourOfDayMatchRule'
      - $ref: '#/components/schemas/MinuteOfHourMatchRule'
      - $ref: '#/components/schemas/BrowserNameMatchRule'
      - $ref: '#/components/schemas/OsMatchRule'
      - $ref: '#/components/schemas/WeatherConditionMatchRule'
      - $ref: '#/components/schemas/VisitorTypeMatchRule'
      - $ref: '#/components/schemas/JsConditionMatchRule'
      - $ref: '#/components/schemas/VisitorDataExistsMatchRule'
      discriminator:
        propertyName: rule_type
        mapping:
          campaign: '#/components/schemas/GenericTextMatchRule'
          keyword: '#/components/schemas/GenericTextMatchRule'
          medium: '#/components/schemas/GenericTextMatchRule'
          source_name: '#/components/schemas/GenericTextMatchRule'
          avg_time_page: '#/components/schemas/GenericNumericMatchRule'
          city: '#/components/schemas/GenericTextMatchRule'
          country: '#/components/schemas/CountryMatchRule'
          region: '#/components/schemas/GenericTextMatchRule'
          days_since_last_visit: '#/components/schemas/GenericNumericMatchRule'
          language: '#/components/schemas/LanguageMatchRule'
          pages_visited_count: '#/components/schemas/GenericNumericMatchRule'
          goal_triggered: '#/components/schemas/GoalTriggeredMatchRule'
          visit_duration: '#/components/schemas/GenericNumericMatchRule'
          cookie: '#/components/schemas/CookieMatchRule'
          visitor_type: '#/components/schemas/VisitorTypeMatchRule'
          visits_count: '#/components/schemas/GenericNumericMatchRule'
          bucketed_into_experience: '#/components/schemas/GenericBoolMatchRule'
          bucketed_into_segment: '#/components/schemas/SegmentBucketedMatchRule'
          local_time_day_of_week: '#/components/schemas/DayOfWeekMatchRule'
          local_time_hour_of_day: '#/components/schemas/HourOfDayMatchRule'
          local_time_minute_of_hour: '#/components/schemas/MinuteOfHourMatchRule'
          project_time_day_of_week: '#/components/schemas/DayOfWeekMatchRule'
          project_time_hour_of_day: '#/components/schemas/HourOfDayMatchRule'
          project_time_minute_of_hour: '#/components/schemas/MinuteOfHourMatchRule'
          browser_name: '#/components/schemas/BrowserNameMatchRule'
          browser_version: '#/components/schemas/GenericTextMatchRule'
          os: '#/components/schemas/OsMatchRule'
          user_agent: '#/components/schemas/GenericTextMatchRule'
          is_desktop: '#/components/schemas/GenericBoolMatchRule'
          is_mobile: '#/components/schemas/GenericBoolMatchRule'
          is_tablet: '#/components/schemas/GenericBoolMatchRule'
          js_condition: '#/components/schemas/JsConditionMatchRule'
          page_tag_page_type: '#/components/schemas/GenericTextMatchRule'
          page_tag_category_id: '#/components/schemas/GenericTextMatchRule'
          page_tag_category_name: '#/components/schemas/GenericTextMatchRule'
          page_tag_product_sku: '#/components/schemas/GenericTextMatchRule'
          page_tag_product_name: '#/components/schemas/GenericTextMatchRule'
          page_tag_product_price: '#/components/schemas/GenericNumericMatchRule'
          page_tag_customer_id: '#/components/schemas/GenericTextMatchRule'
          page_tag_custom_1: '#/components/schemas/GenericTextMatchRule'
          page_tag_custom_2: '#/components/schemas/GenericTextMatchRule'
          page_tag_custom_3: '#/components/schemas/GenericTextMatchRule'
          page_tag_custom_4: '#/components/schemas/GenericTextMatchRule'
          weather_condition: '#/components/schemas/WeatherConditionMatchRule'
          generic_text_key_value: '#/components/schemas/GenericTextKeyValueMatchRule'
          generic_numeric_key_value: '#/components/schemas/GenericNumericKeyValueMatchRule'
          generic_bool_key_value: '#/components/schemas/GenericBoolKeyValueMatchRule'
          visitor_id: '#/components/schemas/GenericTextMatchRule'
          visitor_data_exists: '#/components/schemas/VisitorDataExistsMatchRule'
    CookieMatchingOptions:
      type: string
      enum:
      - matches
      - regexMatches
      - contains
      - endsWith
      - startsWith
      - exists
      - doesNotExist
    ErrorData:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        fields:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
    VisitorDataExistsMatchRulesTypes:
      type: string
      enum:
      - visitor_data_exists
    RuleObjectNoUrl:
      type: object
      nullable: true
      description: 'Similar to `RuleObject`, but the individual `RuleElementNoUrl` conditions within `OR_WHEN` arrays cannot include URL-based matching types.

        Used for ''permanent'' or ''transient'' audiences where URL context is not persistently evaluated or relevant for the audience type.

        '
      properties:
        OR:
          description: An array of AND-blocks.
          type: array
          items:
            ty

# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/convert/refs/heads/main/openapi/convert-audiences-api-openapi.yml