A valid request URL is required to generate request examples{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"author_kind": "contact",
"author_user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"visibility": "public",
"body_text": "<string>",
"body_html": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Reply, or leave an internal note
Requires support:write. One composer, two acts, and visibility is the whole difference. A public message is the reply the contact will see: the first one stamps first_responded_at — the number a first-response SLA is measured against — and moves an open conversation to pending, because the ball is now in the contact’s court. An internal note is the team talking to itself: it stamps nothing, moves nothing, and its very existence never leaves the building (conversation.note_added is not a deliverable webhook event, by design).
On an email conversation a public reply also leaves as email, in the organization’s name: it threads onto the conversation (In-Reply-To/References), and its Reply-To is the conversation’s own reply address — answering the email continues the thread. On chat the widget picks the reply up by polling.
A valid request URL is required to generate request examples{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"author_kind": "contact",
"author_user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"visibility": "public",
"body_text": "<string>",
"body_html": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Authorizations
A staff session token, uk_st_…. Minted by sign-up, sign-in or the two-factor exchange. Only a 401 means it is spent; not_a_member (403) is about the organization named in X-Organization-Id and leaves the token good for the others.
Headers
The organization the caller is acting on — the org_… code that appears in the panel URL. It identifies; the membership JOIN is what authorizes, so a forged code reads nothing: the answer is not_a_member (403), which does not mean the session is over. Absent, the session's default organization answers, or — if that membership was revoked while the session was open — any other one the caller still holds.
Path Parameters
Query Parameters
Which environment to act in. A view parameter, valid only on the staff surface — a machine credential never chooses its environment, it is resolved from the key.
live, test Body
public, internal Response
The message.
One line of a conversation. An internal note is a message — same thread, same ordering — and visibility is what keeps it off every contact-facing read.