Inbox Reads
Conversations, threads, search, media, collections and labels
Reads need MESSAGES_READ; internal notes need NOTES_WRITE; unmasked identity needs PII_READ. See Reading the inbox.
activeLabels
ScopeMESSAGES_READ
Returns
_idString!nameString!organisationIdString!colorString!activeBoolean!archivedBoolean!isSystemBoolean!descriptionStringcreatedAtDateTime!updatedAtDateTime!query {
activeLabels { _id name organisationId color active }
}allMedia
ScopeMESSAGES_READ
Returns
_idString!urlString!typeMediaType!filenameStringwidthFloatheightFloatfileSizeFloatdurationFloatsupportsStreamingBooleandisableContentTypeDetectionBooleanperformerStringtitleStringmimeTypeStringthumbnailThumbnailframes[Thumbnail!]isAnimatedBooleanisVideoBooleanemojiStringsetNameStringcustomEmojiIdStringstickerTypeStringneedsRepaintingBooleanprocessedContentStringisProcessedBooleanquery {
allMedia { _id url type filename width }
}apiSearchChatMessages
ScopeMESSAGES_READ
Search messages inside one chat of your organisation (API key, messages:read).
Arguments
SearchMessagesInput
chatIdStringcollectionIdOrSlugStringconversationIdStringPaginateMessagesInput
cursorStringisBeforeBooleanlimitInt!RequiredReturns
data[Message!]!nextCursorStringpreviousCursorStringhasNextBoolean!hasPreviousBoolean!unreadCountFloattotalMessagesFloattotalChatsFloatquery {
apiSearchChatMessages(chatId: "…", input: { … }, pagination: { … }) { data nextCursor previousCursor hasNext hasPrevious }
}apiSearchMessages
ScopeMESSAGES_READ
Search messages across your organisation (API key, messages:read).
Arguments
paginationPaginateMessagesInputSearchMessagesInput
chatIdStringcollectionIdOrSlugStringconversationIdStringPaginateMessagesInput
cursorStringisBeforeBooleanlimitInt!RequiredReturns
data[Message!]!nextCursorStringpreviousCursorStringhasNextBoolean!hasPreviousBoolean!unreadCountFloattotalMessagesFloattotalChatsFloatquery {
apiSearchMessages(input: { … }, pagination: { … }) { data nextCursor previousCursor hasNext hasPrevious }
}chat
ScopeMESSAGES_READ
Arguments
chatIdString!RequiredcollectionIdOrSlugStringReturns
_idString!chatIdFloatexternalChatIdStringbusinessConnectionIdStringexternalUserIdStringtypeChatType!titleStringusernameStringfirstNameStringlastNameStringisForumBooleanlastMessageMessagelastMessageAtDateTimeprofilePeoplechannelIdentityChannelIdentityintegrationIdStringcreatedAtDateTimeupdatedAtDateTimeunReadCountFloatengagedBooleanfalse = captured/hidden from the operator inbox; absent/unset = visible (legacy rows + all non-web channels). Set explicitly, never defaulted.isBlockedBooleanverified[String!]isAIActiveBooleanstatusChatStatusquery {
chat(chatId: "…", collectionIdOrSlug: "…") { _id chatId externalChatId businessConnectionId externalUserId }
}chatCollection
ScopeMESSAGES_READ
Arguments
idOrSlugString!RequiredReturns
_idString!nameString!slugString!descriptionStringiconStringcolorStringpositionFloat!isSystemBoolean!systemKeyStringisVisibleBoolean!isLockedBoolean!planLockedBoolean!rules[CollectionRule!]!createdByStringchatCountFloatcreatedAtDateTime!updatedAtDateTime!query {
chatCollection(idOrSlug: "…") { _id name slug description icon }
}chatCollectionCounts
ScopeMESSAGES_READ
Arguments
collectionIds[String!]!RequiredReturns
query {
chatCollectionCounts(collectionIds: "…") { collectionId count }
}chatCollections
ScopeMESSAGES_READ
Arguments
includeSystemBoolean!true.includeHiddenBoolean!false.Returns
_idString!nameString!slugString!descriptionStringiconStringcolorStringpositionFloat!isSystemBoolean!systemKeyStringisVisibleBoolean!isLockedBoolean!planLockedBoolean!rules[CollectionRule!]!createdByStringchatCountFloatcreatedAtDateTime!updatedAtDateTime!query {
chatCollections(includeSystem: false, includeHidden: false) { _id name slug description icon }
}collectionChatCount
ScopeMESSAGES_READ
Arguments
collectionIdOrSlugString!RequiredReturns
Float!query {
collectionChatCount(collectionIdOrSlug: "…")
}collectionChats
ScopeMESSAGES_READ
Arguments
GetCursorPaginatedInput
cursorStringlimitIntbeforeBooleanGetSortedInput
sortByString!RequiredsortOrderString!RequiredReturns
query {
collectionChats(collectionIdOrSlug: "…", pagination: { … }, sort: { … }) { previousCursor nextCursor hasPrevious hasNext data }
}collectionConversations
ScopeMESSAGES_READ
Arguments
GetCursorPaginatedInput
cursorStringlimitIntbeforeBooleanGetSortedInput
sortByString!RequiredsortOrderString!RequiredReturns
query {
collectionConversations(collectionIdOrSlug: "…", pagination: { … }, sort: { … }) { previousCursor nextCursor hasPrevious hasNext data }
}conversation
ScopeMESSAGES_READ
Arguments
idID!RequiredReturns
_idString!createdAtDateTime!updatedAtDateTime!unReadCountIntengagedBooleanfalse = captured/hidden from the operator inbox; absent/unset = visible (legacy rows + all non-web channels). Set explicitly, never defaulted.lastMessageMessagelastMessageAtDateTimelastActivityAtDateTimestatusConversationStatusthreads[Chat!]!primaryThreadChat!analytics[PeopleFieldValue!]!channels[ConversationChannel!]!threadStatusConversationStatusisBlockedBoolean!hasBlockedThreadBoolean!blocked collection. Drives the inbox row / conversation header block mark. Distinct from isBlocked (the person-level flag driving the block toggle, read from one representative thread).assignedToUserassignees[User!]!assignedStatusChatAssignmentStatuschannelGroups[ConversationChannelGroup!]!query {
conversation(id: "…") { _id createdAt updatedAt unReadCount engaged }
}conversationMedia
ScopeMESSAGES_READ
Arguments
PaginateMessagesInput
cursorStringisBeforeBooleanlimitInt!RequiredReturns
data[Message!]!nextCursorStringpreviousCursorStringhasNextBoolean!hasPreviousBoolean!unreadCountFloattotalMessagesFloattotalChatsFloatquery {
conversationMedia(conversationId: "…", pagination: { … }, mediaTypes: […]) { data nextCursor previousCursor hasNext hasPrevious }
}conversationMediaCounts
ScopeMESSAGES_READ
Arguments
conversationIdString!RequiredReturns
query {
conversationMediaCounts(conversationId: "…") { type count }
}conversationMessages
ScopeMESSAGES_READ
Arguments
PaginateMessagesInput
cursorStringisBeforeBooleanlimitInt!RequiredReturns
data[Message!]!nextCursorStringpreviousCursorStringhasNextBoolean!hasPreviousBoolean!unreadCountFloattotalMessagesFloattotalChatsFloatquery {
conversationMessages(conversationId: "…", pagination: { … }, messageId: "…") { data nextCursor previousCursor hasNext hasPrevious }
}conversationNotes
ScopeNOTES_WRITE
Arguments
conversationIdString!RequiredpaginationPaginateMessagesInputPaginateMessagesInput
cursorStringisBeforeBooleanlimitInt!RequiredReturns
data[Message!]!nextCursorStringpreviousCursorStringhasNextBoolean!hasPreviousBoolean!unreadCountFloattotalMessagesFloattotalChatsFloatquery {
conversationNotes(conversationId: "…", pagination: { … }) { data nextCursor previousCursor hasNext hasPrevious }
}getChatMedia
ScopeMESSAGES_READ
Arguments
PaginateMessagesInput
cursorStringisBeforeBooleanlimitInt!RequiredReturns
data[Message!]!nextCursorStringpreviousCursorStringhasNextBoolean!hasPreviousBoolean!unreadCountFloattotalMessagesFloattotalChatsFloatquery {
getChatMedia(chatId: "…", pagination: { … }, mediaTypes: […]) { data nextCursor previousCursor hasNext hasPrevious }
}getChatMediaCounts
ScopeMESSAGES_READ
Arguments
chatIdString!RequiredReturns
query {
getChatMediaCounts(chatId: "…") { type count }
}getChatNotes
ScopeNOTES_WRITE
Arguments
chatIdString!RequiredpaginationPaginateMessagesInputPaginateMessagesInput
cursorStringisBeforeBooleanlimitInt!RequiredReturns
data[Message!]!nextCursorStringpreviousCursorStringhasNextBoolean!hasPreviousBoolean!unreadCountFloattotalMessagesFloattotalChatsFloatquery {
getChatNotes(chatId: "…", pagination: { … }) { data nextCursor previousCursor hasNext hasPrevious }
}getMessages
ScopeMESSAGES_READ
Arguments
PaginateMessagesInput
cursorStringisBeforeBooleanlimitInt!RequiredReturns
data[Message!]!nextCursorStringpreviousCursorStringhasNextBoolean!hasPreviousBoolean!unreadCountFloattotalMessagesFloattotalChatsFloatquery {
getMessages(chatId: "…", pagination: { … }, messageId: "…") { data nextCursor previousCursor hasNext hasPrevious }
}inboxCounts
ScopeMESSAGES_READ
Returns
query {
inboxCounts { all mine mentions perCollection }
}label
ScopeMESSAGES_READ
Arguments
idString!RequiredReturns
_idString!nameString!organisationIdString!colorString!activeBoolean!archivedBoolean!isSystemBoolean!descriptionStringcreatedAtDateTime!updatedAtDateTime!query {
label(id: "…") { _id name organisationId color active }
}labels
ScopeMESSAGES_READ
Arguments
includeArchivedBoolean!false.Returns
_idString!nameString!organisationIdString!colorString!activeBoolean!archivedBoolean!isSystemBoolean!descriptionStringcreatedAtDateTime!updatedAtDateTime!query {
labels(includeArchived: false) { _id name organisationId color active }
}searchChats
ScopeMESSAGES_READ
Arguments
SearchChatsInput
collectionIdOrSlugStringGetCursorPaginatedInput
cursorStringlimitIntbeforeBooleanGetSortedInput
sortByString!RequiredsortOrderString!RequiredReturns
data[Chat!]!previousCursorStringnextCursorStringhasPreviousBoolean!hasNextBoolean!totalCountIntquery {
searchChats(input: { … }, pagination: { … }, sort: { … }) { data previousCursor nextCursor hasPrevious hasNext }
}searchConversations
ScopeMESSAGES_READ
Arguments
SearchChatsInput
collectionIdOrSlugStringGetCursorPaginatedInput
cursorStringlimitIntbeforeBooleanGetSortedInput
sortByString!RequiredsortOrderString!RequiredReturns
data[Conversation!]!previousCursorStringnextCursorStringhasPreviousBoolean!hasNextBoolean!totalCountIntquery {
searchConversations(input: { … }, pagination: { … }, sort: { … }) { data previousCursor nextCursor hasPrevious hasNext }
}sendConversationNote
ScopeNOTES_WRITE
Arguments
CreateCombinedMessageInput
createdAtDateTimedeliveryStatusMessageDeliveryStatusreplyToMessageStringmentions[ID!]internalBooleantextStringbuttons[MessageButtonInput!]replyToButtonIdStringkeyboardTypeStringflowTitleStringmedia[String!]captionStringshowCaptionAboveMediaBooleanhasMediaSpoilerBooleanmediaGroupIdStringisMediaGroupBooleanmediaGroup[String!]Returns
_idString!messageIdFloatexternalMessageIdStringtypeMessageType!fromMessageSenderUnionchatChat!directionMessageDirection!sentFromChannelBooleantextStringmediaGroup[MediaGroupMessage!]media[Media!]captionStringshowCaptionAboveMediaBooleanhasMediaSpoilerBooleancontactContactlocationMessageLocationunsupportedMessageUnsupportedproducts[MessageProduct!]pollMessagePolldiceMessageDicegameMessageGamebuttons[MessageButton!]sources[MessageSource!]replyToMessageMessagemutation {
sendConversationNote(conversationId: "…", input: { … }, chatId: "…", actingUserId: "…") { _id messageId externalMessageId type from }
}threadsPage
ScopeMESSAGES_READ
Arguments
SocialPaginationInput
cursorStringlimitInt!RequiredReturns
threads[Chat!]!nextCursorStringhasNextBoolean!query {
threadsPage(conversationId: "…", pagination: { … }, filter: ALL, peopleId: "…") { threads nextCursor hasNext }
}