Read endpoints require
sequences:read. Enrolling, updating variables, pausing, resuming, and stopping require sequences:write.Enroll a contact
The most direct path isPOST /v1/sequences with the contact and template you want:
ACTIVE with at least one step. Topo rejects duplicate enrollments (same contact already running that template) and contacts on an exclusion list.
Before the sequence starts, Topo checks the contact’s eligibility, including an email verification when the address was never verified:
201— the check finished within about 20 seconds and the response is the new sequence resource.422— the contact cannot be enrolled: it has neither an email nor a LinkedIn URL, it is excluded, or it lacks a channel the template needs (no email, a bounced email, or no LinkedIn URL for LinkedIn steps) while the template stops on missing data or has no other channel left.202— the check is still running. The body carriesenrollment_run_id,contact_idandsequence_template_id. Topo enrolls the contact in the background; pollGET /v1/sequences?contact_id=<uuid>to see its sequence once it starts.
Enroll via contact lists
Alternatively, attach adefault_sequence_template_id to a contact list and add entries:
- Known contact —
POST /v1/contact-entriesreturnscontact_idimmediately; enrollment is queued in the same request when the list has an active default template, and the contact enters its sequence once its eligibility is checked. - New person —
contact_idisnulluntil lead-import finishes; enrollment runs after resolution when a default template is set.
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— optionalpaused_untilbodyPOST /v1/sequences/{sequence_id}/resumePOST /v1/sequences/{sequence_id}/stop—reason(WINorLOSE) andscope(CONTACTstops this run only,ACCOUNTalso stops sequences for other contacts of the same account)