support_message_create
Post a message into a support thread.
Post a message into a support thread. A message has exactly one author: either an opaque external identifier from the client's own user base, or a support agent — never both and never neither. Direction, authorship and visibility are independent: an internal note may be inbound or outbound. Posting a message moves the parent thread's last reply timestamp. A message may carry files: create and finalize them first, then name them in attachmentIds. A message that names at least one attachment may leave body out entirely — a screenshot posted with nothing to say. Without attachments the body is required, and an empty body is refused either way. Through the public edge an agent author is accepted only if that agent carries no Lepsto binding — a bot or the calling backend; an agent bound to a Lepsto identity may author only from a signed-in session
Behavior
- HTTP
POST /support/messages
Arguments
Name | Type | Required | Description |
|---|---|---|---|
body | string | — | The message text, stored verbatim. Omit it only on a message that carries at least one attachment — a picture posted with nothing to say. An empty string is never a body: leave the field out instead |
threadId | string | • | Id of the thread this message belongs to |
direction | string | • | inbound: written by the external end user. outbound: written by support, going out to them |
visibility | string | — | Defaults to public when omitted. Internal notes are never shown to the end user |
attachmentIds | array | — | Files this message carries, created with support_attachment_create and confirmed with support_attachment_finalize beforehand. Each must be an uploaded attachment of the same thread that no other message already carries; otherwise the whole message is refused. At most 10 per message |
authorAgentId | string | — | The support agent of this product who wrote the message. Set this exactly when the message comes from inside the support contour; leave authorExternalId empty. An agent of another product is reported as not found |
authorExternalId | string | — | Opaque identifier of the external end user in the client's own user base, stored verbatim. Set this exactly when the message comes from outside; leave authorAgentId empty |
Response
Field | Type | Always | Description |
|---|---|---|---|
id | string | • | Message id |
body | string | • | The message text, byte-identical to what was stored |
editedAt | string | • | ISO-8601 time of the last edit, or null when the message was never edited |
threadId | string | • | Thread this message belongs to |
createdAt | string | • | ISO-8601 creation timestamp |
deletedAt | string | • | ISO-8601 time the message was deleted, or null. A deleted message stays in the thread as a placeholder: its body is empty and it carries no attachments |
direction | string | • | inbound: written by the external end user. outbound: written by support, going out to them |
visibility | string | • | public: part of the conversation the external end user sees. internal: a note between agents that never leaves the support contour |
attachments | array | • | Files this message carries, each with a freshly signed download URL. Empty when there are none. Attachments whose upload was never confirmed are never listed here |
attachmentIds | array | • | The same files as a flat list of ids, in the order attachments[] has them. This is the value support_message_create takes back; attachments.0.id names only the first file |
authorAgentId | string | • | The agent author, or null when the external end user wrote the message |
attachmentCount | integer | • | How many files this message carries, 0 when it carries none. A dot-path has no length, so this is the only way a step can branch on whether there are files at all — and a message may carry a file and no body, so it is what tells those two messages apart |
authorExternalId | string | • | The external author, or null when an agent wrote the message |
createdByIdentityId | string | • | The Lepsto identity that posted the message — the one allowed to edit or delete it. Null for a message from the public edge or from before authorship was recorded: nobody owns those, and only support_message_delete_any removes them |
Try it
Post a message into a support thread.