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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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/lib/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 |