---
title: "Audience"
permalink: "/docs/api-v2/audience"
description: "Open API Reference Docs for the API"
original_source: "openapi-spec/api-v2.yaml"
---

> **AI agents:** This is the Markdown version of a RevenueCat documentation page. For the complete documentation index, see [llms.txt](https://www.revenuecat.com/docs/llms.txt).


# Developer API (2.0.0)

Download OpenAPI specification:[Download](https://www.revenuecat.com/docs/redocusaurus/openapi-v2-audience.yaml)

## <a id="tag/Audience"></a>Audience

Part of the [REST API v2 Reference](/docs/api-v2).

Operations about audiences.

#### Endpoints

-   [Get a list of Audiences](#tag/Audience/operation/list-audiences) — `GET /projects/{project_id}/audiences`
-   [Create an Audience](#tag/Audience/operation/create-audience) — `POST /projects/{project_id}/audiences`
-   [Preview Audience members](#tag/Audience/operation/preview-audience) — `POST /projects/{project_id}/audiences/actions/preview`
-   [Get Audience filter options](#tag/Audience/operation/get-audience-filter-options) — `GET /projects/{project_id}/audiences/filter_options`
-   [Get an Audience](#tag/Audience/operation/get-audience) — `GET /projects/{project_id}/audiences/{audience_id}`
-   [Update an Audience](#tag/Audience/operation/update-audience) — `POST /projects/{project_id}/audiences/{audience_id}`

## <a id="tag/Audience/operation/list-audiences"></a>Get a list of Audiences

get/projects/{project_id}/audiences

https://api.revenuecat.com/v2/projects/{project_id}/audiences

This endpoint requires the following permission(s): `audiences:audiences:read`. This endpoint belongs to the **Audiences** domain, which has a default rate limit of **60 requests per minute**.

##### Authorizations:

_BearerAuth_

##### path Parameters

- `project_id` (required): string <= 255 characters Example: proj1ab2c3d4 — ID of the project

### Responses

**200**

Success

**400**

Bad request

**401**

Unauthorized

**403**

Access denied

**404**

Not found

**423**

Locked

**429**

The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.

**500**

Internal server error

**503**

Internal server error

### Response samples

Content type

application/json

 

```json
{
  "object": "list",
  "items": [
    {
      "object": "audience",
      "id": "aud1a2b3c4d5e6f7g8",
      "project_id": "proj1ab2c3d4",
      "customer_list_id": "list1a2b3c4d",
      "name": "Active subscribers",
      "rules": {
        "groups": [
          {
            "conditions": [
              {
                "field": "status",
                "operator": "is",
                "value": "active"
              }
            ]
          }
        ]
      },
      "created_at": 1658399423658,
      "updated_at": 1658399423658,
      "stats": {
        "total_customers": 6436,
        "active_subscriptions": 4120,
        "active_trials": 10,
        "total_revenue": 2630746.46,
        "currency": "USD",
        "is_approximate": false
      },
      "customer_sample": [
        {
          "object": "audience_member",
          "app_user_id": "stub_user_1",
          "app_uuid": "00000000-0000-0000-0000-000000000001",
          "email": "stub1@example.com",
          "first_seen_at": 1704067200000,
          "last_seen_at": 1704153600000,
          "status": "active",
          "total_spent": 129.97,
          "currency": "USD",
          "latest_product_name": "Pro Annual"
        }
      ],
      "used_by": {
        "object": "audience_used_by",
        "targeting_rules": [
          {
            "object": "targeting_rule_reference",
            "id": "a1b2c3d4e5",
            "display_name": "US iOS users",
            "state": "active"
          }
        ],
        "experiments": [
          {
            "object": "experiment_reference",
            "id": "exp1a2b3c4d5e6f7",
            "display_name": "Paywall price test",
            "status": "running"
          }
        ]
      }
    }
  ],
  "next_page": null,
  "url": "/v2/projects/proj1ab2c3d4/audiences"
}
```

## <a id="tag/Audience/operation/create-audience"></a>Create an Audience

post/projects/{project_id}/audiences

https://api.revenuecat.com/v2/projects/{project_id}/audiences

This endpoint requires the following permission(s): `audiences:audiences:read_write`. This endpoint belongs to the **Audiences** domain, which has a default rate limit of **60 requests per minute**.

##### Authorizations:

_BearerAuth_

##### path Parameters

- `project_id` (required): string <= 255 characters Example: proj1ab2c3d4 — ID of the project

##### Request Body schema: application/json

required

- `name` (required): string [ 1 .. 256 ] characters — The name of the Audience
- `rules` (required): object (AudienceRules) — The Audience membership rules. A subscriber matches the Audience when any group matches (groups are combined with OR); within a group all conditions must match (conditions are combined with AND).
  - `groups` (required): Array of objects — The condition groups, combined with OR.
    - `conditions` (required): Array of objects (AudienceRuleCondition) — The conditions in the group, combined with AND.
      - `field` (required): string (one of 2 schema variants) — The subscriber field evaluated by the condition. Custom subscriber attributes are referenced as `customAttribute:`key`` (e.g. `customAttribute:plan_tier`).
      - `operator` (required): string Enum: "is" "isNot" "isAnyOf" "isNotAnyOf" "greaterThan" "greaterThanOrEqual" "lessThan" "lessThanOrEqual" "equal" "notEqual" … 13 more — The comparison operator applied to the field.
      - `value`: string Default: "" — The value the field is compared against. May be empty for operators that do not take a value (e.g. `isEmpty`, `isNotEmpty`). Multi-value operators (`isAnyOf`, `isNotAnyOf`, `containsAnyOf`) take comma-separated values. For `latestProduct`, equality operators use product ids (`prod...`), while substring operators use raw product identifier text. For `anyActiveStore`, use store identifiers such as `app_store`.
      - `currency`: string Enum: "USD" "EUR" "GBP" "AUD" "CAD" "JPY" "BRL" "KRW" "CNY" "MXN" … 4 more — Currency for a `totalSpent` or `totalAdRevenue` comparison. Omitted values are interpreted as USD. Must be omitted for `isEmpty` and `isNotEmpty`.

### Responses

**201**

Success. The Audience was created

**400**

Bad request

**401**

Unauthorized

**403**

Access denied

**404**

Not found

**409**

Conflict

**422**

Unprocessable entity

**423**

Locked

**429**

The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.

**500**

Internal server error

**503**

Internal server error

### Request samples

Content type

application/json

 

```json
{
  "name": "Active subscribers",
  "rules": {
    "groups": [
      {
        "conditions": [
          {
            "field": "status",
            "operator": "is",
            "value": "active"
          }
        ]
      }
    ]
  }
}
```

### Response samples

Content type

application/json

 

```json
{
  "object": "audience",
  "id": "aud1a2b3c4d5e6f7g8",
  "project_id": "proj1ab2c3d4",
  "customer_list_id": "list1a2b3c4d",
  "name": "Active subscribers",
  "rules": {
    "groups": [
      {
        "conditions": [
          {
            "field": "status",
            "operator": "is",
            "value": "active"
          }
        ]
      }
    ]
  },
  "created_at": 1658399423658,
  "updated_at": 1658399423658,
  "stats": {
    "total_customers": 6436,
    "active_subscriptions": 4120,
    "active_trials": 10,
    "total_revenue": 2630746.46,
    "currency": "USD",
    "is_approximate": false
  },
  "customer_sample": [
    {
      "object": "audience_member",
      "app_user_id": "stub_user_1",
      "app_uuid": "00000000-0000-0000-0000-000000000001",
      "email": "stub1@example.com",
      "first_seen_at": 1704067200000,
      "last_seen_at": 1704153600000,
      "status": "active",
      "total_spent": 129.97,
      "currency": "USD",
      "latest_product_name": "Pro Annual"
    }
  ],
  "used_by": {
    "object": "audience_used_by",
    "targeting_rules": [
      {
        "object": "targeting_rule_reference",
        "id": "a1b2c3d4e5",
        "display_name": "US iOS users",
        "state": "active"
      }
    ],
    "experiments": [
      {
        "object": "experiment_reference",
        "id": "exp1a2b3c4d5e6f7",
        "display_name": "Paywall price test",
        "status": "running"
      }
    ]
  }
}
```

## <a id="tag/Audience/operation/preview-audience"></a>Preview Audience members

post/projects/{project_id}/audiences/actions/preview

https://api.revenuecat.com/v2/projects/{project_id}/audiences/actions/preview

This endpoint requires the following permission(s): `audiences:audiences:read`. This endpoint belongs to the **Audiences** domain, which has a default rate limit of **60 requests per minute**.

##### Authorizations:

_BearerAuth_

##### path Parameters

- `project_id` (required): string <= 255 characters Example: proj1ab2c3d4 — ID of the project

##### query Parameters

- `sort_by`: string Enum: "status" "latest_auto_renew_intent" "first_seen_at" "last_seen_at" "total_spent" Example: sort_by=last_seen_at — Customer sample field to sort by.
- `sort_direction`: string Default: "asc" Enum: "asc" "desc" Example: sort_direction=desc — Direction to sort the customer sample.

##### Request Body schema: application/json

required

One of

AudiencePreviewByIdAudiencePreviewByRules

- `audience_uuid` (required): string — UUID of the saved Audience.

### Responses

**200**

Success

**400**

Bad request

**401**

Unauthorized

**403**

Access denied

**404**

Not found

**409**

Conflict

**422**

Unprocessable entity

**423**

Locked

**429**

The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.

**500**

Internal server error

**503**

Internal server error

### Request samples

Content type

application/json

Example

AudiencePreviewByIdAudiencePreviewByRulesAudiencePreviewById

```json
{
  "audience_uuid": "abc12345"
}
```

### Response samples

Content type

application/json

 

```json
{
  "object": "audience_preview",
  "stats": {
    "total_customers": 6436,
    "active_subscriptions": 4120,
    "active_trials": 10,
    "total_revenue": 2630746.46,
    "currency": "USD",
    "is_approximate": false
  },
  "customer_sample": [
    {
      "object": "audience_member",
      "app_user_id": "stub_user_1",
      "app_uuid": "00000000-0000-0000-0000-000000000001",
      "email": "stub1@example.com",
      "first_seen_at": 1704067200000,
      "last_seen_at": 1704153600000,
      "status": "active",
      "total_spent": 129.97,
      "currency": "USD",
      "latest_product_name": "Pro Annual"
    }
  ]
}
```

## <a id="tag/Audience/operation/get-audience-filter-options"></a>Get Audience filter options

get/projects/{project_id}/audiences/filter_options

https://api.revenuecat.com/v2/projects/{project_id}/audiences/filter_options

Returns the known values for audience rule condition fields whose options are derived from the project's data (attribution fields, price experiments, and custom attributes). Custom attributes are returned as dynamic fields using the format `customAttribute:<key>`; requesting `customAttribute` expands to every known custom attribute. Fields with a fixed set of values (e.g. `country`, `platform`, `status`) are not served by this endpoint. This endpoint requires the following permission(s): `audiences:audiences:read`. This endpoint belongs to the **Audiences** domain, which has a default rate limit of **60 requests per minute**.

##### Authorizations:

_BearerAuth_

##### path Parameters

- `project_id` (required): string <= 255 characters Example: proj1ab2c3d4 — ID of the project

##### query Parameters

- `fields` (required): Array of strings or strings non-empty Example: fields=mediaSource — Audience condition fields to load options for. Custom attributes use the field format `customAttribute:`key``; `customAttribute` alone expands to every known custom attribute.

### Responses

**200**

Success

**400**

Bad request

**401**

Unauthorized

**403**

Access denied

**404**

Not found

**423**

Locked

**429**

The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.

**500**

Internal server error

**503**

Internal server error

### Response samples

Content type

application/json

 

```json
{
  "object": "list",
  "items": [
    {
      "object": "audience_filter_field_options",
      "field": "mediaSource",
      "options": [
        {
          "object": "audience_filter_option",
          "id": "Facebook Ads",
          "display_name": "Facebook Ads"
        }
      ],
      "cardinality_exceeded": false
    }
  ],
  "next_page": null,
  "url": "/v2/projects/proj1ab2c3d4/audiences/filter_options"
}
```

## <a id="tag/Audience/operation/get-audience"></a>Get an Audience

get/projects/{project_id}/audiences/{audience_id}

https://api.revenuecat.com/v2/projects/{project_id}/audiences/{audience_id}

This endpoint requires the following permission(s): `audiences:audiences:read`. This endpoint belongs to the **Audiences** domain, which has a default rate limit of **60 requests per minute**.

##### Authorizations:

_BearerAuth_

##### path Parameters

- `project_id` (required): string <= 255 characters Example: proj1ab2c3d4 — ID of the project
- `audience_id` (required): string [ 1 .. 255 ] characters Example: aud1a2b3c4d5e6f7g8 — ID of the Audience

##### query Parameters

- `expand`: Array of strings[ items [ 1 .. 5000 ] characters ] Items Enum: "stats" "customer_sample" "used_by" Example: expand=stats — Specifies which fields in the response should be expanded. Accepted values are: `stats` (requires `audiences:audiences:read` permission), `customer_sample` (requires `audiences:audiences:read` permission), `used_by` (requires `audiences:audiences:read` permission).

### Responses

**200**

Success

**400**

Bad request

**401**

Unauthorized

**403**

Access denied

**404**

Not found

**423**

Locked

**429**

The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.

**500**

Internal server error

**503**

Internal server error

### Response samples

Content type

application/json

 

```json
{
  "object": "audience",
  "id": "aud1a2b3c4d5e6f7g8",
  "project_id": "proj1ab2c3d4",
  "customer_list_id": "list1a2b3c4d",
  "name": "Active subscribers",
  "rules": {
    "groups": [
      {
        "conditions": [
          {
            "field": "status",
            "operator": "is",
            "value": "active"
          }
        ]
      }
    ]
  },
  "created_at": 1658399423658,
  "updated_at": 1658399423658,
  "stats": {
    "total_customers": 6436,
    "active_subscriptions": 4120,
    "active_trials": 10,
    "total_revenue": 2630746.46,
    "currency": "USD",
    "is_approximate": false
  },
  "customer_sample": [
    {
      "object": "audience_member",
      "app_user_id": "stub_user_1",
      "app_uuid": "00000000-0000-0000-0000-000000000001",
      "email": "stub1@example.com",
      "first_seen_at": 1704067200000,
      "last_seen_at": 1704153600000,
      "status": "active",
      "total_spent": 129.97,
      "currency": "USD",
      "latest_product_name": "Pro Annual"
    }
  ],
  "used_by": {
    "object": "audience_used_by",
    "targeting_rules": [
      {
        "object": "targeting_rule_reference",
        "id": "a1b2c3d4e5",
        "display_name": "US iOS users",
        "state": "active"
      }
    ],
    "experiments": [
      {
        "object": "experiment_reference",
        "id": "exp1a2b3c4d5e6f7",
        "display_name": "Paywall price test",
        "status": "running"
      }
    ]
  }
}
```

## <a id="tag/Audience/operation/update-audience"></a>Update an Audience

post/projects/{project_id}/audiences/{audience_id}

https://api.revenuecat.com/v2/projects/{project_id}/audiences/{audience_id}

This endpoint requires the following permission(s): `audiences:audiences:read_write`. This endpoint belongs to the **Audiences** domain, which has a default rate limit of **60 requests per minute**.

##### Authorizations:

_BearerAuth_

##### path Parameters

- `project_id` (required): string <= 255 characters Example: proj1ab2c3d4 — ID of the project
- `audience_id` (required): string [ 1 .. 255 ] characters Example: aud1a2b3c4d5e6f7g8 — ID of the Audience

##### Request Body schema: application/json

required

non-empty

- `name`: string [ 1 .. 256 ] characters — The name of the Audience
- `rules`: object (AudienceRules) — The Audience membership rules. A subscriber matches the Audience when any group matches (groups are combined with OR); within a group all conditions must match (conditions are combined with AND).
  - `groups` (required): Array of objects — The condition groups, combined with OR.
    - `conditions` (required): Array of objects (AudienceRuleCondition) — The conditions in the group, combined with AND.
      - `field` (required): string (one of 2 schema variants) — The subscriber field evaluated by the condition. Custom subscriber attributes are referenced as `customAttribute:`key`` (e.g. `customAttribute:plan_tier`).
      - `operator` (required): string Enum: "is" "isNot" "isAnyOf" "isNotAnyOf" "greaterThan" "greaterThanOrEqual" "lessThan" "lessThanOrEqual" "equal" "notEqual" … 13 more — The comparison operator applied to the field.
      - `value`: string Default: "" — The value the field is compared against. May be empty for operators that do not take a value (e.g. `isEmpty`, `isNotEmpty`). Multi-value operators (`isAnyOf`, `isNotAnyOf`, `containsAnyOf`) take comma-separated values. For `latestProduct`, equality operators use product ids (`prod...`), while substring operators use raw product identifier text. For `anyActiveStore`, use store identifiers such as `app_store`.
      - `currency`: string Enum: "USD" "EUR" "GBP" "AUD" "CAD" "JPY" "BRL" "KRW" "CNY" "MXN" … 4 more — Currency for a `totalSpent` or `totalAdRevenue` comparison. Omitted values are interpreted as USD. Must be omitted for `isEmpty` and `isNotEmpty`.

### Responses

**200**

Success. The Audience was updated

**400**

Bad request

**401**

Unauthorized

**403**

Access denied

**404**

Not found

**409**

Conflict

**422**

Unprocessable entity

**423**

Locked

**429**

The request could not be completed because the rate limiting domain for this endpoint is currently at its limit for this project.

**500**

Internal server error

**503**

Internal server error

### Request samples

Content type

application/json

 

```json
{
  "name": "Active subscribers",
  "rules": {
    "groups": [
      {
        "conditions": [
          {
            "field": "status",
            "operator": "is",
            "value": "active"
          }
        ]
      }
    ]
  }
}
```

### Response samples

Content type

application/json

 

```json
{
  "object": "audience",
  "id": "aud1a2b3c4d5e6f7g8",
  "project_id": "proj1ab2c3d4",
  "customer_list_id": "list1a2b3c4d",
  "name": "Active subscribers",
  "rules": {
    "groups": [
      {
        "conditions": [
          {
            "field": "status",
            "operator": "is",
            "value": "active"
          }
        ]
      }
    ]
  },
  "created_at": 1658399423658,
  "updated_at": 1658399423658,
  "stats": {
    "total_customers": 6436,
    "active_subscriptions": 4120,
    "active_trials": 10,
    "total_revenue": 2630746.46,
    "currency": "USD",
    "is_approximate": false
  },
  "customer_sample": [
    {
      "object": "audience_member",
      "app_user_id": "stub_user_1",
      "app_uuid": "00000000-0000-0000-0000-000000000001",
      "email": "stub1@example.com",
      "first_seen_at": 1704067200000,
      "last_seen_at": 1704153600000,
      "status": "active",
      "total_spent": 129.97,
      "currency": "USD",
      "latest_product_name": "Pro Annual"
    }
  ],
  "used_by": {
    "object": "audience_used_by",
    "targeting_rules": [
      {
        "object": "targeting_rule_reference",
        "id": "a1b2c3d4e5",
        "display_name": "US iOS users",
        "state": "active"
      }
    ],
    "experiments": [
      {
        "object": "experiment_reference",
        "id": "exp1a2b3c4d5e6f7",
        "display_name": "Paywall price test",
        "status": "running"
      }
    ]
  }
}
```

## <a id="tag/Endpoint-Reference"></a>Endpoint Reference

All API v2 resources, one page each. General concepts (authentication, pagination, rate limits, error handling) live on the [API v2 overview](/docs/api-v2).

-   [App](/docs/api-v2/app) — 7 endpoints
-   [Audience](/docs/api-v2/audience) — 6 endpoints
-   [Audit Log](/docs/api-v2/audit-log) — 1 endpoint
-   [Charts & Metrics](/docs/api-v2/charts-and-metrics) — 4 endpoints
-   [Collaborator](/docs/api-v2/collaborator) — 1 endpoint
-   [Customer](/docs/api-v2/customer) — 12 endpoints
-   [Customer Resources](/docs/api-v2/customer/resources) — 5 endpoints
-   [Discount](/docs/api-v2/discount) — 10 endpoints
-   [Entitlement](/docs/api-v2/entitlement) — 10 endpoints
-   [IAM](/docs/api-v2/iam) — 1 endpoint
-   [Integration](/docs/api-v2/integration) — 5 endpoints
-   [Invoice](/docs/api-v2/invoice) — 2 endpoints
-   [Offering](/docs/api-v2/offering) — 7 endpoints
-   [Package](/docs/api-v2/package) — 8 endpoints
-   [Paywall](/docs/api-v2/paywall) — 5 endpoints
-   [Paywall Fonts & Media](/docs/api-v2/paywall/assets) — 4 endpoints
-   [Paywall Publishing](/docs/api-v2/paywall/publishing) — 7 endpoints
-   [Product](/docs/api-v2/product) — 8 endpoints
-   [Project](/docs/api-v2/project) — 2 endpoints
-   [Purchase](/docs/api-v2/purchase) — 4 endpoints
-   [Subscription](/docs/api-v2/subscription) — 7 endpoints
-   [Subscription Data Model](/docs/api-v2/subscription-data-model) — full schema reference
-   [Subscription Transactions](/docs/api-v2/subscription-transactions) — 2 endpoints
-   [Virtual Currency](/docs/api-v2/virtual-currency) — 10 endpoints

## Response schema reference

Response examples above mirror the rendered API reference. These field definitions come from the same OpenAPI specification.

### ListAudiences

- Used by `GET /projects/{project_id}/audiences (200) — Get a list of Audiences`

- `object` (required): string — one of `list`; String representing the object's type. Objects of the same type share the same value. Always has the value `list`.
- `items` (required): array of Audience — Details about each object.
  - `object` (required): string — one of `audience`; String representing the object's type. Always has the value `audience`.
  - `id` (required): string — length 1–255; The id of the Audience
  - `project_id` (required): string — length 1–20; ID of the project to which the Audience belongs
  - `customer_list_id` (required): string — length 1–255; ID of the customer list backing the Audience
  - `name` (required): string — length 1–256; The name of the Audience
  - `rules` (required): AudienceRules — The Audience membership rules. A subscriber matches the Audience when any group matches (groups are combined with OR); within a group all conditions must match (conditions are combined with AND).
    - `groups` (required): array of object — The condition groups, combined with OR.
  - `created_at` (required): integer (format: `int64`) — The date the Audience was created (ms since epoch)
  - `updated_at` (required): integer or null (format: `int64`) — The date the Audience was last updated (ms since epoch)
  - `stats`: AudiencePreviewStats
    - `total_customers` (required): integer
    - `active_subscriptions` (required): integer
    - `active_trials` (required): integer
    - `total_revenue` (required): number (format: `double`) — Total revenue in the developer's display currency.
    - `currency` (required): Currency — one of `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL`; ISO 4217 currency code
    - `is_approximate` (required): boolean — Whether these metrics are approximate. When true, counts and revenue are estimated from a sample rather than exact.
  - `customer_sample`: array of AudienceSampleItem — Sample of customers matching the Audience. Only present when requested with `expand=customer_sample`.
    - `object` (required): string — one of `audience_member`
    - `app_user_id` (required): string
    - `app_uuid` (required): string
    - `email`: string or null
    - `first_seen_at`: integer or null (format: `int64`) — Timestamp when the customer was first seen or purchased, in milliseconds since epoch.
    - `last_seen_at`: integer or null (format: `int64`) — Timestamp when the customer was last seen, in milliseconds since epoch.
    - `status` (required): string
    - `total_spent` (required): number or null (format: `float`) — Total gross across the subscriber's subscriptions and one-time purchases, in `currency`, or null when no production purchase or exchange rate exists.
    - `currency` (required): Currency — one of `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL`; ISO 4217 currency code
    - `latest_product_name`: string or null — Display name of the most recent non-sandbox subscription or one-time purchase product, or null if none.
  - `used_by`: AudienceUsedBy
    - `object` (required): string — one of `audience_used_by`
    - `targeting_rules` (required): array of AudienceTargetingRuleReference — Targeting rules that reference this Audience
    - `experiments` (required): array of AudienceExperimentReference — Experiments that reference this Audience
- `next_page` (required): string or null — URL to access the next page. Audiences are not paginated, so this is always null.
- `url` (required): string — length 0–5000; The URL where this list can be accessed.

### Audience

- Used by `POST /projects/{project_id}/audiences (201) — Create an Audience`
- Used by `GET /projects/{project_id}/audiences/{audience_id} (200) — Get an Audience`
- Used by `POST /projects/{project_id}/audiences/{audience_id} (200) — Update an Audience`

- `object` (required): string — one of `audience`; String representing the object's type. Always has the value `audience`.
- `id` (required): string — length 1–255; The id of the Audience
- `project_id` (required): string — length 1–20; ID of the project to which the Audience belongs
- `customer_list_id` (required): string — length 1–255; ID of the customer list backing the Audience
- `name` (required): string — length 1–256; The name of the Audience
- `rules` (required): AudienceRules — The Audience membership rules. A subscriber matches the Audience when any group matches (groups are combined with OR); within a group all conditions must match (conditions are combined with AND).
  - `groups` (required): array of object — The condition groups, combined with OR.
    - `conditions` (required): array of AudienceRuleCondition — The conditions in the group, combined with AND.
- `created_at` (required): integer (format: `int64`) — The date the Audience was created (ms since epoch)
- `updated_at` (required): integer or null (format: `int64`) — The date the Audience was last updated (ms since epoch)
- `stats`: AudiencePreviewStats
  - `total_customers` (required): integer
  - `active_subscriptions` (required): integer
  - `active_trials` (required): integer
  - `total_revenue` (required): number (format: `double`) — Total revenue in the developer's display currency.
  - `currency` (required): Currency — one of `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL`; ISO 4217 currency code
  - `is_approximate` (required): boolean — Whether these metrics are approximate. When true, counts and revenue are estimated from a sample rather than exact.
- `customer_sample`: array of AudienceSampleItem — Sample of customers matching the Audience. Only present when requested with `expand=customer_sample`.
  - `object` (required): string — one of `audience_member`
  - `app_user_id` (required): string
  - `app_uuid` (required): string
  - `email`: string or null
  - `first_seen_at`: integer or null (format: `int64`) — Timestamp when the customer was first seen or purchased, in milliseconds since epoch.
  - `last_seen_at`: integer or null (format: `int64`) — Timestamp when the customer was last seen, in milliseconds since epoch.
  - `status` (required): string
  - `total_spent` (required): number or null (format: `float`) — Total gross across the subscriber's subscriptions and one-time purchases, in `currency`, or null when no production purchase or exchange rate exists.
  - `currency` (required): Currency — one of `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL`; ISO 4217 currency code
  - `latest_product_name`: string or null — Display name of the most recent non-sandbox subscription or one-time purchase product, or null if none.
- `used_by`: AudienceUsedBy
  - `object` (required): string — one of `audience_used_by`
  - `targeting_rules` (required): array of AudienceTargetingRuleReference — Targeting rules that reference this Audience
    - `object` (required): string — one of `targeting_rule_reference`
    - `id` (required): string — The id of the Targeting rule
    - `display_name` (required): string — The display name of the Targeting rule
    - `state` (required): string — one of `active`, `inactive`; Whether the Targeting rule is currently active
  - `experiments` (required): array of AudienceExperimentReference — Experiments that reference this Audience
    - `object` (required): string — one of `experiment_reference`
    - `id` (required): string — The id of the experiment
    - `display_name` (required): string — The display name of the experiment
    - `status` (required): string — one of `draft`, `running`, `paused`, `stopped`; The status of the experiment

### AudiencePreview

- Used by `POST /projects/{project_id}/audiences/actions/preview (200) — Preview Audience members`

- `object` (required): string — one of `audience_preview`
- `stats` (required): AudiencePreviewStats
  - `total_customers` (required): integer
  - `active_subscriptions` (required): integer
  - `active_trials` (required): integer
  - `total_revenue` (required): number (format: `double`) — Total revenue in the developer's display currency.
  - `currency` (required): Currency — one of `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL`; ISO 4217 currency code
  - `is_approximate` (required): boolean — Whether these metrics are approximate. When true, counts and revenue are estimated from a sample rather than exact.
- `customer_sample` (required): array of AudienceSampleItem
  - `object` (required): string — one of `audience_member`
  - `app_user_id` (required): string
  - `app_uuid` (required): string
  - `email`: string or null
  - `first_seen_at`: integer or null (format: `int64`) — Timestamp when the customer was first seen or purchased, in milliseconds since epoch.
  - `last_seen_at`: integer or null (format: `int64`) — Timestamp when the customer was last seen, in milliseconds since epoch.
  - `status` (required): string
  - `total_spent` (required): number or null (format: `float`) — Total gross across the subscriber's subscriptions and one-time purchases, in `currency`, or null when no production purchase or exchange rate exists.
  - `currency` (required): Currency — one of `AED`, `AFN`, `ALL`, `AMD`, `ANG`, `AOA`, `ARS`, `AUD`, `AWG`, `AZN`, `BAM`, `BBD`, `BDT`, `BGN`, `BHD`, `BIF`, `BMD`, `BND`, `BOB`, `BRL`, `BSD`, `BTC`, `BTN`, `BWP`, `BYN`, `BZD`, `CAD`, `CDF`, `CHF`, `CLF`, `CLP`, `CNH`, `CNY`, `COP`, `CRC`, `CUC`, `CUP`, `CVE`, `CZK`, `DJF`, `DKK`, `DOP`, `DZD`, `EGP`, `ERN`, `ETB`, `EUR`, `FJD`, `FKP`, `GBP`, `GEL`, `GGP`, `GHS`, `GIP`, `GMD`, `GNF`, `GTQ`, `GYD`, `HKD`, `HNL`, `HRK`, `HTG`, `HUF`, `IDR`, `ILS`, `IMP`, `INR`, `IQD`, `IRR`, `ISK`, `JEP`, `JMD`, `JOD`, `JPY`, `KES`, `KGS`, `KHR`, `KMF`, `KPW`, `KRW`, `KWD`, `KYD`, `KZT`, `LAK`, `LBP`, `LKR`, `LRD`, `LSL`, `LYD`, `MAD`, `MDL`, `MGA`, `MKD`, `MMK`, `MNT`, `MOP`, `MRU`, `MUR`, `MVR`, `MWK`, `MXN`, `MYR`, `MZN`, `NAD`, `NGN`, `NIO`, `NOK`, `NPR`, `NZD`, `OMR`, `PAB`, `PEN`, `PGK`, `PHP`, `PKR`, `PLN`, `PYG`, `QAR`, `RON`, `RSD`, `RUB`, `RWF`, `SAR`, `SBD`, `SCR`, `SDG`, `SEK`, `SGD`, `SHP`, `SLL`, `SOS`, `SRD`, `SSP`, `STD`, `STN`, `SVC`, `SYP`, `SZL`, `THB`, `TJS`, `TMT`, `TND`, `TOP`, `TRY`, `TTD`, `TWD`, `TZS`, `UAH`, `UGX`, `USD`, `UYU`, `UZS`, `VEF`, `VES`, `VND`, `VUV`, `WST`, `XAF`, `XAG`, `XAU`, `XCD`, `XDR`, `XOF`, `XPD`, `XPF`, `XPT`, `YER`, `ZAR`, `ZMW`, `ZWL`; ISO 4217 currency code
  - `latest_product_name`: string or null — Display name of the most recent non-sandbox subscription or one-time purchase product, or null if none.

### ListAudienceFilterOptions

- Used by `GET /projects/{project_id}/audiences/filter_options (200) — Get Audience filter options`

- `object` (required): string — one of `list`; String representing the object's type. Objects of the same type share the same value. Always has the value `list`.
- `items` (required): array of AudienceFilterFieldOptions — Details about each object.
  - `object` (required): string — one of `audience_filter_field_options`
  - `field` (required): string — The Audience rule condition field these options belong to
  - `options` (required): array of AudienceFilterOption — The known values for this field
    - `object` (required): string — one of `audience_filter_option`
    - `id` (required): string — The option value to use in an Audience rule condition
    - `display_name` (required): string — The display name of the option
  - `cardinality_exceeded`: boolean — Whether additional values exist beyond the stored custom-attribute options. Only present for custom-attribute fields.
- `next_page` (required): string or null — URL to access the next page. Filter options are not paginated, so this is always null.
- `url` (required): string — length 0–5000; The URL where this list can be accessed.
