chat.read scope.
Is chat enabled?
data: the tour’s chat configuration.
List conversations
data
dmsAndGroups keeps its name for backwards compatibility but contains group chats only through this API — DMs are removed. type values are lowercase: channel, group_chat.totalUnread counts only the conversations this API returns. It is the sum of unread_count across favourites, channels and dmsAndGroups, so it always reconciles with the payload you received — but it will be lower than the unread badge the same user sees in the Daysync app, because the app counts direct messages and this API never exposes them. Muted conversations count as 0 in both.Don’t treat a difference from the in-app number as missing data.Get a conversation
data: { id, type, name, description, is_public, is_archived, created_by_user_id, member_count, created_at }
List its members
data: array of members with their user record and chat role.
Read messages
Response
data
- Thread replies are not in this feed. Use the thread endpoint below.
- A message deleted by its author is omitted; one removed by an admin comes back as a tombstone with
content: null. - Attachments blocked by moderation are stripped from the response.
- Voice notes carry
is_voice_note,duration_seconds, andwaveform_data.
Read a thread
The cursor runs in the opposite direction to
messages: threads page forwards, the main feed pages backwards.Pinned messages
data: array of { pin_id, pinned_by_user_id, pinned_at, message }.
Reactions
data: [{ "emoji": "👍", "count": 3, "reactors": [{ "userId": "cdd1…", "name": "Jane Doe", "isYou": false }] }]
Search messages
Response
data: { messages: [...], nextCursor }. Each hit carries the conversation it came from. Hits in DMs are removed.
Search files
Not available
Deliberately not exposed: read receipts, presence, mention candidates, report reasons, and any write operation. If your integration needs one of these, get in touch.See also: Tours, Scopes & Permissions.

