Create audience

Create a new audience with the specified type and parameters.

Type-specific requirements:

  • intents: Requires filter with topic-based intent criteria.
  • elixir: Requires filter with Elixir dataset criteria.
  • list: Requires source_list_id and source_list_mode instead of filter. The audience population comes directly from an uploaded list. Setting source_list_id is what makes the server treat the audience as type list. Availability: rolling out. You can create a list audience today, but build output is not yet available for this type.
Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
string
required

Audience name.

string

Description of the audience.

string
enum
required

Audience type. Setting source_list_id treats the audience as type list regardless of the value sent here. See source_list_id, source_list_mode, and source_list_path below for list-sourced audiences.

Allowed:
string
enum
required

Segmentation type.

Allowed:
uuid
required

Organization ID.

uuid
required

Project ID.

filter
object
required

A group of filter rules joined by a logical operator. Groups can be nested
to create complex expressions (e.g., AND of ORs).

uuid

ID of an uploaded list to use as the audience population, instead of building the population from filter. Required when creating a list audience; setting this field is what makes the server treat the audience as type list. See the Lists & Campaigns reference for how to create and upload a list.

Availability: rolling out. list audiences can be created, but build output is not yet available for this type.

string
enum

How to build the audience population from the list referenced by source_list_id. Required when source_list_id is set.

  • values: use the list's raw values as-is, including any values that are not found in our contact database.
  • matched: match each list value against our contact database and expand matched people to their full set of hashed emails and other identifiers. Every list value is kept in the audience; unmatched values are never dropped.
Allowed:
string

The materialized data file path for the list referenced by source_list_id, supplied by the list itself (see file_path on the list object in the Lists & Campaigns reference). Pass through the value provided by the list rather than constructing it yourself.

string

Column projection for the unload output, applied as a SQL SELECT clause. Defaults to *, which emits the full field-catalog schema (contact and firmographic fields alongside hem, profile_pid_all, perc_score, and ts). Set a comma-separated column list to narrow the output, for example hem,linkedin_url,current_business_email.

string
enum

preview to get a size estimate, unload to write output files. Defaults to preview.

This matters if you intend to download the audience. A preview audience is built count-only, so the first download has to rebuild it at full width before it can serve data. Passing unload at create time builds it once, correctly, and avoids that second build.

There is no unload field on the update endpoint, so switching an existing preview audience to unload means creating a new audience.

Allowed:
string
enum

Schedule for automatic refresh.

  • daily: refreshes every day at 09:00 UTC.
  • weekly: refreshes every Saturday at 18:00 UTC (weekend afternoon UTC, so the weekly batch doesn't compete with daily intent refreshes at 09:00 UTC).
  • manual: no automatic refresh; the audience only refreshes when a caller hits POST /audiences/{id}/refresh or re-runs an unload manually.

When omitted, the default depends on type:

  • intents: defaults to daily (intent data is produced fresh every day).
  • elixir: defaults to weekly (Elixir source data refreshes weekly/monthly; daily renewal would re-run unloads against unchanged data).

Customers who really want daily refresh on an elixir audience can opt in by passing daily explicitly.

Allowed:
string
enum

What one output row should represent. Only applicable to intents audiences.

  • person_topic: one row per person per topic, keeping every topic a person matched.
  • person: one row per person, keeping their highest-scoring topic only.

When omitted, the grain is derived from the date range for backwards compatibility: a 1-day window or a pinned range yields person_topic, a multi-day window yields person. That derivation is why widening a window used to change the row shape. Set this explicitly if the shape matters to you, and read row_grain on the audience to confirm what you got.

Allowed:
string

Start of a fixed historical date range to build over (YYYYMMDD, inclusive).

Must be supplied together with intent_end_date, cannot be combined with intent_window_days, and the range may span at most 14 days. Every day in the range must have intent data available: a partially available range is rejected and the response names the missing days, rather than quietly building over the days that happen to be present.

Use this to backfill specific past days. intent_window_days is always relative to the most recent day of intent data we hold, so it cannot reach a particular date, and narrowing it to 1 still returns the latest day rather than the day you are missing.

string

End of the fixed historical date range (YYYYMMDD, inclusive). Required when intent_start_date is set. See intent_start_date.

integer
1 to 14

Number of recent days of intent data to include (1-14). Only applicable to intents audiences. Default: 1. Cannot be combined with intent_start_date/intent_end_date.

Note this also determines the default row_grain when that field is omitted, so changing the window changes the row shape unless you set row_grain explicitly.

string

Initial status.

Responses

401

Missing or invalid authentication.

403

Forbidden.

500

Internal server error.

Language
Credentials
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json