From 4b5b43f190dc240e7648b53425544f89c9d70d8c Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2026 22:15:28 +0000 Subject: [PATCH 1/2] docs: add broadcast chat moderator endpoints to livestreaming docs --- docs.json | 5 +- livestream-api/chat/add-moderator.mdx | 13 ++ livestream-api/chat/list-moderators.mdx | 13 ++ livestream-api/chat/remove-moderator.mdx | 13 ++ openapi.json | 271 +++++++++++++++++++++++ 5 files changed, 314 insertions(+), 1 deletion(-) create mode 100644 livestream-api/chat/add-moderator.mdx create mode 100644 livestream-api/chat/list-moderators.mdx create mode 100644 livestream-api/chat/remove-moderator.mdx diff --git a/docs.json b/docs.json index 1d94f7ba9..5b54a3231 100644 --- a/docs.json +++ b/docs.json @@ -1291,7 +1291,10 @@ "livestream-api/chat/send-chat-message", "livestream-api/chat/mute-chat-user", "livestream-api/chat/unmute-chat-user", - "livestream-api/chat/delete-chat-message" + "livestream-api/chat/delete-chat-message", + "livestream-api/chat/list-moderators", + "livestream-api/chat/add-moderator", + "livestream-api/chat/remove-moderator" ] } ] diff --git a/livestream-api/chat/add-moderator.mdx b/livestream-api/chat/add-moderator.mdx new file mode 100644 index 000000000..2ff6b54c8 --- /dev/null +++ b/livestream-api/chat/add-moderator.mdx @@ -0,0 +1,13 @@ +--- +title: Add a Broadcast Moderator +sidebarTitle: Add a Broadcast Moderator +description: "POST /2/broadcasts/chat/moderators adds a user as a chat moderator for the authenticated user's broadcasts." +keywords: ["add broadcast moderator", "broadcast chat moderation", "POST broadcasts chat moderators", "live chat", "broadcast.write"] +openapi: "post /2/broadcasts/chat/moderators" +--- + +Adds a user as a chat moderator for the authenticated user's broadcasts. Moderators are scoped to the authenticated user, not to an individual broadcast, and can moderate chat across every broadcast that user hosts. + + +A user can have up to 20 moderators. Adding a 21st returns `400 Bad Request`. To remove an existing moderator first, use [Remove a Broadcast Moderator](/livestream-api/chat/remove-moderator). + diff --git a/livestream-api/chat/list-moderators.mdx b/livestream-api/chat/list-moderators.mdx new file mode 100644 index 000000000..37e6ed2b0 --- /dev/null +++ b/livestream-api/chat/list-moderators.mdx @@ -0,0 +1,13 @@ +--- +title: List Broadcast Moderators +sidebarTitle: List Broadcast Moderators +description: "GET /2/broadcasts/chat/moderators returns the list of chat moderators for the authenticated user's broadcasts." +keywords: ["list broadcast moderators", "broadcast chat moderation", "GET broadcasts chat moderators", "live chat", "broadcast.read"] +openapi: "get /2/broadcasts/chat/moderators" +--- + +Returns the list of users who moderate chat for the authenticated user's broadcasts. Moderators are scoped to the authenticated user, not to an individual broadcast, and take effect across every broadcast that user hosts. + + +A user can have up to 20 moderators. To add or remove a moderator, use [Add a Broadcast Moderator](/livestream-api/chat/add-moderator) or [Remove a Broadcast Moderator](/livestream-api/chat/remove-moderator). + diff --git a/livestream-api/chat/remove-moderator.mdx b/livestream-api/chat/remove-moderator.mdx new file mode 100644 index 000000000..625c823f7 --- /dev/null +++ b/livestream-api/chat/remove-moderator.mdx @@ -0,0 +1,13 @@ +--- +title: Remove a Broadcast Moderator +sidebarTitle: Remove a Broadcast Moderator +description: "DELETE /2/broadcasts/chat/moderators/:id removes a user from the authenticated user's chat moderators." +keywords: ["remove broadcast moderator", "broadcast chat moderation", "DELETE broadcasts chat moderators", "live chat", "broadcast.write"] +openapi: "delete /2/broadcasts/chat/moderators/{id}" +--- + +Removes a user from the authenticated user's chat moderators. `:id` is the numeric user id of the moderator to remove. Once removed, the user can no longer moderate chat in any of the authenticated user's broadcasts. + + +A user can have up to 20 moderators. To list current moderators, use [List Broadcast Moderators](/livestream-api/chat/list-moderators). + diff --git a/openapi.json b/openapi.json index 5907e7771..ab045855c 100644 --- a/openapi.json +++ b/openapi.json @@ -2185,6 +2185,170 @@ } } }, + "/2/broadcasts/chat/moderators": { + "get": { + "security": [ + { + "OAuth2UserToken": [ + "broadcast.read" + ] + }, + { + "UserToken": [] + } + ], + "tags": [ + "Broadcasts" + ], + "summary": "List broadcast moderators", + "description": "Returns the list of chat moderators for the authenticated user's broadcasts. A user can have up to 20 moderators.", + "operationId": "listBroadcastChatModerators", + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListBroadcastChatModeratorsResponse" + } + } + } + }, + "default": { + "description": "The request has failed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + }, + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/Problem" + } + } + } + } + } + }, + "post": { + "security": [ + { + "OAuth2UserToken": [ + "broadcast.read", + "broadcast.write" + ] + }, + { + "UserToken": [] + } + ], + "tags": [ + "Broadcasts" + ], + "summary": "Add a broadcast moderator", + "description": "Adds a user as a chat moderator for the authenticated user's broadcasts. A user can have up to 20 moderators; adding a 21st returns `400 Bad Request`.", + "operationId": "addBroadcastChatModerator", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddBroadcastChatModeratorRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddBroadcastChatModeratorResponse" + } + } + } + }, + "default": { + "description": "The request has failed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + }, + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/Problem" + } + } + } + } + } + } + }, + "/2/broadcasts/chat/moderators/{id}": { + "delete": { + "security": [ + { + "OAuth2UserToken": [ + "broadcast.read", + "broadcast.write" + ] + }, + { + "UserToken": [] + } + ], + "tags": [ + "Broadcasts" + ], + "summary": "Remove a broadcast moderator", + "description": "Removes a user from the authenticated user's chat moderators.", + "operationId": "removeBroadcastChatModerator", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "The numeric user id of the moderator to remove.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[1-9][0-9]{0,18}$" + }, + "style": "simple" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemoveBroadcastChatModeratorResponse" + } + } + } + }, + "default": { + "description": "The request has failed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + }, + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/Problem" + } + } + } + } + } + } + }, "/2/chat/conversations": { "get": { "security": [ @@ -17045,6 +17209,46 @@ }, "additionalProperties": false }, + "AddBroadcastChatModeratorRequest": { + "type": "object", + "required": [ + "user_id" + ], + "properties": { + "user_id": { + "type": "string", + "description": "The numeric user id to add as a chat moderator.", + "pattern": "^[1-9][0-9]{0,18}$" + } + }, + "additionalProperties": false + }, + "AddBroadcastChatModeratorResponse": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/AddBroadcastChatModeratorResponseData" + }, + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Problem" + } + } + } + }, + "AddBroadcastChatModeratorResponseData": { + "type": "object", + "required": [ + "added" + ], + "properties": { + "added": { + "type": "boolean", + "description": "Whether the user was added as a chat moderator." + } + } + }, "AddChatGroupMembersActionSignatures": { "type": "object", "required": [ @@ -24979,6 +25183,47 @@ } } }, + "ListBroadcastChatModeratorsResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "description": "The list of chat moderators for the authenticated user's broadcasts.", + "items": { + "$ref": "#/components/schemas/BroadcastChatModerator" + } + }, + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Problem" + } + }, + "meta": { + "type": "object", + "properties": { + "result_count": { + "type": "integer", + "description": "Number of items in the data array.", + "format": "int32" + } + } + } + } + }, + "BroadcastChatModerator": { + "type": "object", + "required": [ + "user_id" + ], + "properties": { + "user_id": { + "type": "string", + "description": "The numeric user id of the moderator.", + "pattern": "^[1-9][0-9]{0,18}$" + } + } + }, "ListBroadcastsResponse": { "type": "object", "properties": { @@ -27689,6 +27934,32 @@ } } }, + "RemoveBroadcastChatModeratorResponse": { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/RemoveBroadcastChatModeratorResponseData" + }, + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Problem" + } + } + } + }, + "RemoveBroadcastChatModeratorResponseData": { + "type": "object", + "required": [ + "removed" + ], + "properties": { + "removed": { + "type": "boolean", + "description": "Whether the user was removed as a chat moderator." + } + } + }, "RemoveListsMemberByUserIdResponse": { "type": "object", "properties": { From 86df90dd2054bf0f10105f0eeb03d17da7e957fc Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2026 22:18:10 +0000 Subject: [PATCH 2/2] docs: clarify moderator permissions on broadcast chat moderation endpoints --- livestream-api/chat/delete-chat-message.mdx | 4 +++- livestream-api/chat/mute-chat-user.mdx | 4 +++- livestream-api/chat/unmute-chat-user.mdx | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/livestream-api/chat/delete-chat-message.mdx b/livestream-api/chat/delete-chat-message.mdx index 3678d06ad..1312c0ef6 100644 --- a/livestream-api/chat/delete-chat-message.mdx +++ b/livestream-api/chat/delete-chat-message.mdx @@ -6,7 +6,9 @@ keywords: ["delete chat message", "broadcast chat moderation", "DELETE broadcast openapi: "delete /2/broadcasts/{id}/chat/{message_id}" --- -Removes a specific chat message from a running broadcast owned by the authenticated user. `:id` is the alphanumeric `broadcast_id`, and `:message_id` is the id of the chat message to delete — the `timestamp` returned by [Send a Chat Message](/livestream-api/chat/send-chat-message). +Removes a specific chat message from a running broadcast. `:id` is the alphanumeric `broadcast_id`, and `:message_id` is the id of the chat message to delete — the `timestamp` returned by [Send a Chat Message](/livestream-api/chat/send-chat-message). + +The authenticated user must be the broadcast owner or a chat moderator for the broadcast owner. See [List Broadcast Moderators](/livestream-api/chat/list-moderators) for how moderators are managed. To also stop the author from posting further messages, use [Mute a Chat User](/livestream-api/chat/mute-chat-user), which supports removing the prompting message in the same call. diff --git a/livestream-api/chat/mute-chat-user.mdx b/livestream-api/chat/mute-chat-user.mdx index 0a17b00a1..efc4f913d 100644 --- a/livestream-api/chat/mute-chat-user.mdx +++ b/livestream-api/chat/mute-chat-user.mdx @@ -6,7 +6,9 @@ keywords: ["mute chat user", "broadcast chat moderation", "time out", "POST broa openapi: "post /2/broadcasts/{id}/chat/mutes" --- -Prevents a user from posting further messages in a running broadcast chat. The authenticated user must own the broadcast. `:id` is the alphanumeric `broadcast_id`. +Prevents a user from posting further messages in a running broadcast chat. `:id` is the alphanumeric `broadcast_id`. + +The authenticated user must be the broadcast owner or a chat moderator for the broadcast owner. See [List Broadcast Moderators](/livestream-api/chat/list-moderators) for how moderators are managed. Pass an optional `end_at_ms` in the request body to time the mute out at a specific Unix timestamp in milliseconds. Omit `end_at_ms` to mute the user indefinitely. diff --git a/livestream-api/chat/unmute-chat-user.mdx b/livestream-api/chat/unmute-chat-user.mdx index 7424e9b67..33932768a 100644 --- a/livestream-api/chat/unmute-chat-user.mdx +++ b/livestream-api/chat/unmute-chat-user.mdx @@ -6,7 +6,9 @@ keywords: ["unmute chat user", "broadcast chat moderation", "DELETE broadcasts c openapi: "delete /2/broadcasts/{id}/chat/mutes/{user_id}" --- -Allows a muted user to post messages in a running broadcast chat again. The authenticated user must own the broadcast. `:id` is the alphanumeric `broadcast_id`, and `:user_id` is the numeric id of the user to unmute. +Allows a muted user to post messages in a running broadcast chat again. `:id` is the alphanumeric `broadcast_id`, and `:user_id` is the numeric id of the user to unmute. + +The authenticated user must be the broadcast owner or a chat moderator for the broadcast owner. See [List Broadcast Moderators](/livestream-api/chat/list-moderators) for how moderators are managed. To mute a user, use [Mute a Chat User](/livestream-api/chat/mute-chat-user).