Skip to main content
PATCH
Remap the audience columns without rebinding the table

Authorizations

X-API-Key
string
header
required

Path Parameters

sequence_id
string<uuid>
required

Body

application/json
mapping
ColumnMappingSchema · object
required

Which audience columns carry a meaning, all detected from the table.

One field per channel (email, LinkedIn) plus the company domain the coverage line reports on. Leave the whole object out when binding an audience and the columns are detected server-side. Send it only to correct a detection: a first name, a company or a last-contacted date is no longer part of this, because every column on the table is already addressable as a {{Column name}} variable.

Response

Successful Response

audience_table_id
string<uuid> | null
required
audience_view_id
string<uuid> | null
required
column_mapping
ColumnMappingSchema · object
required

Which audience columns carry a meaning, all detected from the table.

One field per channel (email, LinkedIn) plus the company domain the coverage line reports on. Leave the whole object out when binding an audience and the columns are detected server-side. Send it only to correct a detection: a first name, a company or a last-contacted date is no longer part of this, because every column on the table is already addressable as a {{Column name}} variable.

created_at
string<date-time>
required
edges
SequenceEdgeSchema · object[]
required
id
string<uuid>
required
launched_at
string<date-time> | null
required
multithreading
Multithreading · object | null
required
name
string
required
pause_reason
string | null
required
sending_window
Sending Window · object | null
required
status
enum<string>
required

Lifecycle of a sequence.

DRAFT until launch; RUNNING sequences are locked against structural edits (pause → edit → resume); PAUSED stops scheduling while leaving every enrolment exactly where it is; COMPLETED is terminal.

Available options:
draft,
running,
paused,
completed
status_column_id
string<uuid> | null
required
step_count
integer
required
steps
SequenceStepSchema · object[]
required
updated_at
string<date-time>
required
audience_table_name
string | null

List reads only: the name of audience_table_id's table, which a sequence in Trash keeps its status and messages columns on. Null when it has none, or the table is in Trash too.

bcc_addresses
string[]

Blind copies on every email this sequence sends.

cc_addresses
string[]

Addresses copied on every email this sequence sends.

connection_requests_sent
integer | null
connections_accepted
integer | null

Connection requests from this sequence confirmed accepted. With connection_requests_sent this yields the acceptance rate.

contacts_added
integer | null

Rollup, list reads only. None when the list's stats have never been built and could not be built on this request (for example, another request was building them). Show a zero state, not a fake 0.

contacts_blocked
integer | null

Rollup, list reads only: the contacts under the Audience tab's Blocked tab (failed, bounced, in cooldown, mailbox removed, do not contact, in another sequence). Unreachable contacts count under In progress here; the Audience tab counts them under Blocked, because reachability is judged from the row as it reads now.

contacts_done
integer | null

Rollup, list reads only: the contacts under the Audience tab's Done tab (finished, replied, unsubscribed, stopped, removed and the like).

contacts_failed
integer | null
deprecated

Deprecated, kept for API clients: every contact whose step failed (rollup, list reads only). Read contacts_blocked, which counts them with everyone else the Audience tab files under Blocked.

contacts_finished
integer | null
deprecated

Deprecated, kept for API clients: every contact who completed the cadence or stopped for any reason (rollup, list reads only). Read contacts_done and contacts_blocked, which split them as the Audience tab does.

contacts_in_progress
integer | null

Rollup, list reads only: the contacts under the Audience tab's In progress, Needs approval and Paused tabs together. On a draft these are its contacts who start when it launches, which the list calls Not started. Unreachable contacts count under In progress here; the Audience tab counts them under Blocked, because reachability is judged from the row as it reads now. Since 2026-10-19 it also counts Needs approval and Paused contacts and a draft's waiting contacts; it counted only contacts moving before. None when the stats have not been built in this shape yet.

contacts_not_started
integer | null
deprecated

Deprecated, kept for API clients: a draft's contacts, who start when it launches (rollup, list reads only). Read contacts_in_progress, which on a draft counts the same contacts the list calls Not started.

continuous_enrolment
boolean
default:false

TRUE keeps the audience live: rows added to the table later enrol on their own, and rows that leave it stop. FALSE (the default for a new sequence) freezes the audience after launch; rows can still be added to it by hand, through the add-to-sequence route.

deleted_at
string<date-time> | null

When it went to Trash; null for a live sequence. Trash deletes it for good 30 days after. A launched one went paused and comes back paused; a draft comes back a draft.

email_approval_mode
string | null

manual requires approval; confident adds approval for uncertain AI-written emails; null follows the sender. There is no value meaning 'send automatically': a sequence can only add an approval.

emails_sent
integer | null
hold
SequenceListHoldSchema · object | null

List reads only, read live on every request (never from the cached stats): on a running sequence nobody on which can move, the worst reason holding them (as GET /sequences/{id}/holds/ names it). Null while anybody moves and on any other status.

is_favorite
boolean
default:false

List reads only: whether the person asking starred the sequence. Their own, never a teammate's; always false for an API key.

last_synced_at
string<date-time> | null

When the audience-enrolment diff last completed. None until the first sync (launch runs one inline). The Audience tab shows this plus a manual trigger, never a background job the user cannot see.

last_viewed_at
string<date-time> | null

List reads only: when the person asking last opened the sequence; null when they never have, and for an API key.

linkedin_approval_mode
string | null

manual requires approval; confident adds approval for uncertain AI-written LinkedIn steps; null follows the sender. There is no value meaning 'send automatically': a sequence can only add an approval.

linkedin_check_max_seconds
integer | null
deprecated

Retired. Acceptance checks now use the service-managed interval.

linkedin_check_min_seconds
integer | null
deprecated

Retired. Acceptance checks now use the service-managed interval.

linkedin_messages_sent
integer | null
opportunity_values
Opportunity Values · object | null

Dollars per outcome label; None = tracking off.

outbound_agent_id
string<uuid> | null

The sequence's outbound agent: the writer of every agent-written step and of its replies. Read and configure it under /outbound-agents/{id}/.

plain_text_only
boolean
default:true

TRUE (recommended) sends no formatting: the bold, italic and link marks are stripped and the email reads as plain text; FALSE renders them. Either way the email carries an HTML part laid out line for line, which keeps its spacing exactly, beside a matching text part.

positive
integer | null

Threads labelled positive (rollup, list reads only).

positive_rate
number | null
replies
integer | null

Distinct contacts who replied: reply_rate's numerator.

reply_rate
number | null
sender_profile_ids
string<uuid>[]

Only meaningful on list reads: the sequence's senders by id, in the same order as sender_profile_names.

sender_profile_names
string[]

Only meaningful on list reads: the names of the sequence's senders.

senders_ready
boolean
default:true

Only meaningful on list reads: False when the sequence has senders but none currently has a connected mailbox.

sending_priority
string
default:new_contacts

Who gets scarce capacity first: new_contacts or follow_ups.

sending_window_problem
SendingWindowProblemSchema · object | null

Set when the saved sending_window breaks a rule a save now refuses, which only a window saved before those rules can. It still sends on it as stored: an unknown timezone is read as UTC, and no open day sends at any hour. Fix it by saving a valid sending_window.

spending_limit_tenths
integer | null