Approve a held enrollment
Approves an enrollment a rule of engagement is holding for approval. Find held enrollments with List enrollments and pending_reason=approval; the rule that held one is in its approval field. Once approved, the enrollment becomes active and its first step is scheduled as if the contact had just been enrolled. If its sequence is off, the hold is cleared and the enrollment stays pending until the sequence is turned on.
user_id must be the sequence’s author, the team owner or a team admin, and the person who enrolled the contact cannot approve it unless they are the team owner or an admin. Otherwise the call returns 403. An enrollment that is not held returns 409 (This enrollment is not awaiting approval), so a second approval is refused rather than repeated. The decision, who made it and note are recorded in approval and as an approval_granted event. For many at once use Approve held enrollments in bulk. Counts toward the Sequencer writes rate limit.
How an enrollment comes to be held
An enrollment is held, inpending with pending_reason: "approval", when:
- a rule with the hold-for-approval action matched the contact at enrollment; or
- someone chose to add a contact a rule blocked. Through the API, that is listing them in
force_includeon Start an enrollment run.
approval field names the rule (rule_name) and why it fired (reason), and its timeline has an approval_requested event.
Clearing the queue
active and its first step is scheduled as if the contact had just been enrolled. If its sequence is off, the hold is cleared and the enrollment stays pending until the sequence is turned on.
Who can approve
user_id must be the sequence’s author, the team owner or a team admin. The person who enrolled the contact (the enrollment’s creator) cannot approve it unless they are the team owner or an admin. Anyone else gets 403.
An enrollment that is not held returns 409 This enrollment is not awaiting approval, so a second approval is refused rather than repeated. The decision, who made it and the note are recorded in the enrollment’s approval field and as an approval_granted event.
To decide on many at once, use Approve held enrollments in bulk. To refuse instead, reject it.Authorizations
Team-scoped API key generated in the Salesfinity dashboard under Settings → Connections → API & Webhooks. A missing or invalid key returns HTTP 403.
Headers
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
24-character enrollment id.
Body
The team member this call acts as. Must be an active member of the team the API key belongs to.
"507f1f77bcf86cd799439011"
Approve and reject record it on the approval decision and its timeline event. Resume, finish and retry accept it but do not store it.
1000Response
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.
24-character hexadecimal id.
"507f1f77bcf86cd799439011"
24-character hexadecimal id.
"507f1f77bcf86cd799439011"
24-character hexadecimal id.
"507f1f77bcf86cd799439011"
Owning team member. Their queue gets the tasks.
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.
pending, active, paused, finished, bounced, opted_out, failed Id of the step the enrollment is on: the next step to run, or the step whose task is open.
The order of current_step in the sequence.
When current_step is due to run. Null while the enrollment is pending, waiting on an open task, paused, or ended.
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.
approval, 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.
When a paused enrollment resumes itself. Absent when it waits for someone to resume it.
How the most recent reply was classified: interested, meeting_request, not_interested, out_of_office, wrong_person, unsubscribe_request, auto_reply or unknown.
When the enrollment was finished.
Opens recorded on this enrollment's emails.
Replies recorded from this contact.
When the contact was enrolled.
The team's id.
The team member who enrolled the contact: the user_id of the call that created the enrollment. Can differ from the owner.
When state last changed.
When the enrollment first became active. Absent until then.
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.
Why the enrollment failed, when state is failed. Cleared by a retry.
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.
When the most recent reply arrived.
Link clicks recorded on this enrollment's emails.
Emails confirmed delivered.
Bounces recorded.
Opt-outs recorded.
Errors on the current step so far. Reset to 0 by a retry.
When the enrollment last changed.