Skip to content

Chat v2

Reference for the Chat v2 endpoints on Roblox.

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

MethodPathName
POST/v2/add-to-conversationpostAddToConversation
GET/v2/chat-settingsgetChatSettings
GET/v2/get-conversationsgetGetConversations
GET/v2/get-messagesgetGetMessages
GET/v2/get-rollout-settingsgetGetRolloutSettings
GET/v2/get-unread-conversation-countgetGetUnreadConversationCount
GET/v2/get-unread-conversationsgetGetUnreadConversations
GET/v2/get-unread-messagesgetGetUnreadMessages
GET/v2/get-user-conversationsgetGetUserConversations
POST/v2/mark-as-readpostMarkAsRead
POST/v2/mark-as-seenpostMarkAsSeen
GET/v2/metadatagetMetadata
GET/v2/multi-get-latest-messagesgetMultiGetLatestMessages
POST/v2/remove-from-conversationpostRemoveFromConversation
POST/v2/rename-group-conversationpostRenameGroupConversation
POST/v2/send-game-link-messagepostSendGameLinkMessage
POST/v2/send-messagepostSendMessage
POST/v2/start-cloud-edit-conversationpostStartCloudEditConversation
POST/v2/start-group-conversationpostStartGroupConversation
POST/v2/start-one-to-one-conversationpostStartOneToOneConversation
POST/v2/update-user-typing-statuspostUpdateUserTypingStatus

POST /v2/add-to-conversation

Adds users to an existing conversation

Usage
import { fetchApi } from 'rozod';
import { postAddToConversation } from 'rozod/lib/endpoints/chatv2';
const data = await fetchApi(postAddToConversation, {
body: { /* ... */ }
});
FieldTypeDescription
participantUserIdsnumber[]
conversationIdnumber
FieldTypeDescription
conversationIdnumber
rejectedParticipantsobject[]See below
resultType'Success'
statusMessagestring

rejectedParticipants[] item fields:

FieldTypeDescription
rejectedReasonstring
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean
StatusDescription
4010: Authorization has been denied for this request.
4030: 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/lib/endpoints/chatv2';
const data = await fetchApi(getChatSettings, undefined);
FieldTypeDescription
chatEnabledboolean
isActiveChatUserboolean
isConnectTabEnabledboolean
StatusDescription
4010: 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/lib/endpoints/chatv2';
const data = await fetchApi(getGetConversations, {
conversationIds: /* number */
});
NameTypeRequiredDescription
conversationIdsnumberYesIds of the conversations to be returned

Array of objects:

FieldTypeDescription
idnumber
titlestring
initiatorobjectSee below
hasUnreadMessagesboolean
participantsobject[]See below
conversationType`“OneToOneConversation""MultiUserConversation"
conversationTitleobjectSee below
lastUpdatedstring
conversationUniverseobjectSee below

initiator fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

participants[] item fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

conversationTitle fields:

FieldTypeDescription
titleForViewerstring
isDefaultTitleboolean

conversationUniverse fields:

FieldTypeDescription
universeIdnumber
rootPlaceIdnumber
StatusDescription
4010: 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/lib/endpoints/chatv2';
const data = await fetchApi(getGetMessages, {
conversationId: /* integer */,
pageSize: /* integer */,
exclusiveStartMessageId: /* string? */
});
NameTypeRequiredDescription
conversationIdintegerYes
pageSizeintegerYes
exclusiveStartMessageIdstring?No

Array of objects:

FieldTypeDescription
idstring
senderType`“User""System”`
sentstring
readboolean
messageType`“PlainText""Link"
decoratorsstring[]
senderTargetIdnumber
contentstring
linkobjectSee below
eventBasedobjectSee below

link fields:

FieldTypeDescription
type'Game'
gameobjectSee below

game fields:

FieldTypeDescription
universeIdnumber

eventBased fields:

FieldTypeDescription
type'SetConversationUniverse'
setConversationUniverseobjectSee below

setConversationUniverse fields:

FieldTypeDescription
actorUserIdnumber
universeIdnumber
StatusDescription
4010: 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/lib/endpoints/chatv2';
const data = await fetchApi(getGetRolloutSettings, {
featureNames: /* string */
});
NameTypeRequiredDescription
featureNamesstringYesstring array to request feature rollout settings
FieldTypeDescription
rolloutFeaturesobject[]See below

rolloutFeatures[] item fields:

FieldTypeDescription
featureName`“LuaChat""ConversationUniverse"
isRolloutEnabledboolean
StatusDescription
4010: 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/lib/endpoints/chatv2';
const data = await fetchApi(getGetUnreadConversationCount, undefined);
FieldTypeDescription
countnumber
StatusDescription
4010: 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/lib/endpoints/chatv2';
const data = await fetchApi(getGetUnreadConversations, {
pageNumber: /* integer */,
pageSize: /* integer */
});
NameTypeRequiredDescription
pageNumberintegerYes
pageSizeintegerYes

Array of objects:

FieldTypeDescription
idnumber
titlestring
initiatorobjectSee below
hasUnreadMessagesboolean
participantsobject[]See below
conversationType`“OneToOneConversation""MultiUserConversation"
conversationTitleobjectSee below
lastUpdatedstring
conversationUniverseobjectSee below

initiator fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

participants[] item fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

conversationTitle fields:

FieldTypeDescription
titleForViewerstring
isDefaultTitleboolean

conversationUniverse fields:

FieldTypeDescription
universeIdnumber
rootPlaceIdnumber
StatusDescription
4010: 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/lib/endpoints/chatv2';
const data = await fetchApi(getGetUnreadMessages, {
conversationIds: /* number */,
pageSize: /* integer */
});
NameTypeRequiredDescription
conversationIdsnumberYes
pageSizeintegerYes

Array of objects:

FieldTypeDescription
conversationIdnumber
chatMessagesobject[]See below

chatMessages[] item fields:

FieldTypeDescription
idstring
senderType`“User""System”`
sentstring
readboolean
messageType`“PlainText""Link"
decoratorsstring[]
senderTargetIdnumber
contentstring
linkobjectSee below
eventBasedobjectSee below

link fields:

FieldTypeDescription
type'Game'
gameobjectSee below

game fields:

FieldTypeDescription
universeIdobject

eventBased fields:

FieldTypeDescription
type'SetConversationUniverse'
setConversationUniverseobjectSee below

setConversationUniverse fields:

FieldTypeDescription
actorUserIdobject
universeIdobject
StatusDescription
4010: 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/lib/endpoints/chatv2';
const data = await fetchApi(getGetUserConversations, {
pageNumber: /* integer */,
pageSize: /* integer */
});
NameTypeRequiredDescription
pageNumberintegerYes
pageSizeintegerYes

Array of objects:

FieldTypeDescription
idnumber
titlestring
initiatorobjectSee below
hasUnreadMessagesboolean
participantsobject[]See below
conversationType`“OneToOneConversation""MultiUserConversation"
conversationTitleobjectSee below
lastUpdatedstring
conversationUniverseobjectSee below

initiator fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

participants[] item fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

conversationTitle fields:

FieldTypeDescription
titleForViewerstring
isDefaultTitleboolean

conversationUniverse fields:

FieldTypeDescription
universeIdnumber
rootPlaceIdnumber
StatusDescription
4010: 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/lib/endpoints/chatv2';
const data = await fetchApi(postMarkAsRead, {
body: { /* ... */ }
});
FieldTypeDescription
conversationIdnumber
endMessageIdstring
FieldTypeDescription
resultType'Success'
StatusDescription
4010: Authorization has been denied for this request.
4030: Token Validation Failed

POST /v2/mark-as-seen

Mark the specified conversation messages as seen

Usage
import { fetchApi } from 'rozod';
import { postMarkAsSeen } from 'rozod/lib/endpoints/chatv2';
const data = await fetchApi(postMarkAsSeen, {
body: { /* ... */ }
});
FieldTypeDescription
conversationsToMarkSeennumber[]
FieldTypeDescription
resultType'Success'
StatusDescription
4010: Authorization has been denied for this request.
4030: Token Validation Failed

GET /v2/metadata

Get Chat metadata.

Usage
import { fetchApi } from 'rozod';
import { getMetadata } from 'rozod/lib/endpoints/chatv2';
const data = await fetchApi(getMetadata, undefined);
FieldTypeDescription
isChatEnabledByPrivacySetting`01
languageForPrivacySettingUnavailablestring
maxConversationTitleLengthnumber
numberOfMembersForPartyChromenumber
partyChromeDisplayTimeStampIntervalnumber
signalRDisconnectionResponseInMillisecondsnumber
typingInChatFromSenderThrottleMsnumber
typingInChatForReceiverExpirationMsnumber
relativeValueToRecordUiPerformancenumber
isChatDataFromLocalStorageEnabledboolean
chatDataFromLocalStorageExpirationSecondsnumber
isUsingCacheToLoadFriendsInfoEnabledboolean
cachedDataFromLocalStorageExpirationMSnumber
senderTypesForUnknownMessageTypeErrorstring[]
isInvalidMessageTypeFallbackEnabledboolean
isRespectingMessageTypeEnabledboolean
validMessageTypesWhiteListstring[]
shouldRespectConversationHasUnreadMessageToMarkAsReadboolean
isAliasChatForClientSideEnabledboolean
isPlayTogetherForGameCardsEnabledboolean
isRoactChatEnabledboolean
webChatEventSampleRatenumber
isPlatformChatApiEnabledboolean
StatusDescription
4010: 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/lib/endpoints/chatv2';
const data = await fetchApi(getMultiGetLatestMessages, {
conversationIds: /* number */,
pageSize: /* integer */
});
NameTypeRequiredDescription
conversationIdsnumberYes
pageSizeintegerYes

Array of objects:

FieldTypeDescription
conversationIdnumber
chatMessagesobject[]See below

chatMessages[] item fields:

FieldTypeDescription
idstring
senderType`“User""System”`
sentstring
readboolean
messageType`“PlainText""Link"
decoratorsstring[]
senderTargetIdnumber
contentstring
linkobjectSee below
eventBasedobjectSee below

link fields:

FieldTypeDescription
type'Game'
gameobjectSee below

game fields:

FieldTypeDescription
universeIdobject

eventBased fields:

FieldTypeDescription
type'SetConversationUniverse'
setConversationUniverseobjectSee below

setConversationUniverse fields:

FieldTypeDescription
actorUserIdobject
universeIdobject
StatusDescription
4010: 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/lib/endpoints/chatv2';
const data = await fetchApi(postRemoveFromConversation, {
body: { /* ... */ }
});
FieldTypeDescription
participantUserIdnumber
conversationIdnumber
FieldTypeDescription
conversationIdnumber
resultType'Success'
statusMessagestring
StatusDescription
4010: Authorization has been denied for this request.
4030: Token Validation Failed

POST /v2/rename-group-conversation

Renames the title of an existing conversation

Usage
import { fetchApi } from 'rozod';
import { postRenameGroupConversation } from 'rozod/lib/endpoints/chatv2';
const data = await fetchApi(postRenameGroupConversation, {
body: { /* ... */ }
});
FieldTypeDescription
conversationIdnumber
newTitlestring
FieldTypeDescription
conversationTitlestring
resultType`“Success""Moderated"
titleobjectSee below
statusMessagestring

title fields:

FieldTypeDescription
titleForViewerstring
isDefaultTitleboolean
StatusDescription
4010: Authorization has been denied for this request.
4030: Token Validation Failed

POST /v2/send-game-link-message

Usage
import { fetchApi } from 'rozod';
import { postSendGameLinkMessage } from 'rozod/lib/endpoints/chatv2';
const data = await fetchApi(postSendGameLinkMessage, {
body: { /* ... */ }
});
FieldTypeDescription
universeIdnumber
isExperienceInviteboolean
userIdnumber
placeIdnumber
conversationIdnumber
decoratorsstring[]
FieldTypeDescription
chatMessageLinkType'Game'
messageIdstring
sentstring
messageType`“PlainText""Link"
resultType`“Success""Moderated"
statusMessagestring
StatusDescription
4010: Authorization has been denied for this request.
4030: Token Validation Failed

POST /v2/send-message

Sends a chat message

Usage
import { fetchApi } from 'rozod';
import { postSendMessage } from 'rozod/lib/endpoints/chatv2';
const data = await fetchApi(postSendMessage, {
body: { /* ... */ }
});
FieldTypeDescription
messagestring
isExperienceInviteboolean
userIdnumber
conversationIdnumber
decoratorsstring[]
FieldTypeDescription
contentstring
filteredForReceiversboolean
messageIdstring
sentstring
messageType`“PlainText""Link"
resultType`“Success""Moderated"
statusMessagestring
StatusDescription
4010: Authorization has been denied for this request.
4030: Token Validation Failed

POST /v2/start-cloud-edit-conversation

Creates a new cloud edit conversation

Usage
import { fetchApi } from 'rozod';
import { postStartCloudEditConversation } from 'rozod/lib/endpoints/chatv2';
const data = await fetchApi(postStartCloudEditConversation, {
body: { /* ... */ }
});
FieldTypeDescription
placeIdnumber
FieldTypeDescription
conversationobjectSee below
rejectedParticipantsobject[]See below
resultType'Success'
statusMessagestring

conversation fields:

FieldTypeDescription
idnumber
titlestring
initiatorobjectSee below
hasUnreadMessagesboolean
participantsobject[]See below
conversationType`“OneToOneConversation""MultiUserConversation"
conversationTitleobjectSee below
lastUpdatedstring
conversationUniverseobjectSee below

initiator fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

participants[] item fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

conversationTitle fields:

FieldTypeDescription
titleForViewerstring
isDefaultTitleboolean

conversationUniverse fields:

FieldTypeDescription
universeIdnumber
rootPlaceIdnumber

rejectedParticipants[] item fields:

FieldTypeDescription
rejectedReasonstring
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean
StatusDescription
4010: Authorization has been denied for this request.
4030: Token Validation Failed

POST /v2/start-group-conversation

Creates a new group conversation

Usage
import { fetchApi } from 'rozod';
import { postStartGroupConversation } from 'rozod/lib/endpoints/chatv2';
const data = await fetchApi(postStartGroupConversation, {
body: { /* ... */ }
});
FieldTypeDescription
participantUserIdsnumber[]
titlestring
FieldTypeDescription
conversationobjectSee below
rejectedParticipantsobject[]See below
resultType'Success'
statusMessagestring

conversation fields:

FieldTypeDescription
idnumber
titlestring
initiatorobjectSee below
hasUnreadMessagesboolean
participantsobject[]See below
conversationType`“OneToOneConversation""MultiUserConversation"
conversationTitleobjectSee below
lastUpdatedstring
conversationUniverseobjectSee below

initiator fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

participants[] item fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

conversationTitle fields:

FieldTypeDescription
titleForViewerstring
isDefaultTitleboolean

conversationUniverse fields:

FieldTypeDescription
universeIdnumber
rootPlaceIdnumber

rejectedParticipants[] item fields:

FieldTypeDescription
rejectedReasonstring
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean
StatusDescription
4010: Authorization has been denied for this request.
4030: 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/lib/endpoints/chatv2';
const data = await fetchApi(postStartOneToOneConversation, {
body: { /* ... */ }
});
FieldTypeDescription
participantUserIdnumber
FieldTypeDescription
conversationobjectSee below
rejectedParticipantsobject[]See below
resultType'Success'
statusMessagestring

conversation fields:

FieldTypeDescription
idnumber
titlestring
initiatorobjectSee below
hasUnreadMessagesboolean
participantsobject[]See below
conversationType`“OneToOneConversation""MultiUserConversation"
conversationTitleobjectSee below
lastUpdatedstring
conversationUniverseobjectSee below

initiator fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

participants[] item fields:

FieldTypeDescription
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean

conversationTitle fields:

FieldTypeDescription
titleForViewerstring
isDefaultTitleboolean

conversationUniverse fields:

FieldTypeDescription
universeIdnumber
rootPlaceIdnumber

rejectedParticipants[] item fields:

FieldTypeDescription
rejectedReasonstring
type`“User""System”`
targetIdnumber
namestring
displayNamestring
hasVerifiedBadgeboolean
StatusDescription
4010: Authorization has been denied for this request.
4030: 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/lib/endpoints/chatv2';
const data = await fetchApi(postUpdateUserTypingStatus, {
body: { /* ... */ }
});
FieldTypeDescription
conversationIdnumber
isTypingboolean
FieldTypeDescription
statusMessagestring
StatusDescription
4010: Authorization has been denied for this request.
4030: Token Validation Failed