Conversations
Show a typing indicator
Tell a customer on WhatsApp or Instagram that a reply is being composed.
Sends a typing indicator to one customer, identified by customer id, phone number or Instagram username. Use it before a slow reply so the customer knows someone is there. It reaches the customer immediately but leaves no message behind, and it needs the 24-hour window to be open. Limited to one call per customer every three seconds.
path Parameters
customerIdentifierPhone number for WhatsApp, or the platform user id for other channels.
Phone number for WhatsApp, or the platform user id for other channels.
Show a typing indicator › Request Body
channelChannel the typing indicator appears on.
Show a typing indicator › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successResolve a conversation
Mark a conversation resolved and reset its AI memory.
Closes the conversation as resolved. Besides stamping the resolved time it ends the active assignment, revokes collaborators, skips pending AI handoffs, and DELETES the AI memory for that thread and the customer memory fields the AI collected — that memory cannot be restored, so the AI starts the next message from scratch. It also triggers workspace follow-up rules that react to a resolved conversation, which may create follow-up tasks or auto-messages. It sends no message to the customer itself. Use it only when the customer issue is finished.
path Parameters
conversationTypeConversation type, upper case. A WhatsApp conversation id is the customer id.
Conversation type, upper case. A WhatsApp conversation id is the customer id.
conversationIdConversation id from conversations.list.
Conversation id from conversations.list.
Resolve a conversation › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList conversations
Return conversations across every channel, newest activity first.
Returns conversations from WhatsApp, Instagram, Messenger, Telegram, TikTok and the web widget in one list, each with its customer, last message, unread state and assignment. Use it to see what is waiting before deciding who to reply to. Filter with channels, status, readStatus, q or a date range. Read-only. 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.
branchIdsComma-separated authorized branch ids; none selects unbranched conversations. A filter never widens current visibility.
Comma-separated authorized branch ids; none selects unbranched conversations. A filter never widens current visibility.
channelsComma-separated channels, e.g. whatsapp,instagram. Omit for all.
Comma-separated channels, e.g. whatsapp,instagram. Omit for all.
statusConversation status, e.g. active or resolved.
Conversation status, e.g. active or resolved.
readStatusFilter by read state, e.g. unread.
Filter by read state, e.g. unread.
qFree-text search over customer and message text.
Free-text search over customer and message text.
dateFromISO-8601 lower bound on last activity.
ISO-8601 lower bound on last activity.
dateToISO-8601 upper bound on last activity.
ISO-8601 upper bound on last activity.
assignedCsIdsComma-separated agent user ids.
Comma-separated agent user ids.
pipelineStageIdsComma-separated pipeline stage ids.
Comma-separated pipeline stage ids.
labelsComma-separated labels.
Comma-separated labels.
instagramAccountIdsComma-separated Instagram account ids from channels.instagramAccounts.
Comma-separated Instagram account ids from channels.instagramAccounts.
facebookPageIdsComma-separated Facebook page ids from channels.facebookPages.
Comma-separated Facebook page ids from channels.facebookPages.
List conversations › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead one conversation
Fetch a single conversation by channel and id.
Returns one conversation with its customer, channel account, unread count, resolution state and assignment. Give the channel and id exactly as conversations.list returned them. Use it to confirm the state of a thread before acting on it. Read-only.
path Parameters
channelChannel the conversation belongs to. Messenger has no thread reader.
Channel the conversation belongs to. Messenger has no thread reader.
conversationIdConversation id from conversations.list.
Conversation id from conversations.list.
Read one conversation › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead a message thread
Return the messages in one conversation, newest first.
Returns the messages of a single thread. Give the channel and the conversation id from conversations.list; for whatsapp, pass the customer id instead of a conversation id. Use it to read what was said before replying with messages.send. Read-only and paginated. Messenger threads cannot be read yet and answer 400 channel_unsupported.
path Parameters
channelChannel the conversation belongs to. Messenger has no thread reader.
Channel the conversation belongs to. Messenger has no thread reader.
conversationIdConversation id from conversations.list.
Conversation id from conversations.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 message thread › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList post comments
Return Facebook, Instagram and TikTok post comments that reached this workspace.
Returns public comments left on the workspace's posts and ads, newest first, with the post, the commenter, whether it is resolved or unread, and who it is assigned to. Each comment also carries markedUnread: true when an operator marked it unread by hand (unread keeps meaning nobody has opened it). Use it to triage: readStatus=unread with assignmentFilter=unassigned finds the comments nobody has opened or taken. By default only open (unresolved) comments are returned; pass status=all to include resolved ones. Read-only. Paginated: follow meta.pagination.nextCursor until hasMore is false. Id lists are comma-separated.
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.
branchIdsComma-separated authorized branch ids; none selects unbranched comments. A filter never widens current visibility.
Comma-separated authorized branch ids; none selects unbranched comments. A filter never widens current visibility.
channelOnly this platform, one of instagram, facebook, tiktok.
Only this platform, one of instagram, facebook, tiktok.
statusResolution state, one of active, open, resolved, all, unread. Defaults to active (open comments only); all includes resolved.
Resolution state, one of active, open, resolved, all, unread. Defaults to active (open comments only); all includes resolved.
readStatusWhether anyone has opened the comment, one of all, read, unread. unread also returns a comment marked unread by hand (markedUnread); read leaves it out.
Whether anyone has opened the comment, one of all, read, unread. unread also returns a comment marked unread by hand (markedUnread); read leaves it out.
assignmentFilterOwnership, one of all, mine (the API key owner), unassigned (no human assignee) or others (assigned to someone other than the key owner).
Ownership, one of all, mine (the API key owner), unassigned (no human assignee) or others (assigned to someone other than the key owner).
qFree-text search over the comment text, the author and the post owner.
Free-text search over the comment text, the author and the post owner.
dateFromISO-8601 lower bound on comment time.
ISO-8601 lower bound on comment time.
dateToISO-8601 upper bound on comment time.
ISO-8601 upper bound on comment time.
labelsComma-separated customer tags; only comments whose linked customer has any of them.
Comma-separated customer tags; only comments whose linked customer has any of them.
resolvedByIdsComma-separated user ids; only comments resolved by one of them.
Comma-separated user ids; only comments resolved by one of them.
pipelineStageIdsComma-separated pipeline stage ids from pipelines.list; only comments whose linked customer sits in one.
Comma-separated pipeline stage ids from pipelines.list; only comments whose linked customer sits in one.
teamMemberIdsComma-separated user ids from assignments.assignableUsers; comments assigned to, or resolved by, one of them.
Comma-separated user ids from assignments.assignableUsers; comments assigned to, or resolved by, one of them.
aiAgentIdsComma-separated AI agent ids; only comments assigned to one of those AI agents.
Comma-separated AI agent ids; only comments assigned to one of those AI agents.
assignedCsIdsComma-separated user ids; only comments assigned to one of those customer-service agents.
Comma-separated user ids; only comments assigned to one of those customer-service agents.
List post comments › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successFind a comment by its platform id
Map a platform comment id (commentExtId) to the inbox id comments.get expects.
Turns the platform-native comment id, as stored on a comment lead's conversationId, into the inbox row id used by comments.get, comments.reply and comments.linkCustomer (native Meta and TikTok rows carry an mc_ or ttc_ prefix). Use it to open the thread behind a Lead-Ops comment lead. Name the lane when you know it (repliz, meta or tiktok) to skip the search of the others. Read-only; it does not mark anything read.
query Parameters
extIdPlatform comment id (commentExtId) from a lead's conversationId.
Platform comment id (commentExtId) from a lead's conversationId.
laneWhere the comment came from, one of repliz, meta, tiktok. Searches all three when omitted.
Where the comment came from, one of repliz, meta, tiktok. Searches all three when omitted.
Find a comment by its platform id › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead one comment
Fetch a single comment with its thread and the customer it is linked to.
Returns one comment, the replies underneath it and the customer record it has been matched to, if any. Use it to read the whole exchange before answering. It changes no comment content, but opening a comment marks it as read (the unread marker in the dashboard clears), which readStatus filters on. The response carries markedUnread, the stored manual unread mark after this read.
path Parameters
idComment id from comments.list.
Comment id from comments.list.
Read one comment › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successLink a comment to a customer
Attach an existing customer record to a comment.
Links a comment to a customer from customers.list so the thread shows that customer's labels, pipeline stage and history, and so label and pipeline filters on comments.list match it. Replaces any customer already linked. Writes the link only; nothing is posted on the platform and the customer is not contacted. It does not create a customer: use customers.create first when none exists.
path Parameters
idComment id from comments.list.
Comment id from comments.list.
Link a comment to a customer › Request Body
customerIdCustomer id from customers.list. It must belong to this workspace.
Link a comment to a customer › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList assignable team members
Return the team members a conversation can be assigned to.
Returns the users who can own a conversation, with their ids, names and roles. Call it before assignments.set to get a valid user id — inventing one is rejected. Read-only. Use assignableEntities instead when AI agents should be listed too. For the full team roster use team.members. Pass branchId to list the agents who serve that branch first.
query Parameters
branchIdBranch id from branches.list; agents serving that branch are listed first.
Branch id from branches.list; agents serving that branch are listed first.
List assignable team members › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList assignable people and AI agents
Return the team members and AI agents a conversation can be assigned to.
Returns { humans, aiAgents, aiWorkflowV2Active }. humans carry the ids that assignments.set takes as assignedToId; aiAgents carry the ids it takes as aiAgentId. aiWorkflowV2Active says the workspace has a published AI Workflow, in which case assignments.returnToAi hands a thread back to it. Read-only.
List assignable people and AI agents › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead a conversation assignment
Return who currently owns a conversation — a person, the AI, or nobody.
Returns the current assignee of one conversation, when it was assigned and by whom. Use it before taking a thread over so you do not collide with a teammate who is already answering. Read-only.
path Parameters
conversationTypeConversation type, upper case. Comment threads use the *_COMMENT types.
Conversation type, upper case. Comment threads use the *_COMMENT types.
conversationIdConversation id from conversations.list.
Conversation id from conversations.list.
Read a conversation assignment › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successAssign a conversation
Give a conversation to a specific team member.
Assigns the conversation to ONE assignee: a user id from assignments.assignableEntities (assignedToId) or an AI agent id from the same list (aiAgentId) — send exactly one, never both. Use it to hand a thread to the right person. Writes the assignment and notifies that user in the dashboard; the customer is told nothing and no message is sent. Assigning to a person silences the AI on that thread until it is released or returned with assignments.returnToAi.
path Parameters
conversationTypeConversation type, upper case. Comment threads use the *_COMMENT types.
Conversation type, upper case. Comment threads use the *_COMMENT types.
conversationIdConversation id from conversations.list.
Conversation id from conversations.list.
Assign a conversation › Request Body optional
assignedToIdHuman user id from assignments.assignableUsers. Omit when sending aiAgentId.
aiAgentIdAI agent id from assignments.assignableEntities. Omit when sending assignedToId.
Assign a conversation › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRelease a conversation
Return a conversation to the unassigned queue.
Removes the current assignee so the conversation goes back to the shared queue. Use it when the assignee cannot continue. Writes the change; the customer sees nothing and no message is sent. This does not resolve or close the conversation.
path Parameters
conversationTypeConversation type, upper case. Comment threads use the *_COMMENT types.
Conversation type, upper case. Comment threads use the *_COMMENT types.
conversationIdConversation id from conversations.list.
Conversation id from conversations.list.
Release a conversation › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead a conversation assignment history
Return every past and current assignment of a conversation.
Returns who held the conversation, in what order, who assigned them and when each assignment ended, with AI agent assignments marked. Use it to understand how a thread was handled before you take it over. Read-only. Paginated: follow meta.pagination.nextCursor until hasMore is false.
path Parameters
conversationTypeConversation type, upper case. Comment threads use the *_COMMENT types.
Conversation type, upper case. Comment threads use the *_COMMENT types.
conversationIdConversation id from conversations.list.
Conversation id from conversations.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 conversation assignment history › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successHand a conversation back to the AI
Close the human assignment so the AI Workflow answers the thread again.
Switches the conversation back to AI mode. It ends the active human assignment, after which the workspace AI Workflow replies to the customer on the next inbound message — so this changes whether the AI answers a real customer. The conversation stays open and AI memory is kept. It cannot switch the AI off: assign the thread to a person with assignments.set for that. Fails with ai_workflow_v2_inactive when no AI Workflow is published. Answers { returnedToAi: true, changed } and sends no message itself.
path Parameters
conversationTypeConversation type, upper case. Comment threads use the *_COMMENT types.
Conversation type, upper case. Comment threads use the *_COMMENT types.
conversationIdConversation id from conversations.list.
Conversation id from conversations.list.
Hand a conversation back to the AI › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList branches
Return the workspace’s branches (cabang) with their codes and aliases.
Returns the branches of this workspace — id, name, code, aliases, active flag, and the branch profile (address, mapUrl, phone, timezone, workingHours; null when not set). Call it before conversations.setBranch to get a valid branch id; inventing one is rejected. Inactive branches are omitted unless includeInactive is true. Read-only.
query Parameters
includeInactiveSet to "true" to include deactivated branches.
Set to "true" to include deactivated branches.
List branches › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successSet a conversation’s branch
Pin a conversation to a branch, or clear it with branchId null.
Sets the conversation’s current branch with source MANUAL, which is never overwritten by AI or automatic rules afterwards. Send a branch id from branches.list, or null to clear it. Answers { applied, fromBranchId, current }; applied is false when the conversation already had that branch at the same rank. Writes the branch and its history; the customer is told nothing and no message is sent. 404 BRANCH_NOT_FOUND for an unknown branch, 422 BRANCH_INACTIVE for a deactivated one.
path Parameters
conversationTypeConversation type, upper case.
Conversation type, upper case.
conversationIdConversation id from conversations.list.
Conversation id from conversations.list.
Set a conversation’s branch › Request Body
branchIdBranch id from branches.list, or null to clear the branch.
Set a conversation’s branch › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList conversation collaborators
Return the agents who joined a conversation owned by someone else.
Returns the agents who joined this conversation as collaborators, newest first, with who they are and when they joined or were revoked. Use it to see who else is already helping on a thread. Read-only. Joining a conversation is not available through the Public API because a key has no acting agent. Paginated: follow meta.pagination.nextCursor until hasMore is false.
path Parameters
conversationTypeConversation type, upper case.
Conversation type, upper case.
conversationIdConversation id from conversations.list.
Conversation id from conversations.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.
List conversation collaborators › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList inbox filter values
Return the ids and names you can filter conversations.list by.
Returns the values the inbox filters accept: labels and tags, team members, AI agents, pipeline stages, and the connected WhatsApp numbers, Instagram accounts, Facebook pages, Telegram bots, TikTok accounts and web widgets. Use it to turn a name into the id that conversations.list expects (assignedCsIds, pipelineStageIds, labels and so on) instead of guessing one. Read-only. One call returns the whole set; it is not paginated.
List inbox filter values › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successCheck whether the AI can be retried
Say whether the AI reply on a conversation can be retried and why not if it cannot.
Reports whether the latest AI run on this conversation is eligible for a manual retry (eligible true/false), the reason when it is not (resolved, human-assigned, nothing to retry, already queued) and a summary of that run. Use it before messages.aiRetry so you do not trigger a reply by accident. Read-only.
path Parameters
conversationTypeConversation type, upper-case: WHATSAPP, INSTAGRAM, MESSENGER, TELEGRAM, TIKTOK, TIKTOK_COMMENT, META_COMMENT or REPLIZ_COMMENT.
Conversation type, upper-case: WHATSAPP, INSTAGRAM, MESSENGER, TELEGRAM, TIKTOK, TIKTOK_COMMENT, META_COMMENT or REPLIZ_COMMENT.
conversationIdConversation id from conversations.list.
Conversation id from conversations.list.
Check whether the AI can be retried › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successLink an Instagram thread to a customer
Attach an Instagram conversation to an existing CRM customer.
Links the Instagram conversation to the customer and stamps the customer with the participant's Instagram id and username, so future messages land on that customer. Use instagram.suggestedCustomers first to choose the customer. Fails with 409 when the customer is already tied to a different Instagram account. Reversible with instagram.unlinkCustomer, although the stamped Instagram username stays on the customer.
path Parameters
conversationIdInstagram conversation id from conversations.list (channel instagram).
Instagram conversation id from conversations.list (channel instagram).
Link an Instagram thread to a customer › Request Body
customerIdCustomer id from customers.list to attach to this conversation.
Link an Instagram thread to a customer › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successUnlink a customer from an Instagram thread
Detach the CRM customer from an Instagram conversation.
Removes the customer link from the Instagram conversation. The customer record and its history are kept; only this thread stops pointing at it. Fails with 400 when the thread is not linked.
path Parameters
conversationIdInstagram conversation id from conversations.list (channel instagram).
Instagram conversation id from conversations.list (channel instagram).
Unlink a customer from an Instagram thread › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successLink a Messenger thread to a customer
Attach a Messenger conversation to an existing CRM customer.
Links the Messenger conversation to the customer so the thread and the CRM record share one history. Fails with 409 when the customer is already linked to another Messenger conversation. Reversible with messenger.unlinkCustomer.
path Parameters
conversationIdMessenger conversation id from conversations.list (channel messenger).
Messenger conversation id from conversations.list (channel messenger).
Link a Messenger thread to a customer › Request Body
customerIdCustomer id from customers.list to attach to this conversation.
Link a Messenger thread to a customer › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successUnlink a customer from a Messenger thread
Detach the CRM customer from a Messenger conversation.
Removes the customer link from the Messenger conversation. The customer record is kept; only this thread stops pointing at it. Fails with 400 when the thread is not linked.
path Parameters
conversationIdMessenger conversation id from conversations.list (channel messenger).
Messenger conversation id from conversations.list (channel messenger).
Unlink a customer from a Messenger thread › Responses
The API key is missing, malformed, expired, or its owner is inactive.
success