Post a comment on a work item. The comment is attached to the work item in the path and appears in its discussion immediately.
The author is taken from the credentials on the request and returned as actor_id — you cannot post a comment on behalf of another user.
Comments are not deduplicated
Nothing about a comment's body or external_id identifies it uniquely, so sending the same comment_html twice creates two comments. If your integration must post a comment at most once, send an external_id and look for it first with GET …/comments/?external_id=…&external_source=….
The comment body, as HTML — for example <p>Deployed the fix to staging.</p>. Plane derives the plain-text comment_stripped from it server-side, which is what search matches.
access:optionalstring
Visibility of the comment.
INTERNAL — visible to the project team
EXTERNAL — marked as visible outside the team, for example on a published project
Omit it to take the server's default. Change it later with a PATCH.
external_id:optionalstring
Your system's identifier for this comment, for sync and import correlation. Maximum 255 characters. Accepts null.
external_source:optionalstring
The system external_id came from, for example github or zendesk. Maximum 255 characters. Accepts null.
Create a comment
Post a comment on a work item. The comment is attached to the work item in the path and appears in its discussion immediately.
The author is taken from the credentials on the request and returned as
actor_id— you cannot post a comment on behalf of another user.Comments are not deduplicated
Nothing about a comment's body or
external_ididentifies it uniquely, so sending the samecomment_htmltwice creates two comments. If your integration must post a comment at most once, send anexternal_idand look for it first withGET …/comments/?external_id=…&external_source=….Path Parameters
slug:requiredstringThe workspace slug. It appears in your Plane URLs — in
https://app.plane.so/my-team/projects/, the slug ismy-team.project_id:requiredstring (uuid)The project the work item belongs to.
work_item_id:requiredstring (uuid)The work item to comment on.
Body Parameters
comment_html:requiredstringThe comment body, as HTML — for example
<p>Deployed the fix to staging.</p>. Plane derives the plain-textcomment_strippedfrom it server-side, which is what search matches.access:optionalstringVisibility of the comment.
INTERNAL— visible to the project teamEXTERNAL— marked as visible outside the team, for example on a published projectOmit it to take the server's default. Change it later with a
PATCH.external_id:optionalstringYour system's identifier for this comment, for sync and import correlation. Maximum 255 characters. Accepts
null.external_source:optionalstringThe system
external_idcame from, for examplegithuborzendesk. Maximum 255 characters. Acceptsnull.Scopes
projects.work_items.comments:writeErrors
400validation_errorcomment_html, or anaccessvalue outside the enum.401unauthorized403forbidden404resource_not_found409conflict429rate_limitedRetry-Afterheader before retrying.