Skip to main content

Endpoints

Contact lists group contacts into audiences for blasts and flows. A list is one of two kinds, chosen at creation:
kind is immutable. Creating a list requires an explicit choice between static and dynamic, and there is no way to convert one to the other later.
You may also see kind: "system" on lists auto-managed by the platform. System lists are read-only — editing or deleting one returns 403 with error_code: "system_list_protected".

List Contact Lists

Query Parameters

Lists created inline for a blast never appear here — they are private to that blast and reachable only by list_id.

List Request Example

List Response Example

member_count is a stored counter for static lists and null for dynamic lists — use the member-count endpoint for a live count of either kind.

Create a Contact List

Request Body

Returns 201 Created with the list object, or 409 Conflict with error_code: "contact_list_name_exists" when the name is taken.

Create Request Examples

A static list seeded with two members:
A dynamic list of qualified California leads:

Dynamic List Rules

Rules use the same segment rule tree as blast audiences: groups (and/or, nested up to 5 levels, at most 100 nodes) of conditions over contact fields, custom fields, activities, and static-list membership. Rule objects use camelCase keys, unlike the rest of the public API. See Audience Rules for the full condition reference, and call GET /v1/contact-fields/rule-metadata to discover the available fields and the operators each supports.
email_step conditions are not allowed in list rules, even though the contact search endpoint accepts them — they only work inside flow condition steps. Including one returns 400 Bad Request.

Get, Update, and Delete a List

GET returns the list object shown above. DELETE returns 204 No Content; the contacts themselves are not deleted.

Update Request Body

At least one field is required. kind cannot be changed. Sending rules for a static list returns 400 Bad Request. Returns 200 OK with the updated list object.

Update Request Example

List Members

Pages through the members of a static or dynamic list.

Query Parameters

Members Request Example

Members Response Example

member_added_at is null for dynamic-list members — dynamic membership is computed, not recorded.

Add and Remove Members

Static lists only — calling either endpoint on a dynamic list returns 400 Bad Request. Both take the same body: Adding returns 404 if the list or any referenced contact does not exist. Contacts already in the list are counted, not duplicated.

Add Members Request Example

Add Members Response Example

Removal responds with {"removed_count": 1}.

Member Counts

Computes live counts for any list kind — use this for dynamic lists, whose list object always has member_count: null.
blocked_count is the number of members currently blocked from marketing sends (unsubscribed contacts).

Export Members to CSV

Starting an export returns 202 Accepted with an export job. Poll the job until status is completed, then fetch the file from its presigned download_url:
status moves pendingprocessingcompleted, with failed as the error exit (see error_message). download_url is populated once the job completes and is signed with a limited lifetime — download promptly rather than storing the URL.

Common Request Errors

Back to API Overview

Review the full Tented API endpoint map.