Skip to main content
GET
Get an enrollment run
Returns a run’s progress and outcome. Poll it after starting a run.

Status

Poll every few seconds while the status is queued, fetching or running. The counters update every five people or two seconds.

Reading the counters

  • total counts everyone the source yielded, including rows that could not be attempted: no email or LinkedIn handle, or past the 5,000 cap. Those count as processed and skipped from the start, so processed can begin above zero.
  • enrolled includes people a rule is holding for approval. held_count says how many of them there are.
  • skipped_count counts everyone not enrolled. sample_skipped shows up to 50 of them with the reason.
  • truncated is true when the source had more than 5,000 usable people, of which only the first 5,000 were considered.
For every refusal with its reason, read the sequence’s refusals list. Rows that could not be attempted are counted here but are not on that list. A run whose worker restarted part-way ends failed, with an error saying to run it again for the rest. Starting a new run with the same source is safe: people already enrolled are skipped as already enrolled. Runs are deleted 7 days after they finish. After that, this returns 404.

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.

Path Parameters

run_id
string
required

The run id returned when the run was started: enroll_ followed by 24 hexadecimal characters.

Response

The run.

A background enrollment run. Deleted 7 days after it finishes.

run_id
string

enroll_ followed by 24 hexadecimal characters.

Example:

"enroll_9c1f4e2a7b3d5c6e8f0a1b2c"

status
enum<string>

queued: waiting for a worker. fetching: reading the source; total is not known yet. running: enrolling. completed, failed and cancelled are final.

Available options:
queued,
fetching,
running,
completed,
failed,
cancelled
sequence
string

24-character hexadecimal id.

Example:

"507f1f77bcf86cd799439011"

total
integer

Everyone the source yielded, including rows that cannot be attempted. 0 until the source has been read.

processed
integer

How many of total have been dealt with, enrolled or skipped. Progress is processed out of total.

enrolled
integer

People enrolled, including those held for approval.

skipped_count
integer

People not enrolled: refused by a check, or not attemptable (no email or LinkedIn handle, or past the 5,000 cap).

held_count
integer

Enrolled people a rule is holding for approval. Part of enrolled.

truncated
boolean

The source had more than 5,000 usable people; only the first 5,000 were considered.

sample_skipped
object[]

Up to 50 skipped people, each with the reason. Every refusal is also on the sequence's refusals list, except rows that could not be attempted.

error
string | null

Why the run failed or stopped early. Absent otherwise.

finished_at
string<date-time> | null

When the run reached a final status. Absent while it is in progress.

source
object

What the run was pointed at. A run started from a preview keeps the preview's source and adds preview_id. Runs started in the Salesfinity app from a connected CRM have kind crm and also carry provider, scope and list_id.

cancel_requested
boolean

A cancel has been asked for. The run stops at its next check, and status changes when it does.

created_at
string<date-time>

When the run was started.