Follow-ups
List follow-up tasks
Return scheduled follow-ups with their due dates and customers.
Returns follow-up tasks with the customer, the channel, when they are due, who owns them and any auto-message. Use it to find what is due today (bucket=today), what is late (bucket=overdue), or everything outstanding for one customer. status is one of PENDING, DONE, CANCELLED or SNOOZED (there is no COMPLETED status; finished tasks are DONE, and bucket=completed lists them). Read-only. Paginated: follow meta.pagination.nextCursor until hasMore is false. branchId filters the exact current conversation branch before pagination; none includes tasks without a complete branch context.
query Parameters
limitRows to return, 1-100. Defaults to 25.
Rows to return, 1-100. Defaults to 25.
cursorThe meta.pagination.nextCursor value from the previous call. Omit it to read the first page.
The meta.pagination.nextCursor value from the previous call. Omit it to read the first page.
branchIdCurrent conversation branch id, or none for no branch or incomplete conversation context. Inactive branches are allowed; unknown or foreign ids return an empty list.
Current conversation branch id, or none for no branch or incomplete conversation context. Inactive branches are allowed; unknown or foreign ids return an empty list.
statusFilter by status: PENDING, DONE, CANCELLED or SNOOZED.
Filter by status: PENDING, DONE, CANCELLED or SNOOZED.
bucketDue-date bucket: today, overdue, upcoming (after today) or completed (status DONE).
Due-date bucket: today, overdue, upcoming (after today) or completed (status DONE).
priorityOnly this priority.
Only this priority.
customerIdOnly this customer, id from customers.list.
Only this customer, id from customers.list.
assigneeOwner filter: "me" (the account owner), "unassigned", or a user id from assignments.assignableUsers.
Owner filter: "me" (the account owner), "unassigned", or a user id from assignments.assignableUsers.
fromOnly tasks due at or after this ISO-8601 time.
Only tasks due at or after this ISO-8601 time.
toOnly tasks due at or before this ISO-8601 time.
Only tasks due at or before this ISO-8601 time.
searchCase-insensitive text matched against the task title and the customer name.
Case-insensitive text matched against the task title and the customer name.
List follow-up tasks › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successSchedule a follow-up
Create a follow-up task against a customer for a future date.
Schedules a task to contact a customer later. Use it when a customer asks to be reached at another time. Writes a task and sends nothing now. Passing autoMessage schedules a real message to the customer: it goes out by itself at autoMessage.sendAt and is not recalled once sent, so write the text as if you were sending it now. Cancel it with followUps.cancelAutoMessage before sendAt. Without autoMessage nothing is sent to the customer, although a workspace follow-up rule may still act on the task. Link it to a conversation with channelType, channelAccountId and conversationId (see followUps.channels); when autoMessage is used on WhatsApp the link is derived from the customer.
Schedule a follow-up › Request Body
customerIdCustomer id from customers.list.
dueAtISO-8601 time the follow-up becomes due.
titleShort label for the task, max 160 characters. Defaults to the note when omitted.
noteWhat to do when it comes due.
priorityPriority: LOW, MEDIUM or HIGH. Defaults to MEDIUM when omitted on create.
assignedToIdAgent to assign it to, id from assignments.assignableUsers.
channelTypeChannel the follow-up belongs to, from followUps.channels (WHATSAPP or INSTAGRAM).
channelAccountIdChannel account id, from followUps.channels.
conversationIdConversation id to link the task to, from followUps.channels.
inboundMessageIdThe customer message that prompted this follow-up, for traceability.
workflowExecutionIdAI workflow execution that prompted this follow-up, for traceability.
Optional automatic customer message sent when sendAt arrives. This SENDS a real message to the customer.
Schedule a follow-up › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead one follow-up
Fetch a single follow-up with its customer, owner and auto-message state.
Returns one follow-up task including the customer, the assignee and the auto-message (status DRAFT, SCHEDULED, QUEUED, SENT, FAILED or CANCELLED) when one is attached. Use it before editing, snoozing or retrying a task. Read-only.
path Parameters
idFollow-up id from followUps.list.
Follow-up id from followUps.list.
Read one follow-up › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successEdit a follow-up
Change the title, note, due time, priority, owner or auto-message of a follow-up.
Updates the fields you send and leaves the rest. A DONE or CANCELLED task cannot be edited. Use autoMessage to add or rewrite a scheduled message; autoMessage.enabled=false cancels one that has not been sent, and one already queued or sent cannot be changed. Passing autoMessage schedules a real message to the customer: it goes out by itself at autoMessage.sendAt and is not recalled once sent, so write the text as if you were sending it now. Cancel it with followUps.cancelAutoMessage before sendAt.
path Parameters
idFollow-up id from followUps.list.
Follow-up id from followUps.list.
Edit a follow-up › Request Body optional
titleNew title, max 160 characters.
noteNew note.
dueAtNew ISO-8601 due time.
priorityPriority: LOW, MEDIUM or HIGH. Defaults to MEDIUM when omitted on create.
assignedToIdNew owner, id from assignments.assignableUsers.
Optional automatic customer message sent when sendAt arrives. This SENDS a real message to the customer.
Edit a follow-up › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList channels for a follow-up
Return the WhatsApp and Instagram channels a customer can be followed up on.
Returns the channel accounts and conversation ids this customer has (WhatsApp and Instagram only), as channelType / channelAccountId / conversationId triples. Use it to fill the linkage fields of followUps.create. Telegram conversation ids are not listed. Read-only.
path Parameters
customerIdCustomer id from customers.list.
Customer id from customers.list.
List channels for a follow-up › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successComplete a follow-up
Mark a follow-up done so it stops showing as due.
Marks the task complete. Use it after the customer has actually been contacted. Writes the status change and sends nothing. It does not cancel a pending auto-message — use followUps.cancel for that.
path Parameters
idFollow-up id from followUps.list.
Follow-up id from followUps.list.
Complete a follow-up › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successCancel a follow-up
Cancel a follow-up and any auto-message queued behind it.
Cancels the task and stops any automated message scheduled to fire with it. Use it when the reason for the follow-up has gone away, so the customer is not contacted for nothing. Writes the status change and sends nothing.
path Parameters
idFollow-up id from followUps.list.
Follow-up id from followUps.list.
Cancel a follow-up › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successSnooze a follow-up
Push a follow-up to a later time and mark it SNOOZED.
Moves dueAt to snoozedUntil, sets the status to SNOOZED and clears the reminder flag so it fires again. snoozedUntil must be in the future. A DONE or CANCELLED task cannot be snoozed. Writes only; it does not move an attached auto-message sendAt, so edit that with followUps.update if the message should move too.
path Parameters
idFollow-up id from followUps.list.
Follow-up id from followUps.list.
Snooze a follow-up › Request Body
snoozedUntilISO-8601 time, in the future, to bring it back.
Snooze a follow-up › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successCancel a scheduled auto-message
Stop the automatic customer message on a follow-up but keep the task.
Cancels the auto-message attached to a follow-up and turns the task into a reminder only. Use it when the customer should no longer be messaged automatically. An auto-message that is already QUEUED or SENT cannot be cancelled. Writes only; nothing is sent. To drop the whole task use followUps.cancel.
path Parameters
idFollow-up id from followUps.list.
Follow-up id from followUps.list.
Cancel a scheduled auto-message › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRetry a failed auto-message
Re-queue a FAILED auto-message so the customer is messaged again.
Puts a FAILED auto-message back to SCHEDULED so the worker sends it to the customer. A message that reaches the customer cannot be recalled, and a retry after a partial failure can reach someone who already saw it, so read the task with followUps.get and confirm the text and lastError first. Only FAILED auto-messages can be retried. Limited to 5 calls per minute.
path Parameters
idFollow-up id from followUps.list.
Follow-up id from followUps.list.
Retry a failed auto-message › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList follow-up rules
Return the workspace automation rules that create follow-ups.
Returns the rules that create follow-up tasks (and optionally customer messages) automatically, with whether each one is active. Use it to see which automations exist before toggling one. Rule bodies include sorted branchIds (empty means all branches) and the configured message text. Read-only. Creating, editing and deleting rules is not available through the Public API. Paginated: follow meta.pagination.nextCursor until hasMore is false.
query Parameters
limitRows to return, 1-100. Defaults to 25.
Rows to return, 1-100. Defaults to 25.
cursorThe meta.pagination.nextCursor value from the previous call. Omit it to read the first page.
The meta.pagination.nextCursor value from the previous call. Omit it to read the first page.
List follow-up rules › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead a rule execution history
Return the times a follow-up rule fired, newest first.
Returns each time the rule ran: the customer it matched and the follow-up it created. Use it to check whether a rule is doing what the workspace expects. Read-only. Paginated: follow meta.pagination.nextCursor until hasMore is false.
path Parameters
idRule id from followUpRules.list.
Rule id from followUpRules.list.
query Parameters
limitRows to return, 1-100. Defaults to 25.
Rows to return, 1-100. Defaults to 25.
cursorThe meta.pagination.nextCursor value from the previous call. Omit it to read the first page.
The meta.pagination.nextCursor value from the previous call. Omit it to read the first page.
Read a rule execution history › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successSwitch a follow-up rule on or off
Flip a rule between active and inactive.
Flips the rule: an active rule becomes inactive and the reverse. It takes no body, so read the current state with followUpRules.list first and confirm the result. Turning a rule ON can start creating follow-ups and, if the rule has an auto-message, sending messages to customers; turning it OFF stops that. Writes only; nothing is sent by the call itself. The returned rule retains its sorted branchIds restriction.
path Parameters
idRule id from followUpRules.list.
Rule id from followUpRules.list.
Switch a follow-up rule on or off › Responses
The API key is missing, malformed, expired, or its owner is inactive.
success