Read-only endpoints require the
tasks:read scope. Mutation endpoints (skip, reopen, reassign) require tasks:write.The task object
Unique identifier for the task.
The workspace this task belongs to.
What kind of action this task represents. See Task types below.
Priority bucket for this task. One of:
HOT, TODAY, EXTRA. Topo sets this automatically based on engagement signals.Current lifecycle state. See Task statuses below.
The sequence run this task was created from.
The workspace user the task is currently assigned to.
null if the task is unassigned.For
CALL tasks only — the outcome recorded when the call was executed. One of: ANSWERED, VOICEMAIL_LEFT, NO_ANSWER. null for non-call tasks or tasks not yet completed.When the task was most recently reopened, if applicable.
Why the task was reopened. Currently the only possible value is
REMINDER_RULE (triggered automatically by a configured reminder rule).When the task was skipped, if applicable.
When the task was completed, if applicable.
When the task was created.
When the task was last modified.
Task types
| Type | Description |
|---|---|
CALL | Place a phone call to the contact. |
EMAIL_REPLY | Send or review an email reply in an active email thread. |
LINKEDIN_REPLY | Reply to a LinkedIn conversation with the contact. |
NEW_LEAD_REVIEW | Review and approve or reject a new lead before outreach begins. |
Task statuses
| Status | Description |
|---|---|
PENDING | The task is open and waiting for action. |
IN_PROGRESS | The task has been opened by an assignee and is actively being worked. |
COMPLETED | The task has been carried out and marked as done. |
SKIPPED | The task was deliberately skipped without execution. |
The message object
Messages are returned by the List task messages endpoint. Each message represents a real email or LinkedIn message exchanged in the contact thread associated with the task’s sequence.Unique identifier for the message.
The channel the message was sent on. One of:
EMAIL, LINKEDIN, MANUAL, CALENDAR.INBOUND for messages received from the contact; OUTBOUND for messages sent by your team.The email subject line.
null for non-email channels.The message body text. Quoted reply history is stripped from inbound messages to give you only the new content.
When the message was sent (outbound) or received (inbound).
The workspace user who sent an outbound message.
null for inbound messages from the contact.List tasks
Requires scope:
tasks:readQuery parameters
Filter by lifecycle state. One of:
PENDING, IN_PROGRESS, COMPLETED, SKIPPED.Return only tasks assigned to this user.
Return only tasks from this specific sequence run.
Filter by one or more sequence templates. Repeat the parameter to pass multiple values:
?sequence_template_ids=uuid1&sequence_template_ids=uuid2.Filter by task type. Repeat the parameter to pass multiple values:
?types=CALL&types=EMAIL_REPLY. Valid values: CALL, EMAIL_REPLY, LINKEDIN_REPLY, NEW_LEAD_REVIEW.Filter by priority bucket. Repeat the parameter to pass multiple values:
?priorities=HOT&priorities=TODAY. Valid values: HOT, TODAY, EXTRA.Return tasks created strictly after this timestamp.
Return tasks created strictly before this timestamp.
Field to sort results by. One of:
created_at, updated_at. Defaults to created_at.Sort direction.
asc or desc. Defaults to asc.Page number (1-indexed). Defaults to
1.Number of items per page. Between
1 and 100. Defaults to 10.Response
Array of task objects on this page.
Total number of tasks matching the query across all pages.
Total number of pages at the current
size.true if additional pages exist after the current one.Example — list pending call tasks for a rep
Get a task
Requires scope:
tasks:readPath parameters
The ID of the task to retrieve.
Example
List task messages
Requires scope:
tasks:readPath parameters
The ID of the task whose thread messages you want to retrieve.
Response
Returns an array of message objects. Messages are not paginated — the full thread is returned in a single response.Example
Skip a task
Requires scope:
tasks:writePENDING or IN_PROGRESS), marking it as SKIPPED without recording a completion. The sequence continues to its next step. Use this when the action is no longer relevant — for example, the contact has already called you back and a follow-up call task is no longer needed.
Path parameters
The ID of the task to skip.
Example
Reopen a task
Requires scope:
tasks:writeCOMPLETED or SKIPPED, returning it to PENDING so it can be actioned again. This is useful when a reminder rule fires, or when a rep needs to reattempt a call after a failed attempt.
Path parameters
The ID of the task to reopen.
Example
Reassign a task
Requires scope:
tasks:writescope field to reassign just this single task, or to reassign all pending tasks in the same sequence to the new user in one call — useful when a rep leaves and their workload needs to be redistributed.
Path parameters
The ID of the task to reassign.
Request body
The ID of the workspace user to assign the task to.
Controls how many tasks are reassigned. Defaults to
TASK.TASK— reassign only this specific task.SEQUENCE— reassign this task and all other pending tasks belonging to the same sequence run.
Example — reassign all tasks in a sequence to a new rep
When
scope is SEQUENCE, only tasks in PENDING or IN_PROGRESS status are reassigned. Already-completed and skipped tasks are not affected.