add_conversation_tag
ChatGPTApplies an existing workspace tag to an accessible conversation. Existing assignments are preserved. Read assigned tags with get_conversation. Required scopes: conversations:write.
create_internal_note
ChatGPTAdds an internal note with optional attachmentIds from uploads owned by the current sender and conversation. Attachment-only notes are supported. This endpoint never sends a customer-facing message. Required scopes: messages:write.
create_kb_article
ChatGPTCreates an article in the source's help center and indexes it into the AI knowledge base when published. Slugs are auto-derived from the title when omitted and deconflicted automatically. Required scopes: kb:write.
create_kb_category
ChatGPTCreates a category in the source's help center. Slugs are auto-derived from the name when omitted. Required scopes: kb:write.
create_tag
ChatGPTCreates a workspace tag with a unique name and optional hex color. Requires access to all channels. Required scopes: tags:write.
edit_message
ChatGPTEdits the plain-text body of your own human customer reply. Requires messages:send and access to the conversation source. Preserves attachments and the original send time; clears prior HTML and link preview. Updates the transcript and connected chat clients without sending another email or notification. Delivered emails remain unchanged. Incoming messages, bot replies, notes and replies from other teammates cannot be edited. Wait until pending email delivery completes before editing. Never use this to ask a customer for payment card numbers, bank details, government ID numbers, health information, passwords or one-time codes. Required scopes: messages:send.
get_contact
ChatGPTReturns one workspace contact. Required scopes: contacts:read.
get_conversation
ChatGPTReturns one conversation with contact, assignee, group, and tags. Required scopes: conversations:read.
get_conversation_context
ChatGPTOne bounded read of conversation state, full messages without HTML, latest reply delivery, and investigation checks. Follow message pagination before answering. Use expectedLastMessageId and a stable idempotencyKey when replying. after reads only new messages; omit it after transcript edits. Checks marked stale need verification; fresh checks retain their timestamps and references. Required scopes: conversations:read, messages:read.
get_conversation_csat
ChatGPTReturns the customer's rating and comment for one conversation, or null data when the customer has not rated it yet. Required scopes: csat:read.
get_csat_summary
ChatGPTReturns customer satisfaction scores on the 1–3 scale (1 bad, 2 okay, 3 great) for the whole workspace, per channel type (chat, email), and per source (channel), with the rating distribution, satisfaction rate (share rated great), and response rate against conversations closed in the same window. Omit every filter for the all-time global score. Required scopes: csat:read.
get_kb_article
ChatGPTReturns one article including its sanitised HTML body. Required scopes: kb:read.
get_kb_category
ChatGPTReturns one category in the accessible help center. Required scopes: kb:read.
get_report
ChatGPTUses the dashboard's reporting queries and date/source/assignee/tag filters. Kinds: overview (counts, response times and CSAT), volume, response-times, agents, sources, tags, csat, ai, knowledge, leads, online-hours. Knowledge uses the date range and permitted sources, independent of source/assignee/tag selections. Online hours describes workspace presence for accessible teammates; conversation counts remain channel-scoped. Responses are not cached. Existing CSAT endpoints retain their separate scope and populations. Required scopes: reporting:read.
get_tag
ChatGPTReturns one shared workspace tag by ID. Available to channel-scoped keys with tags:read. Required scopes: tags:read.
list_channels
ChatGPTReturns the stable channel values accepted by conversation filters. Required scopes: conversations:read.
list_contacts
ChatGPTReturns workspace contacts with tags and conversation counts. Filter by exact stored property values; multiple property filters must all match. Required scopes: contacts:read.
list_conversations
ChatGPTFor oldest waiting sellers use status=open, awaitingReply=true, sort=waitingSince, direction=asc, compact=true. waitingSince is the first incoming message since the last reply; reminders and internal notes do not reset it. Returns non-trash, non-spam conversations with attention, assignment, snooze, priority and tag filters. Set status=open, awaitingReply=true and sourceId to list one store's waiting customers. Unread is specific to the current teammate. Tags match any supplied ID. Defaults remain compact=false and snoozed=any. Use sync for durable message and state changes. Required scopes: conversations:read.
list_csat_ratings
ChatGPTReturns individual customer ratings with comments, newest first. Filter by rating value (for example rating=1 for every bad rating, or rating=1,2), source, channel type, assignee, contact, comment presence, and time window. Required scopes: csat:read.
list_kb_articles
ChatGPTReturns the help center articles for a source, ordered by position. Use status to filter drafts or published articles. Required scopes: kb:read.
list_kb_categories
ChatGPTReturns the help center categories for a source, ordered by position. Required scopes: kb:read.
list_members
ChatGPTLists active assignable teammates with current availability and effective channel access. Omits email and teammates outside accessible channels. Required scopes: members:read.
list_messages
ChatGPTReturns chronological messages. Use after with the last seen message ID for cheap rereads; compact=true returns sender, time, read time and a 200-character text preview without attachment or transcript payloads. Full mode includes fresh 15-minute attachment download URLs, agent-only image extraction, and video transcripts. While full-mode readings are running, readsInProgress suggests the next call; waitSeconds can hold that call up to 30 seconds. Required scopes: messages:read.
list_sources
ChatGPTReturns configured workspace sources and the conversation channels each source supports. Required scopes: conversations:read.
list_tags
ChatGPTReturns all workspace tag IDs, names and colors, ordered by name. Available to channel-scoped keys with tags:read; tag definitions are shared across channels. Use add_conversation_tag with conversations:write to tag only accessible conversations. Tag creation, editing and deletion still require an all-channel key. Required scopes: tags:read.
list_teams
ChatGPTLists workspace teams and their accessible active members. Channel-restricted callers see only teams with an accessible member. Required scopes: members:read.
remove_conversation_tag
ChatGPTRemoves a tag from an accessible conversation without deleting the workspace tag. Read assigned tags with get_conversation. Required scopes: conversations:write.
send_message
ChatGPTSends a customer-facing reply as the authenticated teammate. Pass expectedLastMessageId to fail with 409 if any newer message or note arrived, and idempotencyKey to replay the saved result safely after a retry. internalNote and status can be saved with the reply in one transaction; these fields also require messages:write and conversations:write respectively. Accepts attachmentIds from uploads owned by that sender and conversation, including attachment-only replies. Delivery follows the conversation's channel: realtime chat (with an email copy when the visitor is offline) or email from the source's sending identity. Check emailDeliveryStatus for email delivery: failed means the reply was saved but the email was not sent; retry it from the inbox. Requires the messages:send scope, granted separately from messages:write. Never use this to ask a customer for payment card numbers, bank details, government ID numbers, health information, passwords or one-time codes. Required scopes: messages:send.
update_conversation
ChatGPTChanges status, priority, assignee, team, snooze, tags or channel. Pass sourceId to move the conversation to another channel, optionally with channel to pick chat or email when the destination has both; the destination need not be one the key can access, though the conversation being moved must be, and a key loses a conversation it moves out of its own channels. Moving to an email channel requires the conversation to have a contact email. The move is audit-logged and noted on the thread. Request assignment=round_robin with a team to select an available member (409 if none). Preserves audit, CSAT, notification, search, realtime, and webhook side effects. Required scopes: conversations:write.
update_kb_article
ChatGPTUpdates supplied article fields and re-syncs the AI knowledge index. Publishing stamps publishedAt the first time only. Required scopes: kb:write.
update_kb_category
ChatGPTUpdates supplied category fields. Articles keep their category unless it is deleted. Required scopes: kb:write.