Create Audience
POST/audiences
Create a new audience list with members in it
Creates a new Audience list containing customer's email addresses.
Use this endpoint to build a new customer's list and populate it with one or more email addresses in a single request. This helps you efficiently manage, segment, and organize your audience data within your account.
Use customAttributes on a member to set the custom attributes your account has defined, including array-type attributes.
Request
- application/json
Body
required
- Array [
- ]
members object[]
Possible values: [Subscribed, Unsubscribed, Bounced, Inactive, Spam]
This field will be returned if the customer is Unsubscribed. It will be in the ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ).
customAttributes object
Values for the custom attributes your account has defined, keyed by the attribute name exactly as you created it
— spaces and capitalisation included (Interests, not Interest_list or interests).
Send each value in the JSON type the attribute was defined with:
| Attribute type | Send | Example |
|---|---|---|
STRING | a string | "pro" |
INTEGER | a whole number | 12 |
DECIMAL | a number | 129.95 |
DATE | an ISO date or date-time | "2026-09-01" |
BOOLEAN | true / false | true |
ARRAY | a JSON array | ["cycling", "photography"] |
Prefer a real JSON array for an array attribute — that is the shape the segment builder matches against. A
bracketed string such as "[cycling, photography]" is also accepted, for parity with CSV import, and is stored as
a proper array.
Dates must be ISO (2026-09-01, or a full ISO date-time). 09/01/2026 is rejected rather than guessed at,
because it is a valid date under both MM/DD/YYYY and DD/MM/YYYY.
Sending null for an attribute removes it from the contact.
The request fails with 412 if it names an attribute your account has not defined, or if a value's type does not
match the definition; the error message names every offending attribute. Nothing is stored in that case, so a
2xx means every attribute in the payload was saved.
custom_attributes is accepted as an alias on the way in. Responses always use customAttributes.
Values for the custom attributes your account has defined, keyed by the attribute name exactly as you created it
— spaces and capitalisation included (Interests, not Interest_list or interests).
Send each value in the JSON type the attribute was defined with:
| Attribute type | Send | Example |
| --- | --- | --- |
| STRING | a string | "pro" |
| INTEGER | a whole number | 12 |
| DECIMAL | a number | 129.95 |
| DATE | an ISO date or date-time | "2026-09-01" |
| BOOLEAN | true / false | true |
| ARRAY | a JSON array | ["cycling", "photography"] |
Prefer a real JSON array for an array attribute — that is the shape the segment builder matches against. A
bracketed string such as "[cycling, photography]" is also accepted, for parity with CSV import, and is stored as
a proper array.
Dates must be ISO (2026-09-01, or a full ISO date-time). 09/01/2026 is rejected rather than guessed at,
because it is a valid date under both MM/DD/YYYY and DD/MM/YYYY.
Sending null for an attribute removes it from the contact.
The request fails with 412 if it names an attribute your account has not defined, or if a value's type does not
match the definition; the error message names every offending attribute. Nothing is stored in that case, so a
2xx means every attribute in the payload was saved.
custom_attributes is accepted as an alias on the way in. Responses always use customAttributes.
Responses
- 200
- 400
- 401
- 405
Successful operation
- application/json
- Schema
- Example (from schema)
Schema
{
"id": "00000000-0000-0000-0000-000000000000"
}
Bad Request
- application/json
- Schema
- Example (from schema)
Schema
{
"message": "Some error message"
}
API key is missing or invalid
Method Not Allowed