Update Comment
curl --request PATCH \
--url https://api.sublay.io/v8/:projectId/comments/:commentId \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": "<string>",
"metadata": {}
}
'import requests
url = "https://api.sublay.io/v8/:projectId/comments/:commentId"
payload = {
"content": "<string>",
"metadata": {}
}
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({content: '<string>', metadata: {}})
};
fetch('https://api.sublay.io/v8/:projectId/comments/:commentId', 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/comments/:commentId",
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([
'content' => '<string>',
'metadata' => [
]
]),
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/comments/:commentId"
payload := strings.NewReader("{\n \"content\": \"<string>\",\n \"metadata\": {}\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/comments/:commentId")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sublay.io/v8/:projectId/comments/:commentId")
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 \"content\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_bodyComment Endpoints
Update Comment
Edit a comment’s content and/or metadata
Update Comment
curl --request PATCH \
--url https://api.sublay.io/v8/:projectId/comments/:commentId \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": "<string>",
"metadata": {}
}
'import requests
url = "https://api.sublay.io/v8/:projectId/comments/:commentId"
payload = {
"content": "<string>",
"metadata": {}
}
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({content: '<string>', metadata: {}})
};
fetch('https://api.sublay.io/v8/:projectId/comments/:commentId', 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/comments/:commentId",
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([
'content' => '<string>',
'metadata' => [
]
]),
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/comments/:commentId"
payload := strings.NewReader("{\n \"content\": \"<string>\",\n \"metadata\": {}\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/comments/:commentId")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sublay.io/v8/:projectId/comments/:commentId")
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 \"content\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_bodyUpdates a comment’s content, its metadata, or both. Only the comment’s author, or a request with a service or master key, can update a comment.
Authentication required.
Path Parameters
string
required
The UUID of the comment to update.
Body Parameters
Both fields are individually optional, but at least one must be provided.string
The new text content for the comment. Leading and trailing whitespace is trimmed. Cannot be empty or only whitespace. Omit to leave the existing content untouched.
object
Arbitrary JSON metadata, up to 10 KB (10,240 bytes) as JSON. Replaces the stored metadata wholesale rather than merging into it.
Deleted and removed comments
A comment its author deleted, and a comment a moderator removed, can’t be edited: the request returns404 comment/not-found. This includes the author of a moderator-removed comment, who still sees it in full.
Blocks
Editing changes content in someone else’s space, so when themoderation bundle is installed, editing is refused with 404 comment/not-found when the author of the comment’s entity, or the author of the comment it replies to, has blocked the comment’s author. Deleting the comment is still allowed. Requests made with a master key aren’t subject to this check.
A comment on an entity whose author has blocked the caller is hidden from them, so when the caller isn’t the comment’s author, the edit is refused with 404 comment/not-found — the same response as a missing comment, not a 403. This check also applies only when the moderation bundle is installed, and requests made with a service or master key aren’t subject to it.
Response
Returns the updated Comment object in full, as the caller sees it.Error Responses
Missing token — 401
Missing token — 401
No
Authorization header was sent. The body is text/plain (Unauthorized), not JSON. An expired or invalid token returns 403 instead — see Authentication.Invalid Params — 400
Invalid Params — 400
Returned when
commentId isn’t a valid UUID.{ "error": "commentId: Invalid UUID format", "code": "comment/invalid-params" }
Invalid Body — 400
Invalid Body — 400
Returned when neither
content nor metadata is supplied, when content is an empty string or only whitespace, when metadata isn’t an object, or when metadata is larger than 10 KB.{ "error": "Either content or metadata must be provided", "code": "comment/invalid-body" }
Rejected by Webhook — 400
Rejected by Webhook — 400
Returned when your project’s
comment.updated validation webhook doesn’t approve the edit. Nothing is changed. error is the message your webhook responded with, when it sent one.{ "error": "Validation rejected", "code": "comment/webhook-validation-failed" }
Not Found — 404
Not Found — 404
Returned when the comment doesn’t exist, when its author deleted it or a moderator removed it (see Deleted and removed comments), or when a block refuses the edit — including when the caller isn’t the comment’s author and the author of the comment’s entity has blocked them (see Blocks).
{ "error": "Comment not found", "code": "comment/not-found" }
Forbidden — 403
Forbidden — 403
Returned when the caller isn’t the comment’s author and isn’t using a service or master key.
{ "error": "You do not have permission to update this comment.", "code": "comment/forbidden" }

