Moderate Message
curl --request PATCH \
--url https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"moderationStatus": "<string>",
"moderationReason": "<string>",
"actingUserId": "<string>"
}
'import requests
url = "https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation"
payload = {
"moderationStatus": "<string>",
"moderationReason": "<string>",
"actingUserId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
moderationStatus: '<string>',
moderationReason: '<string>',
actingUserId: '<string>'
})
};
fetch('https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'moderationStatus' => '<string>',
'moderationReason' => '<string>',
'actingUserId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation"
payload := strings.NewReader("{\n \"moderationStatus\": \"<string>\",\n \"moderationReason\": \"<string>\",\n \"actingUserId\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"moderationStatus\": \"<string>\",\n \"moderationReason\": \"<string>\",\n \"actingUserId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"moderationStatus\": \"<string>\",\n \"moderationReason\": \"<string>\",\n \"actingUserId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"moderationStatus": "<string>"
}Space — Moderation
Moderate Message
Approve or remove a chat message within a space
Moderate Message
curl --request PATCH \
--url https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"moderationStatus": "<string>",
"moderationReason": "<string>",
"actingUserId": "<string>"
}
'import requests
url = "https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation"
payload = {
"moderationStatus": "<string>",
"moderationReason": "<string>",
"actingUserId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
moderationStatus: '<string>',
moderationReason: '<string>',
actingUserId: '<string>'
})
};
fetch('https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'moderationStatus' => '<string>',
'moderationReason' => '<string>',
'actingUserId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation"
payload := strings.NewReader("{\n \"moderationStatus\": \"<string>\",\n \"moderationReason\": \"<string>\",\n \"actingUserId\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"moderationStatus\": \"<string>\",\n \"moderationReason\": \"<string>\",\n \"actingUserId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sublay.io/v8/:projectId/spaces/:spaceId/chat/messages/:messageId/moderation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"moderationStatus\": \"<string>\",\n \"moderationReason\": \"<string>\",\n \"actingUserId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"moderationStatus": "<string>"
}Takes a direct moderation action on a chat message in a space’s integrated conversation. Requires the caller to be a moderator or admin of the space.
Path Parameters
string
required
UUID of the space.
string
required
UUID of the chat message to moderate.
Body Parameters
string
required
The moderation action. Only
"removed" is supported — chat messages cannot be approved via this endpoint.string
Optional reason for the removal. Up to 1,000 characters.
string
Service or master key only: the moderator the key acts for. The request then has exactly that user’s moderation permissions; omit it to act as the project.
Response
string
Confirmation message.
string
The resulting status:
"removed".Error Responses
Not a Moderator — 403
Not a Moderator — 403
The user named by
actingUserId cannot moderate this space.{ "error": "Moderator access required", "code": "space/moderator-required" }
Acting User Not Found — 400
Acting User Not Found — 400
{ "error": "Acting user not found.", "code": "chat/acting-user-not-found" }
Unauthorized — 403
Unauthorized — 403
A user token sent an
actingUserId other than its own user.{ "error": "Unauthorized", "code": "chat/unauthorized" }

