Skip to main content
Comments

Update a comment

Updates an existing comment by its unique identifier.

PATCH
/v2/comments/{id}

You can update:

  • content - Comment text (HTML format)
  • isPrivate - Privacy status (admin-only visibility)
  • isPinned - Pinned status (displayed at top)
  • inReview - Moderation status

Content Format

Content should be formatted as HTML. For images:

  • External URLs in img src attributes are automatically pulled into our storage
  • Base64 encoded data URIs (data:image/...) are also supported and processed

Permissions

  • Comment authors can update their own comment content
  • Admin permissions required for:
    • isPrivate - Requires manage_comments_private permission
    • isPinned - Requires set_comment_pinned permission
    • inReview - Requires moderate_comments permission
    • Updating other users' comments - Requires moderate_comments permission

Response

Returns the updated comment object with all fields populated.

Errors

  • 400 - Invalid comment ID format or input
  • 403 - Not authorized to update this comment
  • 404 - Comment not found
Authorizationstringheaderrequired

API key as Bearer token. Use: Authorization: Bearer sk_...

idstringrequired

Comment unique identifier

Example: 507f1f77bcf86cd799439011
Featurebase-Versionenum<string>header

API version for this request. Defaults to your organization's configured API version if not specified.

Available options: 2026-08-19.orbit, 2026-01-01.nova, 2025-12-12.clover
Example: 2026-08-19.orbit

Body

application/json
contentstring

Comment content in HTML format

Minimum string length: 2
Example: <p>This is my updated comment.</p>
createdAtstring | null

Update the creation date (useful for imports)

Example: 2025-01-15T10:30:00.000Z
downvotesinteger | null

Set the downvotes count directly. Score will be recalculated as upvotes - downvotes.

Required range: 0 <= x
Example: 2
inReviewboolean | null

Whether the comment is pending moderation review

Example: false
isPinnedboolean | null

Whether the comment is pinned at the top

Example: true
isPrivateboolean | null

Whether the comment is private (only visible to admins)

Example: false
upvotesinteger | null

Set the upvotes count directly. Score will be recalculated as upvotes - downvotes.

Required range: 0 <= x
Example: 10

Response

application/json

Success

authorobject | nullrequired
changelogIdstring | nullrequired

Changelog ID this comment belongs to

Example: 507f1f77bcf86cd799439013
contentstringrequired

Comment content in HTML format

Example: <p>This is a great idea!</p>
createdAtstringrequired

ISO 8601 timestamp when created

Example: 2023-12-12T00:00:00.000Z
downvotesnumberrequired

Number of downvotes

Example: 0
idstringrequired

Unique identifier

Example: 507f1f77bcf86cd799439011
inReviewbooleanrequired

Whether the comment is in review

Example: false
isDeletedbooleanrequired

Whether the comment is deleted

Example: false
isPinnedbooleanrequired

Whether the comment is pinned

Example: false
isPrivatebooleanrequired

Whether the comment is private

Example: false
isSpambooleanrequired

Whether the comment is spam

Example: false
objectenum<string>required

Object type identifier

Available options: comment
Example: comment
parentCommentIdstring | nullrequired

Parent comment ID for replies, null for root comments

Example: 507f1f77bcf86cd799439014
postIdstring | nullrequired

Post ID this comment belongs to

Example: 507f1f77bcf86cd799439012
scorenumberrequired

Net score (upvotes - downvotes)

Example: 5
updatedAtstringrequired

ISO 8601 timestamp when updated

Example: 2023-12-13T00:00:00.000Z
upvotesnumberrequired

Number of upvotes

Example: 5