Skip to main content
PATCH
JavaScript

Authorizations

Authorization
string
header
required

An Account API key, account-scoped JWT, App API key, or user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************.

Path Parameters

audience_id
string
required

Audience ID, prefixed adaud_.

Body

application/json
filters
object

Replaces the People filters that define membership. The whole definition is replaced rather than merged, so send every filter you want to keep — a filter you leave out stops applying. Keys and values are the ones GET /people accepts, such as an os of iOS or a country of US, and at least one filter is required. Date filters must be rolling windows — first_seen_within_days or last_seen_within_days — so the audience re-anchors every time it rebuilds; fixed dates such as first_seen_after are rejected, as is audience_id. An array value holds at most 500 items, and each value at most 10 KB. Only an audience with a source_type of people_filter and auto_refresh of true accepts filters: an uploaded list has no filters to replace, and with auto refresh off the audience keeps the people it matched when it was built, so create a new audience instead.

Example:
name
string

New audience display name. A blank value is ignored rather than clearing the name.

Example:

"Austin visitors, last 60 days"

Response

Audience updated.

audience_type
enum<string>
required

custom = a customer list (uploaded, or built from saved People filters); lookalike = Meta lookalike built from a custom audience.

Available options:
custom,
lookalike
Example:

"lookalike"

auto_refresh
boolean
required

Whether membership keeps updating. true rebuilds it from the saved filters twice a day, so people join and leave as they start and stop matching. false keeps whoever matched when it was built and never rebuilds. Always false for uploaded lists and lookalikes.

Example:

false

created_at
string
required

When the audience was created, as an ISO 8601 timestamp.

Example:

"2026-01-01T12:00:00.000Z"

error_message
string | null
required

Processing error message. null unless processing is partial or failed.

Example:

"412 of 1,000 rows had no email or phone number, so the list could not be matched."

filters
object | null
required

For audiences built from People filters: the filters that define membership, keyed exactly as GET /people accepts them — for example {"os": "iOS", "country": "US"}. null for uploaded lists and lookalikes.

Example:
id
string
required

Audience ID, prefixed adaud_.

Example:

"adaud_xxxxxxxxxxxxxx"

last_refreshed_at
string | null
required

When the audience membership was last rebuilt, as an ISO 8601 timestamp. null until the first build completes.

Example:

"2026-01-01T12:00:00.000Z"

lookalike_ratio
number | null
required

For lookalikes: the upper bound of the similarity band as a fraction (0.02 = top 2%). null for custom audiences.

Example:

0.04

lookalike_starting_ratio
number | null
required

For lookalikes: the lower bound of the similarity band as a fraction. null for custom audiences and first-tier lookalikes.

Example:

0.02

match_rates
object[]
required
matched_rows
number
required

Members successfully uploaded to connected ad accounts. Always 0 for lookalikes.

Example:

0

name
string
required

Audience display name.

Example:

"Past purchasers Lookalike 2–4%"

platform_audience_ids
string[]
required

External audience IDs created on connected ad platforms, such as Meta.

processed_rows
number
required

Members processed from the source so far. Always 0 for lookalikes.

Example:

0

progress_percent
number
required

Processing progress from 0 to 100.

Example:

0

source_audience_id
string | null
required

For lookalikes: the audience this lookalike was built from. null for custom audiences.

Example:

"adaud_xxxxxxxxxxxxxx"

source_type
enum<string>
required

Where members come from. csv_upload = an uploaded customer list; people_filter = built from saved People filters. See auto_refresh for whether a people_filter audience keeps updating.

Available options:
csv_upload,
people_filter
Example:

"csv_upload"

status
enum<string>
required

Current state of the audience import. syncing means Whop is sending matched rows to connected ad accounts. When status is partial or failed, error_message explains what went wrong.

Available options:
pending,
processing,
syncing,
ready,
partial,
failed
total_rows
number
required

Total members detected in the source — CSV rows for uploaded lists, matching people for automatic audiences. Always 0 for lookalikes.

Example:

0

updated_at
string
required

When the audience was last updated, as an ISO 8601 timestamp.

Example:

"2026-01-01T12:00:00.000Z"