Reference for the Chat v2 endpoints on Roblox.
Base URL: https://chat.roblox.com
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, {
| 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 */,
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 */,
| 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 */,
| 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 */,
| 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, {
| 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, {
| 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 */,
| 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, {
| 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, {
| 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, {
| 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, {
| 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, {
| 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, {
| 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, {
| 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, {
| 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 |