Customers
Count customers
Return headline counts for this workspace’s customers.
Returns totals for the workspace — how many customers exist, how many are new in the period, and the breakdown by pipeline stage. Use it for a quick health read instead of paging the whole list. Read-only and rate-limited to 20 calls per minute.
Count customers › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList customers
Page through this workspace’s customers, most recently updated first.
Returns customers with their contact details, tags, pipeline stage, nullable primaryBranchId and last inbound message time. Use it to find a customer before messaging them, or to sweep a segment by stage, tag, channel, consent, blacklist, WhatsApp-window state, date range or payment status. Pass updatedSince to poll only what changed. Read-only — nothing is written and no message is sent. 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.
searchMatch against name, phone number or email.
Match against name, phone number or email.
stageIdPipeline stage id from pipelines.list.
Pipeline stage id from pipelines.list.
tagReturn only customers carrying this tag.
Return only customers carrying this tag.
updatedSinceISO-8601 timestamp. Return only customers changed at or after it.
ISO-8601 timestamp. Return only customers changed at or after it.
consentStatusCONSENTED or NOT_CONSENTED. Only CONSENTED customers can receive broadcasts. Matches the consentStatus field on each row.
CONSENTED or NOT_CONSENTED. Only CONSENTED customers can receive broadcasts. Matches the consentStatus field on each row.
blacklistedtrue returns only blacklisted customers, false only the rest.
true returns only blacklisted customers, false only the rest.
channelCustomers reachable on this channel: whatsapp, instagram, messenger, telegram or tiktok.
Customers reachable on this channel: whatsapp, instagram, messenger, telegram or tiktok.
hasActiveWindowtrue returns customers whose WhatsApp 24-hour window is open (free-form text allowed); false returns those who need a template.
true returns customers whose WhatsApp 24-hour window is open (free-form text allowed); false returns those who need a template.
whatsappPhoneNumberIdOnly customers that belong to this WhatsApp number, id from channels.phoneNumbers.
Only customers that belong to this WhatsApp number, id from channels.phoneNumbers.
dateFieldWhich date dateFrom/dateTo apply to: createdAt (default) or lastMessageAt (last inbound message).
Which date dateFrom/dateTo apply to: createdAt (default) or lastMessageAt (last inbound message).
dateFromStart of the date range, YYYY-MM-DD (whole UTC day) or an ISO-8601 timestamp.
Start of the date range, YYYY-MM-DD (whole UTC day) or an ISO-8601 timestamp.
dateToEnd of the date range, YYYY-MM-DD (whole UTC day) or an ISO-8601 timestamp.
End of the date range, YYYY-MM-DD (whole UTC day) or an ISO-8601 timestamp.
branchIdTenant branch id from branches.list, or none for a null branch in the selected source. Omit for all branches; saved inactive branches remain filterable.
Tenant branch id from branches.list, or none for a null branch in the selected source. Omit for all branches; saved inactive branches remain filterable.
branchModeBranch source: latest conversation or stable customer primary branch. Defaults to latest; without branchId no branch predicate is applied.
Branch source: latest conversation or stable customer primary branch. Defaults to latest; without branchId no branch predicate is applied.
paymentStatusComma-separated payment statuses, any of PAID, PENDING, PENDING_NEW_PAYMENT, EXPIRED, FAILED, CANCELLED, NO_PAYMENT. Slower than the other filters.
Comma-separated payment statuses, any of PAID, PENDING, PENDING_NEW_PAYMENT, EXPIRED, FAILED, CANCELLED, NO_PAYMENT. Slower than the other filters.
List customers › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successCreate a customer
Add a customer record with a phone number, name and optional tags.
Creates a customer in this workspace. Use it when a lead arrives from outside the messaging channels. Writes a new record and sends nothing. A phone number that already exists is rejected — find it with customers.list and update it instead. consentStatus: true records an opt-in (logged with consentSource) so the customer can receive broadcasts; only set it when the customer really agreed.
Create a customer › Request Body
phoneNumberE.164 without the plus, e.g. 628123456789. Must not already exist.
nameDisplay name for the customer.
emailEmail address.
tagsTags to attach on creation.
Customer primary branch id from branches.list, or null to clear and prevent automatic initialization. New selections must be active tenant branches; omission preserves the saved value.
pipelineStageIdPipeline stage id from pipelines.list. Defaults to the first stage.
whatsappPhoneNumberIdNumber the customer belongs to, id from channels.phoneNumbers. Defaults to the primary connected number.
leadScoreInitial lead score. The scoring job may recalculate it later.
notesFree-text note stored on the customer record.
Custom field values to set, each as {fieldDefinitionId, value}. Definitions come from crm.customFields.list.
consentStatustrue records an opt-in for broadcasts and writes a consent log. Defaults to false (no consent).
consentSourceWhere consent was obtained, e.g. "website form". Used when consentStatus is true; defaults to "manual".
consentPurposeWhat the customer consented to receive, e.g. "promotions".
Create a customer › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successFind a customer by channel identity
Resolve a phone number or Instagram id to one customer.
Looks up the single customer that owns a channel identity, for example the phone number on an incoming message. Use it before customers.create to avoid duplicates, or to turn a conversation contact into a customer id. Only whatsapp (phone number, with or without +) and instagram (Instagram-scoped id) are stored on the customer; other channels answer null. Answers null in data when nothing matches — that is not an error. Read-only.
query Parameters
channelwhatsapp, instagram, messenger, telegram, web or tiktok. Only whatsapp and instagram can match.
whatsapp, instagram, messenger, telegram, web or tiktok. Only whatsapp and instagram can match.
identifierPhone number for whatsapp (e.g. 628123456789) or the Instagram-scoped id for instagram.
Phone number for whatsapp (e.g. 628123456789) or the Instagram-scoped id for instagram.
Find a customer by channel identity › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successSearch customers by name or phone
Return a short list of {id, name, phoneNumber} matches for a search term.
A lightweight picker: returns only id, name and phoneNumber for customers whose name or phone number contains the search text, newest first. Use it to resolve "Rina" to a customer id cheaply; use customers.list when you need tags, stage, consent or filters. 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.
searchText to find in the name or phone number. Omit to list newest first.
Text to find in the name or phone number. Omit to list newest first.
Search customers by name or phone › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList customers a broadcast may reach
Return customers who have given consent and are not blacklisted.
Returns the audience a broadcast is allowed to target: consented customers who are not blacklisted, sorted by name, optionally narrowed by search text, tags or pipeline stage. Use it to size or preview an audience before broadcasts.create. Read-only — nothing is sent. 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.
branchIdTenant branch id from branches.list, or none for a null branch in the selected source. Omit for all branches; saved inactive branches remain filterable.
Tenant branch id from branches.list, or none for a null branch in the selected source. Omit for all branches; saved inactive branches remain filterable.
branchModeBranch source: latest conversation or stable customer primary branch. Defaults to primary; without branchId no branch predicate is applied.
Branch source: latest conversation or stable customer primary branch. Defaults to primary; without branchId no branch predicate is applied.
searchMatch against name or phone number.
Match against name or phone number.
tagsComma-separated tags. A customer matching any one is returned.
Comma-separated tags. A customer matching any one is returned.
pipelineStageIdOnly customers in this stage, id from pipelines.list.
Only customers in this stage, id from pipelines.list.
List customers a broadcast may reach › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successFind duplicate phone numbers
List phone numbers that appear on more than one customer record.
Scans the workspace for phone numbers shared by two or more customers and returns each group with a preview of its records. Use it to audit data quality before merging in the dashboard; merging is not available through the API. Read-only but scans the whole customer table, so limited to 20 calls per minute. Paginated by phone number: pass meta.pagination.nextCursor as cursor (it is a phone number, digits with an optional leading +).
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 — a phone number (digits, optional leading +). Omit for the first page.
The meta.pagination.nextCursor value from the previous call — a phone number (digits, optional leading +). Omit for the first page.
Find duplicate phone numbers › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead one duplicate phone group
Return every customer record sharing one phone number.
Returns all the customers that share the given phone number, with their relation counts, so you can see which record is the fuller one. Take the phone number from customers.duplicatePhoneGroups. Read-only; merging is not available through the API.
path Parameters
phoneNumberA phone number from customers.duplicatePhoneGroups (digits, optional leading +).
A phone number from customers.duplicatePhoneGroups (digits, optional leading +).
Read one duplicate phone group › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead one customer
Fetch a single customer by id, with their full profile.
Returns one customer including contact details, tags, pipeline stage, nullable primaryBranchId, consent and messaging-window state. Use it after customers.list to read the detail you need before acting. Read-only. Answers 404 when the id does not belong to this workspace.
path Parameters
idCustomer id from customers.list.
Customer id from customers.list.
Read one customer › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successDelete a customer
Permanently delete a customer and everything attached to them.
Removes the customer, their conversations and their history. This cannot be undone and there is no soft-delete to recover from. Use it only for a record the workspace owner has asked to erase. Requires the customers:delete scope, which is separate from ordinary writes, and is limited to 5 calls per minute.
path Parameters
idCustomer id from customers.list. Erases the customer and everything attached; this cannot be undone.
Customer id from customers.list. Erases the customer and everything attached; this cannot be undone.
Delete a customer › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successUpdate a customer
Change a customer’s name, tags, pipeline stage or contact details.
Updates the fields you send and leaves the rest alone. Use it to move a customer along the pipeline, retag them, or correct their details. Writes to the record and can trigger stage-based automation, but sends the customer nothing. consentStatus and blacklisted change the flags directly and write NO consent log — use customers.consent.update to record an opt-in/opt-out properly and customers.blacklist.update to blacklist. Both flags gate broadcasts and outbound messaging. Send pipelineStageId: null to remove the customer from the pipeline.
path Parameters
idCustomer id from customers.list.
Customer id from customers.list.
Update a customer › Request Body optional
nameNew display name.
emailNew email address, or null to clear it.
tagsReplaces the whole tag list.
Customer primary branch id from branches.list, or null to clear and prevent automatic initialization. New selections must be active tenant branches; omission preserves the saved value.
pipelineStageIdMove the customer to this stage (ids from pipelines.list), or null to remove them from the pipeline.
leadScoreLead score. The scoring job recalculates it asynchronously after the update.
notesReplaces the free-text note on the customer record (not the notes list).
Custom field values to set, each as {fieldDefinitionId, value}. Definitions come from crm.customFields.list.
consentStatusSets the consent flag directly with NO consent log. Prefer customers.consent.update. Gates broadcasts.
blacklistedSets the blacklist flag directly. Prefer customers.blacklist.update. A blacklisted customer is excluded from broadcasts.
instagramIgsidInstagram-scoped id, or null to unlink.
instagramUsernameInstagram username, or null to clear it.
Update a customer › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList customer notes
Return the internal notes a team member has left on this customer.
Returns the notes attached to one customer, newest first. Use it to pick up context before replying. Read-only, and notes are never shown to the customer. Paginated by limit; a customer with a long history returns the newest page first.
path Parameters
idCustomer id from customers.list.
Customer id from customers.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 customer notes › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successAdd a customer note
Attach an internal note to a customer.
Records a note against the customer so the next reader has the context. Use it to write down what you did or what the customer asked for. Writes a note; the customer never sees it and nothing is sent.
path Parameters
idCustomer id from customers.list.
Customer id from customers.list.
Add a customer note › Request Body
contentThe note text. Internal only — the customer never sees it.
Add a customer note › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead a customer timeline
Return the activity history recorded against this customer.
Returns the timeline for one customer — stage moves, messages, payments and follow-ups — newest first. Use it to reconstruct what has already happened before deciding what to do next. Read-only. Paginated: follow meta.pagination.nextCursor until hasMore is false.
path Parameters
idCustomer id from customers.list.
Customer id from customers.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.
typeReturn only activities of this type, one of MESSAGE_SENT, MESSAGE_RECEIVED, STAGE_CHANGED, FIELD_UPDATED, NOTE_ADDED, CUSTOMER_CREATED, CONSENT_CHANGED, CONVERSATION_AUTO_RESOLVED.
Return only activities of this type, one of MESSAGE_SENT, MESSAGE_RECEIVED, STAGE_CHANGED, FIELD_UPDATED, NOTE_ADDED, CUSTOMER_CREATED, CONSENT_CHANGED, CONVERSATION_AUTO_RESOLVED.
Read a customer timeline › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successLog a timeline entry
Record an activity on a customer’s timeline.
Adds an entry to the customer timeline that customers.activities.list reads back. Use it to leave an audit trail of something that happened outside the platform, such as a phone call (type NOTE_ADDED with the text in description). A NOTE_ADDED entry with a description also creates a customer note. It only records history: it does not send a message, move the stage or change any field, even for types like MESSAGE_SENT or STAGE_CHANGED.
path Parameters
idCustomer id from customers.list.
Customer id from customers.list.
Log a timeline entry › Request Body
typeActivity type, one of MESSAGE_SENT, MESSAGE_RECEIVED, STAGE_CHANGED, FIELD_UPDATED, NOTE_ADDED, CUSTOMER_CREATED, CONSENT_CHANGED. NOTE_ADDED is the right one for free-text history.
titleShort headline shown on the timeline. Required, at least one character.
descriptionLonger text. For NOTE_ADDED this also becomes a customer note.
Optional structured detail attached to the entry, as a JSON object.
Log a timeline entry › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successCheck the WhatsApp 24-hour window
Tell whether free-form WhatsApp text is allowed or a template is required.
Returns whether the customer’s WhatsApp customer-service window is open. When isActive is true you may send free-form text with messages.send; when false (status expired or never_messaged) only an approved template can be sent. Call it before messages.send to pick text versus template. Includes lastInboundMessageAt, windowExpiresAt and the time remaining. Read-only.
path Parameters
idCustomer id from customers.list.
Customer id from customers.list.
Check the WhatsApp 24-hour window › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successFind duplicates of a customer
List other customer records that look like the same person.
Returns records that share this customer’s phone number, with relation counts for each, so you can judge duplicates. Use it to report data-quality problems. Read-only; merging is not available through the API and has to be done in the dashboard.
path Parameters
idCustomer id from customers.list.
Customer id from customers.list.
Find duplicates of a customer › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRecord a consent change
Log an opt-in or opt-out and update the customer’s consent flag.
Records that the customer opted in (OPT_IN), opted out (OPT_OUT) or that consent details changed (UPDATE), writes a consent-log entry and sets the consent flag (true only for OPT_IN). Consent gates broadcasts: a customer without consent is excluded from them, and consent is a legal record, so only log what the customer actually did and say where it came from in source. This is the compliant way to change consent, unlike setting consentStatus in customers.update. Sends the customer nothing.
path Parameters
idCustomer id from customers.list.
Customer id from customers.list.
Record a consent change › Request Body
actionOne of OPT_IN, OPT_OUT, UPDATE. OPT_IN grants consent; OPT_OUT and UPDATE clear the flag.
sourceWhere the consent came from, e.g. "website form", "WhatsApp reply STOP". Required.
purposeWhat the customer consented to, e.g. "promotions".
Record a consent change › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successBlacklist or unblacklist a customer
Block a customer from broadcasts and outbound messaging, or lift the block.
Sets the blacklist flag. A blacklisted customer is excluded from broadcasts and should not be messaged, so use it for people who asked to stop or are abusive, and unblacklist only on their request. Reversible; writes the flag and sends nothing.
path Parameters
idCustomer id from customers.list.
Customer id from customers.list.
Blacklist or unblacklist a customer › Request Body
blacklistedtrue blacklists the customer; false removes the block.
Blacklist or unblacklist a customer › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successDelete a customer note
Permanently remove one internal note from a customer.
Deletes a single note. This cannot be undone and the timeline entry that was written when the note was added stays. Use it only when asked to remove a specific note, with ids from customers.notes.list. Requires the customers:delete scope and is limited to 5 calls per minute.
path Parameters
idCustomer id from customers.list.
Customer id from customers.list.
noteIdNote id from customers.notes.list. The note is permanently deleted.
Note id from customers.notes.list. The note is permanently deleted.
Delete a customer note › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList pipelines and their stages
Return the sales pipelines configured on this workspace with their ordered stages.
Returns each pipeline and the stages inside it, with the stage ids you need to filter customers.list or to move a customer with customers.update. Call it once and reuse the result — stages change rarely. Read-only. For the cards in each stage use crm.pipelines.board, or filter customers by stageId.
List pipelines and their stages › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead a pipeline board
Return every stage of a pipeline with its customer count and first customers.
Returns the kanban view of one pipeline: each stage with its real total and the first page of customers in it (id, name, phone number, lead score, where to reply). Use it to see how many deals sit in each stage at a glance. limit sets how many customers come back per stage; read further customers of one stage with crm.stages.customers. Read-only, but it queries every stage so it is limited to 20 calls per minute. Get the pipeline id from pipelines.list.
path Parameters
idPipeline id from pipelines.list.
Pipeline id from pipelines.list.
query Parameters
limitCustomers to return per stage, 1-100. Defaults to 25.
Customers to return per stage, 1-100. Defaults to 25.
branchIdTenant branch id from branches.list, or none for a null branch in the selected source. Omit for all branches; saved inactive branches remain filterable.
Tenant branch id from branches.list, or none for a null branch in the selected source. Omit for all branches; saved inactive branches remain filterable.
branchModeBranch source: latest conversation or stable customer primary branch. Defaults to primary; without branchId no branch predicate is applied.
Branch source: latest conversation or stable customer primary branch. Defaults to primary; without branchId no branch predicate is applied.
Read a pipeline board › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList the customers in a stage
Page through the customers sitting in one pipeline stage.
Returns the customers in one stage, newest first, in the compact board-card shape (id, name, phone number, lead score, where to reply). Use it to read past the first page that crm.pipelines.board returns, or to work one stage at a time. Read-only. Paginated: follow meta.pagination.nextCursor until hasMore is false. Stage ids come from pipelines.list.
path Parameters
idPipeline stage id from pipelines.list.
Pipeline stage id from pipelines.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.
branchIdTenant branch id from branches.list, or none for a null branch in the selected source. Omit for all branches; saved inactive branches remain filterable.
Tenant branch id from branches.list, or none for a null branch in the selected source. Omit for all branches; saved inactive branches remain filterable.
branchModeBranch source: latest conversation or stable customer primary branch. Defaults to primary; without branchId no branch predicate is applied.
Branch source: latest conversation or stable customer primary branch. Defaults to primary; without branchId no branch predicate is applied.
List the customers in a stage › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList customers not on a pipeline
Return customers who have no pipeline stage yet.
Returns {id, name, phoneNumber} for customers with no pipeline stage, newest first, optionally filtered by name or phone number. Use it to find leads that still need triage, then place them with customers.update and a pipelineStageId. 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.
branchIdTenant branch id from branches.list, or none for a null branch in the selected source. Omit for all branches; saved inactive branches remain filterable.
Tenant branch id from branches.list, or none for a null branch in the selected source. Omit for all branches; saved inactive branches remain filterable.
branchModeBranch source: latest conversation or stable customer primary branch. Defaults to primary; without branchId no branch predicate is applied.
Branch source: latest conversation or stable customer primary branch. Defaults to primary; without branchId no branch predicate is applied.
searchMatch against name or phone number.
Match against name or phone number.
List customers not on a pipeline › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList custom field definitions
Return the custom fields this workspace defines for customers.
Returns each custom field with its id, name, key, type, options and whether it is required. Call it before customers.create or customers.update with customFields, because values are written by fieldDefinitionId. Read-only; defining fields is done in the dashboard. Paginated by limit; most workspaces fit on the first page.
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 custom field definitions › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList auto-tagging rules
Return the rules that tag customers and move them between stages.
Returns the workspace’s auto-tagging rules: the keywords and optional triggering-conversation branch condition, the tags it adds, the stage it moves the customer to, its priority and whether it is active. Use it to understand why a customer got a tag or changed stage. Read-only. Paginated by limit; most workspaces fit on the first page.
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 auto-tagging rules › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead one auto-tagging rule
Fetch a single auto-tagging rule by id.
Returns one rule with its keywords, nullable branchId condition, tags to add, target stage, priority and active state. Read-only. Answers 404 when the id does not belong to this workspace.
path Parameters
idAuto-tagging rule id from crm.autoTagging.rules.list.
Auto-tagging rule id from crm.autoTagging.rules.list.
Read one auto-tagging rule › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successSwitch an auto-tagging rule on or off
Flip a rule between active and inactive.
Switches an automation on or off: while active, the rule adds tags to customers and may move them to another pipeline stage whenever a message matches its keyword and branch conditions. The call flips the current state (it is not set-to-value), so read the rule with crm.autoTagging.rules.get first and check isActive in the answer. Reversible; sends the customer nothing.
path Parameters
idAuto-tagging rule id from crm.autoTagging.rules.list.
Auto-tagging rule id from crm.autoTagging.rules.list.
Switch an auto-tagging rule on or off › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successCreate a pipeline
Add a sales pipeline, optionally with its first stages.
Creates a pipeline for this workspace. Pass stages to create them in the same call; their order is the order sent unless a stage names its own order. A new pipeline is never the default: make it the default afterwards with crm.pipelines.update and isDefault. Moves and sends nothing to customers. Answers the pipeline with its stage ids.
Create a pipeline › Request Body
namePipeline name, 1-100 characters.
descriptionShort description, up to 1000 characters.
Stages to create with the pipeline, up to 50.
Create a pipeline › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successEdit a pipeline
Rename a pipeline, change its description or make it the default.
Changes only the fields you send. isDefault true makes this the default pipeline and clears the flag on the others; isDefault false leaves the workspace with no default, so prefer making another pipeline the default instead. Stages are not touched: use crm.stages.create, crm.stages.update and crm.stages.delete. Read the current values with pipelines.list first.
path Parameters
idPipeline id from pipelines.list.
Pipeline id from pipelines.list.
Edit a pipeline › Request Body optional
nameNew pipeline name, 1-100 characters.
descriptionNew description, up to 1000 characters, or null to clear it.
isDefaulttrue makes this the default pipeline.
Edit a pipeline › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successAdd a stage to a pipeline
Create a stage at the end of a pipeline, or at a given position.
Adds a stage. Without order it goes after the last stage; without color it is black (#000000). Sends nothing to customers and moves none. Answers the new stage with its id. Answers 404 when the pipeline does not belong to this workspace.
path Parameters
idPipeline id from pipelines.list.
Pipeline id from pipelines.list.
Add a stage to a pipeline › Request Body
nameStage name, 1-100 characters.
colorStage colour as a hex code such as #3B82F6.
orderPosition in the pipeline, lowest first. Stages are listed by this number.
Add a stage to a pipeline › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successDelete an empty stage
Permanently remove a pipeline stage that has no customers.
Deletes the stage. It is refused with 409 stage_not_empty while any customer sits in it, so a customer is never dropped from the pipeline by accident: move them first with customers.update and a pipelineStageId, or read them with crm.stages.customers. Auto-tagging rules that point at the stage stop moving customers. Cannot be undone. Answers 404 when the stage does not belong to this workspace.
path Parameters
idPipeline stage id from pipelines.list.
Pipeline stage id from pipelines.list.
Delete an empty stage › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successEdit or reorder a stage
Rename a stage, recolour it or move it to another position.
Changes only the fields you send. Moving a stage means setting its order: stages are shown lowest order first and a clash is not rejected, so give each stage you move a distinct number (read the current orders with pipelines.list first). Customers in the stage stay in it. Answers 404 when the stage does not belong to this workspace.
path Parameters
idPipeline stage id from pipelines.list.
Pipeline stage id from pipelines.list.
Edit or reorder a stage › Request Body optional
nameStage name, 1-100 characters.
colorStage colour as a hex code such as #3B82F6.
orderPosition in the pipeline, lowest first. Stages are listed by this number.
Edit or reorder a stage › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successSuggest CRM customers for an Instagram thread
Find customers whose Instagram username or name matches the person in a thread.
For an Instagram conversation, returns the customer it is already linked to, or up to 10 customers whose Instagram username or name matches the participant, including their phone numbers, which is why it needs customers:read and not conversations:read. Use it before instagram.linkCustomer to pick the right customer instead of creating a duplicate. Read-only. Returns the conversation participant's username and name when unlinked.
path Parameters
conversationIdInstagram conversation id from conversations.list (channel instagram).
Instagram conversation id from conversations.list (channel instagram).
Suggest CRM customers for an Instagram thread › Responses
The API key is missing, malformed, expired, or its owner is inactive.
success