Skip to content

Chat v2

Reference for the Chat v2 endpoints on Roblox.

Base URL: https://chat.roblox.com

Method Path Name
POST /v2/add-to-conversation postAddToConversation
GET /v2/chat-settings getChatSettings
GET /v2/get-conversations getGetConversations
GET /v2/get-messages getGetMessages
GET /v2/get-rollout-settings getGetRolloutSettings
GET /v2/get-unread-conversation-count getGetUnreadConversationCount
GET /v2/get-unread-conversations getGetUnreadConversations
GET /v2/get-unread-messages getGetUnreadMessages
GET /v2/get-user-conversations getGetUserConversations
POST /v2/mark-as-read postMarkAsRead
POST /v2/mark-as-seen postMarkAsSeen
GET /v2/metadata getMetadata
GET /v2/multi-get-latest-messages getMultiGetLatestMessages
POST /v2/remove-from-conversation postRemoveFromConversation
POST /v2/rename-group-conversation postRenameGroupConversation
POST /v2/send-game-link-message postSendGameLinkMessage
POST /v2/send-message postSendMessage
POST /v2/start-cloud-edit-conversation postStartCloudEditConversation
POST /v2/start-group-conversation postStartGroupConversation
POST /v2/start-one-to-one-conversation postStartOneToOneConversation
POST /v2/update-user-typing-status postUpdateUserTypingStatus

POST /v2/add-to-conversation

Adds users to an existing conversation

Usage
import { fetchApi } from 'rozod';
import { postAddToConversation } from 'rozod/endpoints/chatv2';
const data = await fetchApi(postAddToConversation, {
body: { /* ... */ }
});
Field Type Description
participantUserIds number[]
conversationId number
Field Type Description
conversationId number
rejectedParticipants object[] See below
resultType 'Success'
statusMessage string

rejectedParticipants[] item fields:

Field Type Description
rejectedReason string
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean
Status Description
401 0: Authorization has been denied for this request.
403 0: Token Validation Failed

GET /v2/chat-settings

For every authenticated user, the clients hit this endpoint to get the chat related settings. Example : Chat is enabled or not

Usage
import { fetchApi } from 'rozod';
import { getChatSettings } from 'rozod/endpoints/chatv2';
const data = await fetchApi(getChatSettings, undefined);
Field Type Description
chatEnabled boolean
isActiveChatUser boolean
isConnectTabEnabled boolean
Status Description
401 0: Authorization has been denied for this request.

GET /v2/get-conversations

Gets conversations for the conversationIds specified in the parameters

Usage
import { fetchApi } from 'rozod';
import { getGetConversations } from 'rozod/endpoints/chatv2';
const data = await fetchApi(getGetConversations, {
conversationIds: /* number */
});
Name Type Required Description
conversationIds number Yes Ids of the conversations to be returned

Array of objects:

Field Type Description
id number
title string
initiator object See below
hasUnreadMessages boolean
participants object[] See below
conversationType `“OneToOneConversation” “MultiUserConversation”
conversationTitle object See below
lastUpdated string
conversationUniverse object See below

initiator fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

participants[] item fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

conversationTitle fields:

Field Type Description
titleForViewer string
isDefaultTitle boolean

conversationUniverse fields:

Field Type Description
universeId number
rootPlaceId number
Status Description
401 0: Authorization has been denied for this request.

GET /v2/get-messages

Gets messages corresponding to the given conversationId

Usage
import { fetchApi } from 'rozod';
import { getGetMessages } from 'rozod/endpoints/chatv2';
const data = await fetchApi(getGetMessages, {
conversationId: /* integer */,
pageSize: /* integer */,
exclusiveStartMessageId: /* string? */
});
Name Type Required Description
conversationId integer Yes
pageSize integer Yes
exclusiveStartMessageId string? No

Array of objects:

Field Type Description
id string
senderType `“User” “System”`
sent string
read boolean
messageType `“PlainText” “Link”
decorators string[]
senderTargetId number
content string
link object See below
eventBased object See below

link fields:

Field Type Description
type 'Game'
game object See below

game fields:

Field Type Description
universeId number

eventBased fields:

Field Type Description
type 'SetConversationUniverse'
setConversationUniverse object See below

setConversationUniverse fields:

Field Type Description
actorUserId number
universeId number
Status Description
401 0: Authorization has been denied for this request.

GET /v2/get-rollout-settings

Gets the rollout settings for requested feature

Usage
import { fetchApi } from 'rozod';
import { getGetRolloutSettings } from 'rozod/endpoints/chatv2';
const data = await fetchApi(getGetRolloutSettings, {
featureNames: /* string */
});
Name Type Required Description
featureNames string Yes string array to request feature rollout settings
Field Type Description
rolloutFeatures object[] See below

rolloutFeatures[] item fields:

Field Type Description
featureName `“LuaChat” “ConversationUniverse”
isRolloutEnabled boolean
Status Description
401 0: Authorization has been denied for this request.

GET /v2/get-unread-conversation-count

Gets the count of unread conversations

Usage
import { fetchApi } from 'rozod';
import { getGetUnreadConversationCount } from 'rozod/endpoints/chatv2';
const data = await fetchApi(getGetUnreadConversationCount, undefined);
Field Type Description
count number
Status Description
401 0: Authorization has been denied for this request.

GET /v2/get-unread-conversations

Gets a list of unread conversations

Usage
import { fetchApi } from 'rozod';
import { getGetUnreadConversations } from 'rozod/endpoints/chatv2';
const data = await fetchApi(getGetUnreadConversations, {
pageNumber: /* integer */,
pageSize: /* integer */
});
Name Type Required Description
pageNumber integer Yes
pageSize integer Yes

Array of objects:

Field Type Description
id number
title string
initiator object See below
hasUnreadMessages boolean
participants object[] See below
conversationType `“OneToOneConversation” “MultiUserConversation”
conversationTitle object See below
lastUpdated string
conversationUniverse object See below

initiator fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

participants[] item fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

conversationTitle fields:

Field Type Description
titleForViewer string
isDefaultTitle boolean

conversationUniverse fields:

Field Type Description
universeId number
rootPlaceId number
Status Description
401 0: Authorization has been denied for this request.

GET /v2/get-unread-messages

Gets the unread messages for the conversationIds specified in the parameters

Usage
import { fetchApi } from 'rozod';
import { getGetUnreadMessages } from 'rozod/endpoints/chatv2';
const data = await fetchApi(getGetUnreadMessages, {
conversationIds: /* number */,
pageSize: /* integer */
});
Name Type Required Description
conversationIds number Yes
pageSize integer Yes

Array of objects:

Field Type Description
conversationId number
chatMessages object[] See below

chatMessages[] item fields:

Field Type Description
id string
senderType `“User” “System”`
sent string
read boolean
messageType `“PlainText” “Link”
decorators string[]
senderTargetId number
content string
link object See below
eventBased object See below

link fields:

Field Type Description
type 'Game'
game object See below

game fields:

Field Type Description
universeId object

eventBased fields:

Field Type Description
type 'SetConversationUniverse'
setConversationUniverse object See below

setConversationUniverse fields:

Field Type Description
actorUserId object
universeId object
Status Description
401 0: Authorization has been denied for this request.

GET /v2/get-user-conversations

Gets all conversations associated with the logged-in User

Usage
import { fetchApi } from 'rozod';
import { getGetUserConversations } from 'rozod/endpoints/chatv2';
const data = await fetchApi(getGetUserConversations, {
pageNumber: /* integer */,
pageSize: /* integer */
});
Name Type Required Description
pageNumber integer Yes
pageSize integer Yes

Array of objects:

Field Type Description
id number
title string
initiator object See below
hasUnreadMessages boolean
participants object[] See below
conversationType `“OneToOneConversation” “MultiUserConversation”
conversationTitle object See below
lastUpdated string
conversationUniverse object See below

initiator fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

participants[] item fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

conversationTitle fields:

Field Type Description
titleForViewer string
isDefaultTitle boolean

conversationUniverse fields:

Field Type Description
universeId number
rootPlaceId number
Status Description
401 0: Authorization has been denied for this request.

POST /v2/mark-as-read

Mark the specified conversation messages as read

Usage
import { fetchApi } from 'rozod';
import { postMarkAsRead } from 'rozod/endpoints/chatv2';
const data = await fetchApi(postMarkAsRead, {
body: { /* ... */ }
});
Field Type Description
conversationId number
endMessageId string
Field Type Description
resultType 'Success'
Status Description
401 0: Authorization has been denied for this request.
403 0: Token Validation Failed

POST /v2/mark-as-seen

Mark the specified conversation messages as seen

Usage
import { fetchApi } from 'rozod';
import { postMarkAsSeen } from 'rozod/endpoints/chatv2';
const data = await fetchApi(postMarkAsSeen, {
body: { /* ... */ }
});
Field Type Description
conversationsToMarkSeen number[]
Field Type Description
resultType 'Success'
Status Description
401 0: Authorization has been denied for this request.
403 0: Token Validation Failed

GET /v2/metadata

Get Chat metadata.

Usage
import { fetchApi } from 'rozod';
import { getMetadata } from 'rozod/endpoints/chatv2';
const data = await fetchApi(getMetadata, undefined);
Field Type Description
isChatEnabledByPrivacySetting `0 1
languageForPrivacySettingUnavailable string
maxConversationTitleLength number
numberOfMembersForPartyChrome number
partyChromeDisplayTimeStampInterval number
signalRDisconnectionResponseInMilliseconds number
typingInChatFromSenderThrottleMs number
typingInChatForReceiverExpirationMs number
relativeValueToRecordUiPerformance number
isChatDataFromLocalStorageEnabled boolean
chatDataFromLocalStorageExpirationSeconds number
isUsingCacheToLoadFriendsInfoEnabled boolean
cachedDataFromLocalStorageExpirationMS number
senderTypesForUnknownMessageTypeError string[]
isInvalidMessageTypeFallbackEnabled boolean
isRespectingMessageTypeEnabled boolean
validMessageTypesWhiteList string[]
shouldRespectConversationHasUnreadMessageToMarkAsRead boolean
isAliasChatForClientSideEnabled boolean
isPlayTogetherForGameCardsEnabled boolean
isRoactChatEnabled boolean
webChatEventSampleRate number
isPlatformChatApiEnabled boolean
Status Description
401 0: Authorization has been denied for this request.

GET /v2/multi-get-latest-messages

Gets latest messages corresponding to the given list of conversation Ids

Usage
import { fetchApi } from 'rozod';
import { getMultiGetLatestMessages } from 'rozod/endpoints/chatv2';
const data = await fetchApi(getMultiGetLatestMessages, {
conversationIds: /* number */,
pageSize: /* integer */
});
Name Type Required Description
conversationIds number Yes
pageSize integer Yes

Array of objects:

Field Type Description
conversationId number
chatMessages object[] See below

chatMessages[] item fields:

Field Type Description
id string
senderType `“User” “System”`
sent string
read boolean
messageType `“PlainText” “Link”
decorators string[]
senderTargetId number
content string
link object See below
eventBased object See below

link fields:

Field Type Description
type 'Game'
game object See below

game fields:

Field Type Description
universeId object

eventBased fields:

Field Type Description
type 'SetConversationUniverse'
setConversationUniverse object See below

setConversationUniverse fields:

Field Type Description
actorUserId object
universeId object
Status Description
401 0: Authorization has been denied for this request.

POST /v2/remove-from-conversation

Removes a user from an existing conversation

Usage
import { fetchApi } from 'rozod';
import { postRemoveFromConversation } from 'rozod/endpoints/chatv2';
const data = await fetchApi(postRemoveFromConversation, {
body: { /* ... */ }
});
Field Type Description
participantUserId number
conversationId number
Field Type Description
conversationId number
resultType 'Success'
statusMessage string
Status Description
401 0: Authorization has been denied for this request.
403 0: Token Validation Failed

POST /v2/rename-group-conversation

Renames the title of an existing conversation

Usage
import { fetchApi } from 'rozod';
import { postRenameGroupConversation } from 'rozod/endpoints/chatv2';
const data = await fetchApi(postRenameGroupConversation, {
body: { /* ... */ }
});
Field Type Description
conversationId number
newTitle string
Field Type Description
conversationTitle string
resultType `“Success” “Moderated”
title object See below
statusMessage string

title fields:

Field Type Description
titleForViewer string
isDefaultTitle boolean
Status Description
401 0: Authorization has been denied for this request.
403 0: Token Validation Failed

POST /v2/send-game-link-message

Usage
import { fetchApi } from 'rozod';
import { postSendGameLinkMessage } from 'rozod/endpoints/chatv2';
const data = await fetchApi(postSendGameLinkMessage, {
body: { /* ... */ }
});
Field Type Description
universeId number
isExperienceInvite boolean
userId number
placeId number
conversationId number
decorators string[]
Field Type Description
chatMessageLinkType 'Game'
messageId string
sent string
messageType `“PlainText” “Link”
resultType `“Success” “Moderated”
statusMessage string
Status Description
401 0: Authorization has been denied for this request.
403 0: Token Validation Failed

POST /v2/send-message

Sends a chat message

Usage
import { fetchApi } from 'rozod';
import { postSendMessage } from 'rozod/endpoints/chatv2';
const data = await fetchApi(postSendMessage, {
body: { /* ... */ }
});
Field Type Description
message string
isExperienceInvite boolean
userId number
conversationId number
decorators string[]
Field Type Description
content string
filteredForReceivers boolean
messageId string
sent string
messageType `“PlainText” “Link”
resultType `“Success” “Moderated”
statusMessage string
Status Description
401 0: Authorization has been denied for this request.
403 0: Token Validation Failed

POST /v2/start-cloud-edit-conversation

Creates a new cloud edit conversation

Usage
import { fetchApi } from 'rozod';
import { postStartCloudEditConversation } from 'rozod/endpoints/chatv2';
const data = await fetchApi(postStartCloudEditConversation, {
body: { /* ... */ }
});
Field Type Description
placeId number
Field Type Description
conversation object See below
rejectedParticipants object[] See below
resultType 'Success'
statusMessage string

conversation fields:

Field Type Description
id number
title string
initiator object See below
hasUnreadMessages boolean
participants object[] See below
conversationType `“OneToOneConversation” “MultiUserConversation”
conversationTitle object See below
lastUpdated string
conversationUniverse object See below

initiator fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

participants[] item fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

conversationTitle fields:

Field Type Description
titleForViewer string
isDefaultTitle boolean

conversationUniverse fields:

Field Type Description
universeId number
rootPlaceId number

rejectedParticipants[] item fields:

Field Type Description
rejectedReason string
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean
Status Description
401 0: Authorization has been denied for this request.
403 0: Token Validation Failed

POST /v2/start-group-conversation

Creates a new group conversation

Usage
import { fetchApi } from 'rozod';
import { postStartGroupConversation } from 'rozod/endpoints/chatv2';
const data = await fetchApi(postStartGroupConversation, {
body: { /* ... */ }
});
Field Type Description
participantUserIds number[]
title string
Field Type Description
conversation object See below
rejectedParticipants object[] See below
resultType 'Success'
statusMessage string

conversation fields:

Field Type Description
id number
title string
initiator object See below
hasUnreadMessages boolean
participants object[] See below
conversationType `“OneToOneConversation” “MultiUserConversation”
conversationTitle object See below
lastUpdated string
conversationUniverse object See below

initiator fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

participants[] item fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

conversationTitle fields:

Field Type Description
titleForViewer string
isDefaultTitle boolean

conversationUniverse fields:

Field Type Description
universeId number
rootPlaceId number

rejectedParticipants[] item fields:

Field Type Description
rejectedReason string
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean
Status Description
401 0: Authorization has been denied for this request.
403 0: Token Validation Failed

POST /v2/start-one-to-one-conversation

Creates a new one-on-one conversation

Usage
import { fetchApi } from 'rozod';
import { postStartOneToOneConversation } from 'rozod/endpoints/chatv2';
const data = await fetchApi(postStartOneToOneConversation, {
body: { /* ... */ }
});
Field Type Description
participantUserId number
Field Type Description
conversation object See below
rejectedParticipants object[] See below
resultType 'Success'
statusMessage string

conversation fields:

Field Type Description
id number
title string
initiator object See below
hasUnreadMessages boolean
participants object[] See below
conversationType `“OneToOneConversation” “MultiUserConversation”
conversationTitle object See below
lastUpdated string
conversationUniverse object See below

initiator fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

participants[] item fields:

Field Type Description
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean

conversationTitle fields:

Field Type Description
titleForViewer string
isDefaultTitle boolean

conversationUniverse fields:

Field Type Description
universeId number
rootPlaceId number

rejectedParticipants[] item fields:

Field Type Description
rejectedReason string
type `“User” “System”`
targetId number
name string
displayName string
hasVerifiedBadge boolean
Status Description
401 0: Authorization has been denied for this request.
403 0: Token Validation Failed

POST /v2/update-user-typing-status

Updates the status for whether a user is typing currently

Usage
import { fetchApi } from 'rozod';
import { postUpdateUserTypingStatus } from 'rozod/endpoints/chatv2';
const data = await fetchApi(postUpdateUserTypingStatus, {
body: { /* ... */ }
});
Field Type Description
conversationId number
isTyping boolean
Field Type Description
statusMessage string
Status Description
401 0: Authorization has been denied for this request.
403 0: Token Validation Failed