Key behaviors
- Maximum file upload size is 100 MB per message (includes the file and the entire POST body).
- The message JSON payload (including metadata) can be up to 65,536 characters (~65 KB).
- The
dataobject within a message must not exceed 10 KB. It accepts any JSON structure with UTF8mb4 encoding. - Messages can have up to 25 tags, each up to 100 characters (UTF8mb4).
- Soft-deleted messages remain in the database. Permanently deleted messages (via API) are removed entirely.
- A conversation can hold up to 100 pinned messages. Pins made as the app (without
onBehalfOf) and pins made on behalf of a user are counted separately, so each has its own limit of 100. - A user can save up to 100 messages. Saved messages are private to the user who saved them.
- For groups with more than 300 members, unread message counts and conversations are not updated.
- Delivery and read receipts are sent for groups of up to 300 online users.
How messages connect to other resources
- Users — Messages are sent by and delivered to Users. The sender must be authenticated.
- Groups — Messages can target a Group by specifying the group’s GUID as the receiver.
- Conversations — Each message exchange creates or updates a Conversation that tracks the last message and unread count.
- Threads — Any message can be a parent for a thread. Replies are managed via the threaded messages endpoints.
- Reactions — Users can add or remove emoji reactions on messages.
Available operations
Save Message, Unsave Message, Mark Message As Interacted, Subscribe Thread and Unsubscribe Thread require the
onBehalfOf header, since they act for a specific user. Pin Message and Unpin Message accept it optionally — without it the message is pinned as the app itself.
Message properties
Error handling
For the complete list of error codes, see Error Guide.
For all system limits (file upload size, message payload, tag counts, etc.), see Properties and Constraints.