Skip to main content
A sequence is a live outreach run for a single contact enrolled in a sequence template. It executes each configured step — emails, LinkedIn messages, manual tasks — according to the template’s schedule and tracks the contact’s current position and state.
Read endpoints require sequences:read. Enrolling, updating variables, pausing, resuming, and stopping require sequences:write.

Enroll a contact

The most direct path is POST /v1/sequences with the contact and template you want:
The template must be ACTIVE with at least one step. Topo rejects duplicate enrollments (same contact already running that template) and contacts on an exclusion list. The response is 201 with the new sequence resource.

Enroll via contact lists

Alternatively, attach a default_sequence_template_id to a contact list and add entries:
  1. Known contactPOST /v1/contact-entries returns contact_id immediately; enrollment starts in the same request when the list has an active default template.
  2. New personcontact_id is null until lead-import finishes; enrollment runs after resolution when a default template is set.
Verify enrollment with GET /v1/sequences?contact_id=<uuid> — filter by the contact you enrolled.

List and inspect sequences

GET /v1/sequences supports filters including contact_id, sequence_template_id, status, and created_at_before / created_at_after. GET /v1/sequences/{sequence_id} returns a single run. PATCH /v1/sequences/{sequence_id} merges per-run variables into the sequence. Action endpoints:
  • POST /v1/sequences/{sequence_id}/pause — optional paused_until body
  • POST /v1/sequences/{sequence_id}/resume
  • POST /v1/sequences/{sequence_id}/stopreason (WIN or LOSE) and scope (CONTACT stops this run only, ACCOUNT also stops sequences for other contacts of the same account)

Sequence statuses

Terminal states (SUCCEEDED, COMPLETED, FAILED, STOPPED_EARLY) cannot be resumed.