Skip to main content
POST
Un-enroll a contact
Removes a contact from a sequence by finishing their enrollment. There is no DELETE. An enrollment is a record of what happened, so it is finished rather than destroyed, and its timeline survives. What happens at once:
  • The enrollment becomes finished, and nothing more is sent.
  • Its open tasks are cancelled, and the contact comes off the owner’s dial queue.
  • The contact can be enrolled in the same sequence again later.
Finishing an enrollment that has already ended changes nothing and returns it as it is, so a retry is safe. Any active member of the team can finish any of its enrollments. note is accepted but not stored.

Finish, reject or pause

Authorizations

x-api-key
string
header
required

Team-scoped API key generated in the Salesfinity dashboard under Settings → Connections → API & Webhooks. A missing or invalid key returns HTTP 403.

Headers

Idempotency-Key
string

Makes this write safe to retry. Send a unique value, such as a UUID, and send the same value again when you retry the same request. A retry with the same key and the same request (method, path including the query string, and JSON body) returns the original successful response without acting twice. The same key with a different body or path returns 409, and so does a retry while the first request is still running; that one is safe to repeat after a moment. A request that fails frees its key, so a retry runs the write again: after a 5xx on a create, confirm with a GET before retrying. Keys are kept for 24 hours and are scoped to your team.

Path Parameters

id
string
required

24-character enrollment id.

Body

application/json
user_id
string
required

The team member this call acts as. Must be an active member of the team the API key belongs to.

Example:

"507f1f77bcf86cd799439011"

note
string

Approve and reject record it on the approval decision and its timeline event. Resume, finish and retry accept it but do not store it.

Maximum string length: 1000

Response

The enrollment as it is after the call.

One contact's position in one sequence. A response can also carry internal bookkeeping fields not listed here; do not rely on them.

_id
string

24-character hexadecimal id.

Example:

"507f1f77bcf86cd799439011"

sequence
string

24-character hexadecimal id.

Example:

"507f1f77bcf86cd799439011"

contact
string

24-character hexadecimal id.

Example:

"507f1f77bcf86cd799439011"

user
string

Owning team member. Their queue gets the tasks.

state
enum<string>

pending: enrolled but not started, either held for approval or waiting for the sequence to be turned on. active: working through the steps. paused: stopped until resumed. finished, bounced, opted_out and failed are terminal.

Available options:
pending,
active,
paused,
finished,
bounced,
opted_out,
failed
current_step
string | null

Id of the step the enrollment is on: the next step to run, or the step whose task is open.

current_step_order
integer | null

The order of current_step in the sequence.

next_step_due_at
string<date-time> | null

When current_step is due to run. Null while the enrollment is pending, waiting on an open task, paused, or ended.

pending_reason
enum<string> | null

approval while a rule of engagement is holding the enrollment for a manager. Absent on a pending enrollment that is only waiting for its sequence to be turned on.

Available options:
approval,
null
pause_reason
string | null

Why it is paused: the pause_reason sent to Pause an enrollment, or one Salesfinity set, such as sequence_disabled, replied, out_of_office, policy, outcome_rule, account_action, schedule_closed or transient_error.

resume_at
string<date-time> | null

When a paused enrollment resumes itself. Absent when it waits for someone to resume it.

last_reply_category
string | null

How the most recent reply was classified: interested, meeting_request, not_interested, out_of_office, wrong_person, unsubscribe_request, auto_reply or unknown.

replied_at
string<date-time> | null
finished_at
string<date-time> | null

When the enrollment was finished.

open_count
integer

Opens recorded on this enrollment's emails.

reply_count
integer

Replies recorded from this contact.

created_at
string<date-time>

When the contact was enrolled.

team
string

The team's id.

creator
string

The team member who enrolled the contact: the user_id of the call that created the enrollment. Can differ from the owner.

state_changed_at
string<date-time>

When state last changed.

active_at
string<date-time>

When the enrollment first became active. Absent until then.

approval
object | null

The approval hold, when a rule held this enrollment: which rule and why and, once decided, who decided, when, the decision and the note. Null if no rule ever held it.

error_reason
string | null

Why the enrollment failed, when state is failed. Cleared by a retry.

enrollment_source
object | null

Set when Salesfinity created the enrollment itself, for example from a follow-up rule. Null when a person or an API call enrolled the contact.

last_reply_at
string<date-time>

When the most recent reply arrived.

click_count
integer

Link clicks recorded on this enrollment's emails.

deliver_count
integer

Emails confirmed delivered.

bounce_count
integer

Bounces recorded.

opt_out_count
integer

Opt-outs recorded.

failure_count
integer

Errors on the current step so far. Reset to 0 by a retry.

updated_at
string<date-time>

When the enrollment last changed.