Skip to main content
POST
Stop many contacts

Authorizations

X-API-Key
string
header
required

Path Parameters

sequence_id
string<uuid>
required

Query Parameters

dry_run
boolean
default:false

Answer what the action would do, exactly as the real call answers it, and change nothing.

Body

application/json

Which contacts a bulk action on the Audience tab reaches.

Send ids for contacts picked one by one. Send all: true for every contact the filters below match (every contact, with none), less any excluded_ids, resolved on the server at the moment of the action so it covers every match across pages. A body that names nobody is refused.

all
boolean
default:false

Act on every contact the filters match, or every contact when there are none. Required when ids is absent.

created_from
string<date-time> | null

Only contacts added on or after this instant. The grid's date range, which an action on everything matching has to honour or it reaches past what the person was looking at.

created_to
string<date-time> | null
exclude
boolean
default:false

Read 'statuses' and 'stop_reasons' as 'everything but', matching the Contacts tab's one Include/Exclude toggle.

excluded_ids
string<uuid>[]

With all, contacts to leave out: the rows unticked after ticking the header.

Maximum array length: 1000
group
enum<string> | null

The Audience tab's tab the grid was showing. An action on everything matching reaches only the contacts under it, or Select all under one tab would act on everyone.

Available options:
in_progress,
needs_approval,
paused,
done,
blocked
ids
string<uuid>[] | null

The contacts to act on, by enrolment id.

Maximum array length: 1000
order_by
enum<string>
default:created_at

The order the grid was listing in. Under a 'group', the action judges the same contacts the tab's list judged in that order.

Available options:
created_at,
due_at,
status
order_direction
enum<string>
default:desc

The direction of order_by.

Available options:
asc,
desc
search
string | null
Maximum string length: 255
statuses
enum<string>[] | null

Where one contact stands in one sequence.

ACTIVE rows carry a due_at and are what the tick claims; CLAIMED is the in-flight guard between claim and outcome. PAUSED is a deliberate per-contact hold: unclaimable because the tick claims strictly on ACTIVE, yet still LIVE. It keeps its step and its one-live-sequence slot, and a compliance stop (reply, unsubscribe) reaches it. Everything else is settled: COMPLETED walked off the end; STOPPED was halted (reply, unsubscribe, bounce, manual, company pause); FAILED is terminal; SUPPRESSED was on the do-not-contact list; SKIPPED_DUPLICATE lost the one-live-sequence-per-contact rule, with the reason visible in the grid.

A contact the workspace's recontact rule refuses is STOPPED with StopReason.COOLDOWN. There is deliberately no held state: a cooldown settles a contact rather than parking them, so nothing here waits on a date and nothing lets itself out later.

AWAITING_ACTION is a contact parked behind a task that needs a person or a channel, modelled on PAUSED: live, keeps its step and its one-live-sequence slot, unclaimable because the tick claims strictly on ACTIVE, and a compliance stop reaches it. Unlike PAUSED nobody wakes it by hand: only the outreach-task sweep does, once the task it waits on is decided or delivered. Deliberately not "awaiting approval": an AUTO-mode LinkedIn park is waiting for a browser rather than for anyone's approval, and this value is the word the Contacts tab shows for both.

PENDING is a draft's roster: in, standing on a step, and NOT live. Binding an audience enrols on the spot so the Contacts tab can show who is in, but a sequence nobody has launched must not hold anybody's one-live-sequence slot, or a second sequence written for the same people skips them all. uq_sequence_enrolment_one_live leaves PENDING out, the tick never claims it, and launch turns each row ACTIVE, settling the ones another sequence took meanwhile as SKIPPED_DUPLICATE.

Available options:
pending,
active,
claimed,
paused,
awaiting_action,
completed,
stopped,
failed,
suppressed,
skipped_duplicate
stop_reasons
enum<string>[] | null
Available options:
reply,
unsubscribe,
bounce,
manual,
company_reply,
row_left_audience,
row_left_paused,
step_removed,
removed,
cooldown,
rejected,
mailbox_removed,
unread_reply,
declined,
trashed,
trashed_paused

Response

Successful Response

What one bulk action on contacts did.

updated
integer
required

How many contacts actually took the action. A selection is rarely uniform, so rows the action cannot apply to are skipped, not failed.

in_other_sequence
integer
default:0

Of the skipped, the contacts another live sequence has taken since: failed contacts a retry left failed, on the step that broke, for a retry once that sequence is done with them; and stopped contacts a resume marked skipped instead of putting back on the cadence.