tumbuh.ai
tumbuh.ai Public API

List follow-up tasks

GET
https://<domain-anda>
/api/v1/public/follow-ups

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.

List follow-up tasks › query Parameters

limit
​integer · min: 1 · max: 100

Rows to return, 1-100. Defaults to 25.

Rows to return, 1-100. Defaults to 25.

cursor
​string

The 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.

branchId
​string · minLength: 1 · maxLength: 256

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.

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.

status
​string · enum

Filter by status: PENDING, DONE, CANCELLED or SNOOZED.

Filter by status: PENDING, DONE, CANCELLED or SNOOZED.

Enum values:
PENDING
DONE
CANCELLED
SNOOZED
bucket
​string · enum

Due-date bucket: today, overdue, upcoming (after today) or completed (status DONE).

Due-date bucket: today, overdue, upcoming (after today) or completed (status DONE).

Enum values:
today
overdue
upcoming
completed
priority
​string · enum

Only this priority.

Only this priority.

Enum values:
LOW
MEDIUM
HIGH
customerId
​string

Only this customer, id from customers.list.

Only this customer, id from customers.list.

assignee
​string

Owner 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.

from
​string

Only tasks due at or after this ISO-8601 time.

Only tasks due at or after this ISO-8601 time.

to
​string

Only tasks due at or before this ISO-8601 time.

Only tasks due at or before this ISO-8601 time.

search
​string

Case-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.

success
​required
​object · required

Schedule a follow-up

POST
https://<domain-anda>
/api/v1/public/follow-ups

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

customerId
​string · required

Customer id from customers.list.

dueAt
​string · required

ISO-8601 time the follow-up becomes due.

title
​string

Short label for the task, max 160 characters. Defaults to the note when omitted.

note
​string · maxLength: 5000

What to do when it comes due.

priority
​string · enum

Priority: LOW, MEDIUM or HIGH. Defaults to MEDIUM when omitted on create.

Enum values:
LOW
MEDIUM
HIGH
assignedToId
​string

Agent to assign it to, id from assignments.assignableUsers.

channelType
​string

Channel the follow-up belongs to, from followUps.channels (WHATSAPP or INSTAGRAM).

channelAccountId
​string

Channel account id, from followUps.channels.

conversationId
​string

Conversation id to link the task to, from followUps.channels.

inboundMessageId
​string

The customer message that prompted this follow-up, for traceability.

workflowExecutionId
​string

AI workflow execution that prompted this follow-up, for traceability.

​object

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.

success
​required
​object · required

Read one follow-up

GET
https://<domain-anda>
/api/v1/public/follow-ups/{id}

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.

Read one follow-up › path Parameters

id
​string · required

Follow-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.

success
​required
​object · required

Edit a follow-up

PATCH
https://<domain-anda>
/api/v1/public/follow-ups/{id}

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.

Edit a follow-up › path Parameters

id
​string · required

Follow-up id from followUps.list.

Follow-up id from followUps.list.

Edit a follow-up › Request Body optional

title
​string

New title, max 160 characters.

note
​string · maxLength: 5000

New note.

dueAt
​string

New ISO-8601 due time.

priority
​string · enum

Priority: LOW, MEDIUM or HIGH. Defaults to MEDIUM when omitted on create.

Enum values:
LOW
MEDIUM
HIGH
assignedToId
​string

New owner, id from assignments.assignableUsers.

​object

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.

success
​required
​object · required

List channels for a follow-up

GET
https://<domain-anda>
/api/v1/public/follow-ups/channels/{customerId}

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.

List channels for a follow-up › path Parameters

customerId
​string · required

Customer 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.

success
​required
​object · required

Complete a follow-up

POST
https://<domain-anda>
/api/v1/public/follow-ups/{id}/complete

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.

Complete a follow-up › path Parameters

id
​string · required

Follow-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.

success
​required
​object · required

Cancel a follow-up

POST
https://<domain-anda>
/api/v1/public/follow-ups/{id}/cancel

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.

Cancel a follow-up › path Parameters

id
​string · required

Follow-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.

success
​required
​object · required

Snooze a follow-up

POST
https://<domain-anda>
/api/v1/public/follow-ups/{id}/snooze

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.

Snooze a follow-up › path Parameters

id
​string · required

Follow-up id from followUps.list.

Follow-up id from followUps.list.

Snooze a follow-up › Request Body

snoozedUntil
​string · required

ISO-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.

success
​required
​object · required

Cancel a scheduled auto-message

POST
https://<domain-anda>
/api/v1/public/follow-ups/{id}/auto-message/cancel

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.

Cancel a scheduled auto-message › path Parameters

id
​string · required

Follow-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.

success
​required
​object · required

Retry a failed auto-message

POST
https://<domain-anda>
/api/v1/public/follow-ups/{id}/auto-message/retry

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.

Retry a failed auto-message › path Parameters

id
​string · required

Follow-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.

success
​required
​object · required

List follow-up rules

GET
https://<domain-anda>
/api/v1/public/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.

List follow-up rules › query Parameters

limit
​integer · min: 1 · max: 100

Rows to return, 1-100. Defaults to 25.

Rows to return, 1-100. Defaults to 25.

cursor
​string

The 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.

success
​required
​object · required

Read a rule execution history

GET
https://<domain-anda>
/api/v1/public/follow-up-rules/{id}/executions

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.

Read a rule execution history › path Parameters

id
​string · required

Rule id from followUpRules.list.

Rule id from followUpRules.list.

Read a rule execution history › query Parameters

limit
​integer · min: 1 · max: 100

Rows to return, 1-100. Defaults to 25.

Rows to return, 1-100. Defaults to 25.

cursor
​string

The 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.

success
​required
​object · required

Switch a follow-up rule on or off

PATCH
https://<domain-anda>
/api/v1/public/follow-up-rules/{id}/toggle

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.

Switch a follow-up rule on or off › path Parameters

id
​string · required

Rule 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
​required
​object · required