# Update a comment Updates an existing comment by its unique identifier. 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 Endpoint: PATCH /v2/comments/{id} Version: 2026-01-01.nova Security: bearerAuth ## Header parameters: - `Featurebase-Version` (string) API version for this request. Defaults to your organization's configured API version if not specified. Example: "2026-01-01.nova" ## Path parameters: - `id` (string, required) Comment unique identifier Example: "507f1f77bcf86cd799439011" ## Request fields (application/json): - `content` (string) Comment content in HTML format Example: "
This is my updated comment.
" - `isPrivate` (boolean,null) Whether the comment is private (only visible to admins) - `isPinned` (boolean,null) Whether the comment is pinned at the top Example: true - `inReview` (boolean,null) Whether the comment is pending moderation review - `createdAt` (string,null) Update the creation date (useful for imports) Example: "2025-01-15T10:30:00.000Z" - `upvotes` (integer,null) Set the upvotes count directly. Score will be recalculated as upvotes - downvotes. Example: 10 - `downvotes` (integer,null) Set the downvotes count directly. Score will be recalculated as upvotes - downvotes. Example: 2 ## Response 200 fields (application/json): - `object` (string, required) Object type identifier Enum: "comment" - `id` (string, required) Unique identifier Example: "507f1f77bcf86cd799439011" - `postId` (string,null, required) Post ID this comment belongs to Example: "507f1f77bcf86cd799439012" - `changelogId` (string,null, required) Changelog ID this comment belongs to Example: "507f1f77bcf86cd799439013" - `parentCommentId` (string,null, required) Parent comment ID for replies, null for root comments Example: "507f1f77bcf86cd799439014" - `content` (string, required) Comment content in HTML format Example: "This is a great idea!
" - `author` (object,null, required) - `author.id` (string,null, required) Author unique identifier Example: "507f1f77bcf86cd799439011" - `author.name` (string, required) Author display name Example: "John Doe" - `author.profilePicture` (string,null, required) Author profile picture URL Example: "https://cdn.example.com/avatars/john.png" - `author.type` (string, required) Type of user who authored the comment Enum: "admin", "customer", "guest", "integration", "bot", "lead" - `upvotes` (number, required) Number of upvotes Example: 5 - `downvotes` (number, required) Number of downvotes - `score` (number, required) Net score (upvotes - downvotes) Example: 5 - `isPrivate` (boolean, required) Whether the comment is private - `isDeleted` (boolean, required) Whether the comment is deleted - `isPinned` (boolean, required) Whether the comment is pinned - `inReview` (boolean, required) Whether the comment is in review - `isSpam` (boolean, required) Whether the comment is spam - `createdAt` (string, required) ISO 8601 timestamp when created Example: "2023-12-12T00:00:00.000Z" - `updatedAt` (string, required) ISO 8601 timestamp when updated Example: "2023-12-13T00:00:00.000Z" ## Response 400 fields (application/json): - `error` (object, required) - `error.type` (string, required) The type of error returned Enum: "invalid_request_error" - `error.code` (string, required) Machine-readable error code Enum: "invalid_id" - `error.message` (string, required) Human-readable error message Example: "An error occurred" - `error.param` (string) The parameter that caused the error (if applicable) Example: "id" - `error.status` (number, required) HTTP status code Enum: 400 ## Response 404 fields (application/json): - `error` (object, required) - `error.type` (string, required) The type of error returned Enum: "invalid_request_error" - `error.code` (string, required) Machine-readable error code Enum: "comment_not_found" - `error.message` (string, required) Human-readable error message Example: "An error occurred" - `error.param` (string) The parameter that caused the error (if applicable) Example: "id" - `error.status` (number, required) HTTP status code Enum: 404