chat_assign
ChatGPTAssign the chat via `responsible (teammate email; Public API PATCH /chats/{id}). Use responsible_email from workspace_team. Returns compact JSON {\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).
chat_close
ChatGPTSet `closed: true for the chat (Public API PATCH /chats/{id}). Returns compact JSON {\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).
chat_details
ChatGPTFetch a single chat (raw GET /chats/{chat_id}). Use this to inspect labels, assignment, closed, and related fields after the six chat mutation tools (close/open/assign/unassign/set_label/remove_label).
chat_history
ChatGPTList messages in a chat with filters and UID pagination.
chat_open
ChatGPTSet `closed: false to reopen (Public API PATCH /chats/{id}). Returns compact JSON {\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).
chat_remove_label
ChatGPTRemove one label (POST replaces the label list). Graceful no-op success if the label is not on the chat. Returns compact JSON `{\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).
chat_send_message
ChatGPTSend a message in an existing chat via POST /chats/{chat_id}/messages. Provide chat_id plus at least one of text or file_uid: - Text-only: set text (file_uid omitted). - Attachment only: set file_uid (TimelinesAI file UID); text may be omitted. - Text plus attachment: set both text and file_uid. - Reply threading: optionally set reply_to (message UID) like message_reply; you can still use message_reply instead if clearer. Strict input: only chat_id, text, file_uid, and reply_to are accepted—unknown field names raise a validation error so mistaken LLM outputs never hit the API. Empty requests (missing both text and file_uid) fail validation before any quota use. Messaging quota: the Public API charges one quota unit per successful plain-text send and typically two units when sending with file_uid (attachments).
chat_set_label
ChatGPTEnsure a label is present (PUT /chats/{id}/labels adds label). Idempotent: if the chat already includes this label, returns success without calling PUT. Returns compact JSON `{\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).
chat_unassign
ChatGPTClear assignee using empty `responsible (PATCH /chats/{id}). Returns compact JSON {\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).
list_chats
ChatGPTList or search TimelinesAI chats using optional filters.
message_details
ChatGPTFetch full details for one message.
message_react
ChatGPTSet or clear an emoji reaction on a message.
message_reply
ChatGPTReply to a specific message in an existing chat.
waba_accounts
ChatGPTWABA numbers this login may send from. Use id as waba_account_id. QR numbers: workspace_whatsapp_accounts.
waba_chat_assign
ChatGPTAssign the WABA chat via `responsible (teammate email; PATCH /waba/chats/{id}); affects that chat only. Use responsible_email from workspace_team. Returns compact JSON {"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).
waba_chat_close
ChatGPTSet `closed: true for the WABA chat (PATCH /waba/chats/{id}). Returns compact JSON {"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).
waba_chat_details
ChatGPTOne WABA chat: window, assignment, labels, waba_account_id.
waba_chat_history
ChatGPTMessages in a WABA chat, newest first. One message: waba_message_details.
waba_chat_open
ChatGPTSet `closed: false to reopen the WABA chat (PATCH /waba/chats/{id}). Returns compact JSON {"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).
waba_chat_remove_label
ChatGPTRemove one label from the WABA chat: reads current labels and POSTs the remaining list (WABA POST replaces), so other labels stay. Graceful no-op success if the label is not on the chat. Returns compact JSON `{"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).
waba_chat_send_message
ChatGPTFree text in an existing WABA chat (chat_id). Only when service_window_is_open is true. New chat: waba_start_chat. Phone only: waba_list_chats first.
waba_chat_send_template
ChatGPTApproved template in an existing WABA chat (chat_id). Window false/null. New chat: waba_start_chat. Meta charge.
waba_chat_set_label
ChatGPTAdd one label to the WABA chat (PUT /waba/chats/{id}/labels adds, keeping existing labels). Returns compact JSON `{"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).
waba_chat_unassign
ChatGPTClear the WABA chat assignee using empty `responsible (PATCH /waba/chats/{id}). Returns compact JSON {"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).
waba_list_chats
ChatGPTWABA chats this login can see. Read service_window_is_open before send. QR chats: list_chats.
waba_message_details
ChatGPTOne WABA message by UID. Failed → failure_reason.
waba_message_react
ChatGPTSet or clear an emoji on a WABA message. Empty clears. Confirm later with waba_message_details.
waba_start_chat
ChatGPTStart a new WABA chat with phone via an approved template. Existing chat: waba_chat_send_*. waba_account_id must be in waba_accounts and the template's accounts[]. Meta charge.
waba_template_details
ChatGPTOne template: components, status, accounts[] (valid waba_account_id values). Required before a template send. For waba_start_chat, waba_account_id must be in both accounts[] and waba_accounts.
waba_templates
ChatGPTWABA templates this login can reach (50/page). Send uses name + language after waba_template_details. Only APPROVED is sendable.
whatsapp_account_send_message
ChatGPTSend plain text by phone number using a specified WhatsApp account.
workspace_quotas
ChatGPTReturn current workspace quota usage.
workspace_team
ChatGPTList teammates in the current workspace.
workspace_whatsapp_accounts
ChatGPTList WhatsApp accounts in the current workspace.