> For the complete documentation index, see [llms.txt](https://argos-ci.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://argos-ci.com/docs/api-reference/reference/comments.md).

# Comments

Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions.

## List the comments on a build

> List the comments on a build, with pagination.

````json
{"openapi":"3.2.0","info":{"title":"Argos API","version":"2.0.0"},"tags":[{"name":"Comments","description":"Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions."}],"servers":[{"url":"https://api.argos-ci.com/v2","description":"API Endpoint"}],"security":[{"personalAccessToken":[]}],"components":{"securitySchemes":{"personalAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"Personal Access Token","description":"Authenticate as a **user** with a personal access token.\n\nSend it as a bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer <personal-access-token>\n```\n\nPersonal access tokens act on behalf of the user that created them\nand are required by endpoints that perform user actions, such as\nreviewing builds and posting comments."}},"schemas":{"BuildNumber":{"description":"The build number","type":"string"},"Comment":{"type":"object","properties":{"id":{"type":"string"},"buildId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root comment ID when this comment is a reply."},"body":{"description":"Rich-text JSON content of the comment."},"text":{"type":"string","description":"Plain-text rendering of the comment content."},"author":{"anyOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"screenshotDiffId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Screenshot diff this comment is anchored to, if any."},"anchor":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"],"additionalProperties":false}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},{"type":"null"}],"description":"Where the comment points on its screenshot diff. Null means the whole diff."},"pending":{"type":"boolean","description":"Whether the comment belongs to a pending (unsubmitted) review and is only visible to its author."},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the thread was resolved, null if not resolved. Only set on a root comment."},"editedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the comment was last edited, null if never edited."},"createdAt":{"type":"string","description":"Date the comment was posted."},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji used for the reaction."},"count":{"type":"number","description":"Number of users who reacted with this emoji."},"users":{"type":"array","items":{"$ref":"#/components/schemas/User"},"description":"The users who reacted with this emoji."}},"required":["emoji","count","users"],"additionalProperties":false,"description":"Reactions of a single emoji on a comment."}}},"required":["id","buildId","threadId","body","text","author","screenshotDiffId","anchor","pending","resolvedAt","editedAt","createdAt","reactions"],"additionalProperties":false,"description":"A comment posted on a build."},"User":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","slug","name"],"additionalProperties":false,"description":"A user."},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["error"],"additionalProperties":false,"description":"Error response"}}},"paths":{"/projects/{owner}/{project}/builds/{buildNumber}/comments":{"get":{"operationId":"listComments","summary":"List the comments on a build","description":"List the comments on a build, with pagination.","tags":["Comments"],"parameters":[{"in":"path","name":"owner","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"project","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"buildNumber","schema":{"$ref":"#/components/schemas/BuildNumber"},"required":true,"description":"The build number"}],"responses":{"200":{"description":"Build comments, oldest first. Replies carry a threadId pointing at their root comment.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Comment"}}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Post a comment (or reply) on a build

> Post a comment on a build. Start a new thread, reply to an existing one with \`threadId\`, optionally anchor the comment to a screenshot diff, or attach it to your pending review with \`addToReview\`.

````json
{"openapi":"3.2.0","info":{"title":"Argos API","version":"2.0.0"},"tags":[{"name":"Comments","description":"Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions."}],"servers":[{"url":"https://api.argos-ci.com/v2","description":"API Endpoint"}],"security":[{"personalAccessToken":[]}],"components":{"securitySchemes":{"personalAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"Personal Access Token","description":"Authenticate as a **user** with a personal access token.\n\nSend it as a bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer <personal-access-token>\n```\n\nPersonal access tokens act on behalf of the user that created them\nand are required by endpoints that perform user actions, such as\nreviewing builds and posting comments."}},"schemas":{"BuildNumber":{"description":"The build number","type":"string"},"Comment":{"type":"object","properties":{"id":{"type":"string"},"buildId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root comment ID when this comment is a reply."},"body":{"description":"Rich-text JSON content of the comment."},"text":{"type":"string","description":"Plain-text rendering of the comment content."},"author":{"anyOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"screenshotDiffId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Screenshot diff this comment is anchored to, if any."},"anchor":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"],"additionalProperties":false}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},{"type":"null"}],"description":"Where the comment points on its screenshot diff. Null means the whole diff."},"pending":{"type":"boolean","description":"Whether the comment belongs to a pending (unsubmitted) review and is only visible to its author."},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the thread was resolved, null if not resolved. Only set on a root comment."},"editedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the comment was last edited, null if never edited."},"createdAt":{"type":"string","description":"Date the comment was posted."},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji used for the reaction."},"count":{"type":"number","description":"Number of users who reacted with this emoji."},"users":{"type":"array","items":{"$ref":"#/components/schemas/User"},"description":"The users who reacted with this emoji."}},"required":["emoji","count","users"],"additionalProperties":false,"description":"Reactions of a single emoji on a comment."}}},"required":["id","buildId","threadId","body","text","author","screenshotDiffId","anchor","pending","resolvedAt","editedAt","createdAt","reactions"],"additionalProperties":false,"description":"A comment posted on a build."},"User":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","slug","name"],"additionalProperties":false,"description":"A user."},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["error"],"additionalProperties":false,"description":"Error response"}}},"paths":{"/projects/{owner}/{project}/builds/{buildNumber}/comments":{"post":{"operationId":"createComment","summary":"Post a comment (or reply) on a build","description":"Post a comment on a build. Start a new thread, reply to an existing one with `threadId`, optionally anchor the comment to a screenshot diff, or attach it to your pending review with `addToReview`.","tags":["Comments"],"parameters":[{"in":"path","name":"owner","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"project","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"buildNumber","schema":{"$ref":"#/components/schemas/BuildNumber"},"required":true,"description":"The build number"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"anyOf":[{"type":"string"},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}],"description":"Comment content. Either Markdown text or the JSON representation of a rich-text document."},"threadId":{"description":"Root comment ID to reply to.","type":"string"},"screenshotDiffId":{"description":"Screenshot diff to anchor the comment to. Required when anchor is set.","type":"string"},"anchor":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"]},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"]}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},"addToReview":{"description":"Attach the comment to your pending review (created if needed) instead of posting it immediately. Ignored for replies, which inherit their thread's review.","type":"boolean"}},"required":["body"]}}}},"responses":{"201":{"description":"Comment created successfully — returns the comment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Get a single comment on a build

> Retrieve a single comment on a build by its ID.

````json
{"openapi":"3.2.0","info":{"title":"Argos API","version":"2.0.0"},"tags":[{"name":"Comments","description":"Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions."}],"servers":[{"url":"https://api.argos-ci.com/v2","description":"API Endpoint"}],"security":[{"personalAccessToken":[]}],"components":{"securitySchemes":{"personalAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"Personal Access Token","description":"Authenticate as a **user** with a personal access token.\n\nSend it as a bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer <personal-access-token>\n```\n\nPersonal access tokens act on behalf of the user that created them\nand are required by endpoints that perform user actions, such as\nreviewing builds and posting comments."}},"schemas":{"BuildNumber":{"description":"The build number","type":"string"},"Comment":{"type":"object","properties":{"id":{"type":"string"},"buildId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root comment ID when this comment is a reply."},"body":{"description":"Rich-text JSON content of the comment."},"text":{"type":"string","description":"Plain-text rendering of the comment content."},"author":{"anyOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"screenshotDiffId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Screenshot diff this comment is anchored to, if any."},"anchor":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"],"additionalProperties":false}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},{"type":"null"}],"description":"Where the comment points on its screenshot diff. Null means the whole diff."},"pending":{"type":"boolean","description":"Whether the comment belongs to a pending (unsubmitted) review and is only visible to its author."},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the thread was resolved, null if not resolved. Only set on a root comment."},"editedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the comment was last edited, null if never edited."},"createdAt":{"type":"string","description":"Date the comment was posted."},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji used for the reaction."},"count":{"type":"number","description":"Number of users who reacted with this emoji."},"users":{"type":"array","items":{"$ref":"#/components/schemas/User"},"description":"The users who reacted with this emoji."}},"required":["emoji","count","users"],"additionalProperties":false,"description":"Reactions of a single emoji on a comment."}}},"required":["id","buildId","threadId","body","text","author","screenshotDiffId","anchor","pending","resolvedAt","editedAt","createdAt","reactions"],"additionalProperties":false,"description":"A comment posted on a build."},"User":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","slug","name"],"additionalProperties":false,"description":"A user."},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["error"],"additionalProperties":false,"description":"Error response"}}},"paths":{"/projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}":{"get":{"operationId":"getComment","summary":"Get a single comment on a build","description":"Retrieve a single comment on a build by its ID.","tags":["Comments"],"parameters":[{"in":"path","name":"owner","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"project","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"buildNumber","schema":{"$ref":"#/components/schemas/BuildNumber"},"required":true,"description":"The build number"},{"in":"path","name":"commentId","schema":{"type":"string","description":"The ID of the comment"},"required":true,"description":"The ID of the comment"}],"responses":{"200":{"description":"Comment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Delete a comment on a build

> Delete a comment on a build. Only the comment's author can delete it.

````json
{"openapi":"3.2.0","info":{"title":"Argos API","version":"2.0.0"},"tags":[{"name":"Comments","description":"Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions."}],"servers":[{"url":"https://api.argos-ci.com/v2","description":"API Endpoint"}],"security":[{"personalAccessToken":[]}],"components":{"securitySchemes":{"personalAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"Personal Access Token","description":"Authenticate as a **user** with a personal access token.\n\nSend it as a bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer <personal-access-token>\n```\n\nPersonal access tokens act on behalf of the user that created them\nand are required by endpoints that perform user actions, such as\nreviewing builds and posting comments."}},"schemas":{"BuildNumber":{"description":"The build number","type":"string"},"Comment":{"type":"object","properties":{"id":{"type":"string"},"buildId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root comment ID when this comment is a reply."},"body":{"description":"Rich-text JSON content of the comment."},"text":{"type":"string","description":"Plain-text rendering of the comment content."},"author":{"anyOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"screenshotDiffId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Screenshot diff this comment is anchored to, if any."},"anchor":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"],"additionalProperties":false}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},{"type":"null"}],"description":"Where the comment points on its screenshot diff. Null means the whole diff."},"pending":{"type":"boolean","description":"Whether the comment belongs to a pending (unsubmitted) review and is only visible to its author."},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the thread was resolved, null if not resolved. Only set on a root comment."},"editedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the comment was last edited, null if never edited."},"createdAt":{"type":"string","description":"Date the comment was posted."},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji used for the reaction."},"count":{"type":"number","description":"Number of users who reacted with this emoji."},"users":{"type":"array","items":{"$ref":"#/components/schemas/User"},"description":"The users who reacted with this emoji."}},"required":["emoji","count","users"],"additionalProperties":false,"description":"Reactions of a single emoji on a comment."}}},"required":["id","buildId","threadId","body","text","author","screenshotDiffId","anchor","pending","resolvedAt","editedAt","createdAt","reactions"],"additionalProperties":false,"description":"A comment posted on a build."},"User":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","slug","name"],"additionalProperties":false,"description":"A user."},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["error"],"additionalProperties":false,"description":"Error response"}}},"paths":{"/projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}":{"delete":{"operationId":"deleteComment","summary":"Delete a comment on a build","description":"Delete a comment on a build. Only the comment's author can delete it.","tags":["Comments"],"parameters":[{"in":"path","name":"owner","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"project","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"buildNumber","schema":{"$ref":"#/components/schemas/BuildNumber"},"required":true,"description":"The build number"},{"in":"path","name":"commentId","schema":{"type":"string","description":"The ID of the comment"},"required":true,"description":"The ID of the comment"}],"responses":{"200":{"description":"Comment deleted successfully — returns the comment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Update a comment on a build

> Update the body of a comment on a build. Only the comment's author can edit it.

````json
{"openapi":"3.2.0","info":{"title":"Argos API","version":"2.0.0"},"tags":[{"name":"Comments","description":"Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions."}],"servers":[{"url":"https://api.argos-ci.com/v2","description":"API Endpoint"}],"security":[{"personalAccessToken":[]}],"components":{"securitySchemes":{"personalAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"Personal Access Token","description":"Authenticate as a **user** with a personal access token.\n\nSend it as a bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer <personal-access-token>\n```\n\nPersonal access tokens act on behalf of the user that created them\nand are required by endpoints that perform user actions, such as\nreviewing builds and posting comments."}},"schemas":{"BuildNumber":{"description":"The build number","type":"string"},"Comment":{"type":"object","properties":{"id":{"type":"string"},"buildId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root comment ID when this comment is a reply."},"body":{"description":"Rich-text JSON content of the comment."},"text":{"type":"string","description":"Plain-text rendering of the comment content."},"author":{"anyOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"screenshotDiffId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Screenshot diff this comment is anchored to, if any."},"anchor":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"],"additionalProperties":false}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},{"type":"null"}],"description":"Where the comment points on its screenshot diff. Null means the whole diff."},"pending":{"type":"boolean","description":"Whether the comment belongs to a pending (unsubmitted) review and is only visible to its author."},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the thread was resolved, null if not resolved. Only set on a root comment."},"editedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the comment was last edited, null if never edited."},"createdAt":{"type":"string","description":"Date the comment was posted."},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji used for the reaction."},"count":{"type":"number","description":"Number of users who reacted with this emoji."},"users":{"type":"array","items":{"$ref":"#/components/schemas/User"},"description":"The users who reacted with this emoji."}},"required":["emoji","count","users"],"additionalProperties":false,"description":"Reactions of a single emoji on a comment."}}},"required":["id","buildId","threadId","body","text","author","screenshotDiffId","anchor","pending","resolvedAt","editedAt","createdAt","reactions"],"additionalProperties":false,"description":"A comment posted on a build."},"User":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","slug","name"],"additionalProperties":false,"description":"A user."},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["error"],"additionalProperties":false,"description":"Error response"}}},"paths":{"/projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}":{"patch":{"operationId":"updateComment","summary":"Update a comment on a build","description":"Update the body of a comment on a build. Only the comment's author can edit it.","tags":["Comments"],"parameters":[{"in":"path","name":"owner","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"project","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"buildNumber","schema":{"$ref":"#/components/schemas/BuildNumber"},"required":true,"description":"The build number"},{"in":"path","name":"commentId","schema":{"type":"string","description":"The ID of the comment"},"required":true,"description":"The ID of the comment"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"anyOf":[{"type":"string"},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}],"description":"Comment content. Either Markdown text or the JSON representation of a rich-text document."}},"required":["body"]}}}},"responses":{"200":{"description":"Comment updated successfully — returns the comment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Add an emoji reaction to a comment

> Add an emoji reaction to a comment on behalf of the authenticated user.

````json
{"openapi":"3.2.0","info":{"title":"Argos API","version":"2.0.0"},"tags":[{"name":"Comments","description":"Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions."}],"servers":[{"url":"https://api.argos-ci.com/v2","description":"API Endpoint"}],"security":[{"personalAccessToken":[]}],"components":{"securitySchemes":{"personalAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"Personal Access Token","description":"Authenticate as a **user** with a personal access token.\n\nSend it as a bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer <personal-access-token>\n```\n\nPersonal access tokens act on behalf of the user that created them\nand are required by endpoints that perform user actions, such as\nreviewing builds and posting comments."}},"schemas":{"BuildNumber":{"description":"The build number","type":"string"},"Comment":{"type":"object","properties":{"id":{"type":"string"},"buildId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root comment ID when this comment is a reply."},"body":{"description":"Rich-text JSON content of the comment."},"text":{"type":"string","description":"Plain-text rendering of the comment content."},"author":{"anyOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"screenshotDiffId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Screenshot diff this comment is anchored to, if any."},"anchor":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"],"additionalProperties":false}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},{"type":"null"}],"description":"Where the comment points on its screenshot diff. Null means the whole diff."},"pending":{"type":"boolean","description":"Whether the comment belongs to a pending (unsubmitted) review and is only visible to its author."},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the thread was resolved, null if not resolved. Only set on a root comment."},"editedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the comment was last edited, null if never edited."},"createdAt":{"type":"string","description":"Date the comment was posted."},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji used for the reaction."},"count":{"type":"number","description":"Number of users who reacted with this emoji."},"users":{"type":"array","items":{"$ref":"#/components/schemas/User"},"description":"The users who reacted with this emoji."}},"required":["emoji","count","users"],"additionalProperties":false,"description":"Reactions of a single emoji on a comment."}}},"required":["id","buildId","threadId","body","text","author","screenshotDiffId","anchor","pending","resolvedAt","editedAt","createdAt","reactions"],"additionalProperties":false,"description":"A comment posted on a build."},"User":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","slug","name"],"additionalProperties":false,"description":"A user."},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["error"],"additionalProperties":false,"description":"Error response"}}},"paths":{"/projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}/reactions":{"post":{"operationId":"addCommentReaction","summary":"Add an emoji reaction to a comment","description":"Add an emoji reaction to a comment on behalf of the authenticated user.","tags":["Comments"],"parameters":[{"in":"path","name":"owner","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"project","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"buildNumber","schema":{"$ref":"#/components/schemas/BuildNumber"},"required":true,"description":"The build number"},{"in":"path","name":"commentId","schema":{"type":"string","description":"The ID of the comment"},"required":true,"description":"The ID of the comment"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji to react with."}},"required":["emoji"]}}}},"responses":{"200":{"description":"Reaction added — returns the comment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Remove an emoji reaction from a comment

> Remove an emoji reaction previously added by the authenticated user from a comment.

````json
{"openapi":"3.2.0","info":{"title":"Argos API","version":"2.0.0"},"tags":[{"name":"Comments","description":"Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions."}],"servers":[{"url":"https://api.argos-ci.com/v2","description":"API Endpoint"}],"security":[{"personalAccessToken":[]}],"components":{"securitySchemes":{"personalAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"Personal Access Token","description":"Authenticate as a **user** with a personal access token.\n\nSend it as a bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer <personal-access-token>\n```\n\nPersonal access tokens act on behalf of the user that created them\nand are required by endpoints that perform user actions, such as\nreviewing builds and posting comments."}},"schemas":{"BuildNumber":{"description":"The build number","type":"string"},"Comment":{"type":"object","properties":{"id":{"type":"string"},"buildId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root comment ID when this comment is a reply."},"body":{"description":"Rich-text JSON content of the comment."},"text":{"type":"string","description":"Plain-text rendering of the comment content."},"author":{"anyOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"screenshotDiffId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Screenshot diff this comment is anchored to, if any."},"anchor":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"],"additionalProperties":false}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},{"type":"null"}],"description":"Where the comment points on its screenshot diff. Null means the whole diff."},"pending":{"type":"boolean","description":"Whether the comment belongs to a pending (unsubmitted) review and is only visible to its author."},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the thread was resolved, null if not resolved. Only set on a root comment."},"editedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the comment was last edited, null if never edited."},"createdAt":{"type":"string","description":"Date the comment was posted."},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji used for the reaction."},"count":{"type":"number","description":"Number of users who reacted with this emoji."},"users":{"type":"array","items":{"$ref":"#/components/schemas/User"},"description":"The users who reacted with this emoji."}},"required":["emoji","count","users"],"additionalProperties":false,"description":"Reactions of a single emoji on a comment."}}},"required":["id","buildId","threadId","body","text","author","screenshotDiffId","anchor","pending","resolvedAt","editedAt","createdAt","reactions"],"additionalProperties":false,"description":"A comment posted on a build."},"User":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","slug","name"],"additionalProperties":false,"description":"A user."},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["error"],"additionalProperties":false,"description":"Error response"}}},"paths":{"/projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}/reactions":{"delete":{"operationId":"removeCommentReaction","summary":"Remove an emoji reaction from a comment","description":"Remove an emoji reaction previously added by the authenticated user from a comment.","tags":["Comments"],"parameters":[{"in":"path","name":"owner","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"project","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"buildNumber","schema":{"$ref":"#/components/schemas/BuildNumber"},"required":true,"description":"The build number"},{"in":"path","name":"commentId","schema":{"type":"string","description":"The ID of the comment"},"required":true,"description":"The ID of the comment"},{"in":"query","name":"emoji","schema":{"type":"string","description":"The emoji reaction to remove."},"required":true,"description":"The emoji reaction to remove."}],"responses":{"200":{"description":"Reaction removed — returns the comment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Mark a comment thread as resolved

> Mark a comment thread as resolved.

````json
{"openapi":"3.2.0","info":{"title":"Argos API","version":"2.0.0"},"tags":[{"name":"Comments","description":"Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions."}],"servers":[{"url":"https://api.argos-ci.com/v2","description":"API Endpoint"}],"security":[{"personalAccessToken":[]}],"components":{"securitySchemes":{"personalAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"Personal Access Token","description":"Authenticate as a **user** with a personal access token.\n\nSend it as a bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer <personal-access-token>\n```\n\nPersonal access tokens act on behalf of the user that created them\nand are required by endpoints that perform user actions, such as\nreviewing builds and posting comments."}},"schemas":{"BuildNumber":{"description":"The build number","type":"string"},"Comment":{"type":"object","properties":{"id":{"type":"string"},"buildId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root comment ID when this comment is a reply."},"body":{"description":"Rich-text JSON content of the comment."},"text":{"type":"string","description":"Plain-text rendering of the comment content."},"author":{"anyOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"screenshotDiffId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Screenshot diff this comment is anchored to, if any."},"anchor":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"],"additionalProperties":false}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},{"type":"null"}],"description":"Where the comment points on its screenshot diff. Null means the whole diff."},"pending":{"type":"boolean","description":"Whether the comment belongs to a pending (unsubmitted) review and is only visible to its author."},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the thread was resolved, null if not resolved. Only set on a root comment."},"editedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the comment was last edited, null if never edited."},"createdAt":{"type":"string","description":"Date the comment was posted."},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji used for the reaction."},"count":{"type":"number","description":"Number of users who reacted with this emoji."},"users":{"type":"array","items":{"$ref":"#/components/schemas/User"},"description":"The users who reacted with this emoji."}},"required":["emoji","count","users"],"additionalProperties":false,"description":"Reactions of a single emoji on a comment."}}},"required":["id","buildId","threadId","body","text","author","screenshotDiffId","anchor","pending","resolvedAt","editedAt","createdAt","reactions"],"additionalProperties":false,"description":"A comment posted on a build."},"User":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","slug","name"],"additionalProperties":false,"description":"A user."},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["error"],"additionalProperties":false,"description":"Error response"}}},"paths":{"/projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}/resolve":{"post":{"operationId":"resolveCommentThread","summary":"Mark a comment thread as resolved","description":"Mark a comment thread as resolved.","tags":["Comments"],"parameters":[{"in":"path","name":"owner","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"project","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"buildNumber","schema":{"$ref":"#/components/schemas/BuildNumber"},"required":true,"description":"The build number"},{"in":"path","name":"commentId","schema":{"type":"string","description":"ID of any comment in the thread"},"required":true,"description":"ID of any comment in the thread"}],"responses":{"200":{"description":"Thread resolved — returns the root comment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Reopen a resolved comment thread

> Reopen a previously resolved comment thread.

````json
{"openapi":"3.2.0","info":{"title":"Argos API","version":"2.0.0"},"tags":[{"name":"Comments","description":"Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions."}],"servers":[{"url":"https://api.argos-ci.com/v2","description":"API Endpoint"}],"security":[{"personalAccessToken":[]}],"components":{"securitySchemes":{"personalAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"Personal Access Token","description":"Authenticate as a **user** with a personal access token.\n\nSend it as a bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer <personal-access-token>\n```\n\nPersonal access tokens act on behalf of the user that created them\nand are required by endpoints that perform user actions, such as\nreviewing builds and posting comments."}},"schemas":{"BuildNumber":{"description":"The build number","type":"string"},"Comment":{"type":"object","properties":{"id":{"type":"string"},"buildId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root comment ID when this comment is a reply."},"body":{"description":"Rich-text JSON content of the comment."},"text":{"type":"string","description":"Plain-text rendering of the comment content."},"author":{"anyOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"screenshotDiffId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Screenshot diff this comment is anchored to, if any."},"anchor":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"],"additionalProperties":false}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},{"type":"null"}],"description":"Where the comment points on its screenshot diff. Null means the whole diff."},"pending":{"type":"boolean","description":"Whether the comment belongs to a pending (unsubmitted) review and is only visible to its author."},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the thread was resolved, null if not resolved. Only set on a root comment."},"editedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the comment was last edited, null if never edited."},"createdAt":{"type":"string","description":"Date the comment was posted."},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji used for the reaction."},"count":{"type":"number","description":"Number of users who reacted with this emoji."},"users":{"type":"array","items":{"$ref":"#/components/schemas/User"},"description":"The users who reacted with this emoji."}},"required":["emoji","count","users"],"additionalProperties":false,"description":"Reactions of a single emoji on a comment."}}},"required":["id","buildId","threadId","body","text","author","screenshotDiffId","anchor","pending","resolvedAt","editedAt","createdAt","reactions"],"additionalProperties":false,"description":"A comment posted on a build."},"User":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","slug","name"],"additionalProperties":false,"description":"A user."},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["error"],"additionalProperties":false,"description":"Error response"}}},"paths":{"/projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}/unresolve":{"post":{"operationId":"unresolveCommentThread","summary":"Reopen a resolved comment thread","description":"Reopen a previously resolved comment thread.","tags":["Comments"],"parameters":[{"in":"path","name":"owner","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"project","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"buildNumber","schema":{"$ref":"#/components/schemas/BuildNumber"},"required":true,"description":"The build number"},{"in":"path","name":"commentId","schema":{"type":"string","description":"ID of any comment in the thread"},"required":true,"description":"ID of any comment in the thread"}],"responses":{"200":{"description":"Thread reopened — returns the root comment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Subscribe to a comment thread's notifications

> Subscribe the authenticated user to a comment thread to receive notifications about new replies.

````json
{"openapi":"3.2.0","info":{"title":"Argos API","version":"2.0.0"},"tags":[{"name":"Comments","description":"Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions."}],"servers":[{"url":"https://api.argos-ci.com/v2","description":"API Endpoint"}],"security":[{"personalAccessToken":[]}],"components":{"securitySchemes":{"personalAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"Personal Access Token","description":"Authenticate as a **user** with a personal access token.\n\nSend it as a bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer <personal-access-token>\n```\n\nPersonal access tokens act on behalf of the user that created them\nand are required by endpoints that perform user actions, such as\nreviewing builds and posting comments."}},"schemas":{"BuildNumber":{"description":"The build number","type":"string"},"Comment":{"type":"object","properties":{"id":{"type":"string"},"buildId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root comment ID when this comment is a reply."},"body":{"description":"Rich-text JSON content of the comment."},"text":{"type":"string","description":"Plain-text rendering of the comment content."},"author":{"anyOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"screenshotDiffId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Screenshot diff this comment is anchored to, if any."},"anchor":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"],"additionalProperties":false}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},{"type":"null"}],"description":"Where the comment points on its screenshot diff. Null means the whole diff."},"pending":{"type":"boolean","description":"Whether the comment belongs to a pending (unsubmitted) review and is only visible to its author."},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the thread was resolved, null if not resolved. Only set on a root comment."},"editedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the comment was last edited, null if never edited."},"createdAt":{"type":"string","description":"Date the comment was posted."},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji used for the reaction."},"count":{"type":"number","description":"Number of users who reacted with this emoji."},"users":{"type":"array","items":{"$ref":"#/components/schemas/User"},"description":"The users who reacted with this emoji."}},"required":["emoji","count","users"],"additionalProperties":false,"description":"Reactions of a single emoji on a comment."}}},"required":["id","buildId","threadId","body","text","author","screenshotDiffId","anchor","pending","resolvedAt","editedAt","createdAt","reactions"],"additionalProperties":false,"description":"A comment posted on a build."},"User":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","slug","name"],"additionalProperties":false,"description":"A user."},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["error"],"additionalProperties":false,"description":"Error response"}}},"paths":{"/projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}/subscription":{"post":{"operationId":"subscribeCommentThread","summary":"Subscribe to a comment thread's notifications","description":"Subscribe the authenticated user to a comment thread to receive notifications about new replies.","tags":["Comments"],"parameters":[{"in":"path","name":"owner","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"project","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"buildNumber","schema":{"$ref":"#/components/schemas/BuildNumber"},"required":true,"description":"The build number"},{"in":"path","name":"commentId","schema":{"type":"string","description":"ID of any comment in the thread"},"required":true,"description":"ID of any comment in the thread"}],"responses":{"200":{"description":"Subscribed — returns the root comment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## Unsubscribe from a comment thread's notifications

> Unsubscribe the authenticated user from a comment thread's notifications.

````json
{"openapi":"3.2.0","info":{"title":"Argos API","version":"2.0.0"},"tags":[{"name":"Comments","description":"Collaborate on builds with threaded comments: post and edit comments, react with emojis, resolve threads, and manage notification subscriptions."}],"servers":[{"url":"https://api.argos-ci.com/v2","description":"API Endpoint"}],"security":[{"personalAccessToken":[]}],"components":{"securitySchemes":{"personalAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"Personal Access Token","description":"Authenticate as a **user** with a personal access token.\n\nSend it as a bearer token in the `Authorization` header:\n\n```http\nAuthorization: Bearer <personal-access-token>\n```\n\nPersonal access tokens act on behalf of the user that created them\nand are required by endpoints that perform user actions, such as\nreviewing builds and posting comments."}},"schemas":{"BuildNumber":{"description":"The build number","type":"string"},"Comment":{"type":"object","properties":{"id":{"type":"string"},"buildId":{"type":"string"},"threadId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Root comment ID when this comment is a reply."},"body":{"description":"Rich-text JSON content of the comment."},"text":{"type":"string","description":"Plain-text rendering of the comment content."},"author":{"anyOf":[{"$ref":"#/components/schemas/User"},{"type":"null"}]},"screenshotDiffId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Screenshot diff this comment is anchored to, if any."},"anchor":{"anyOf":[{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"point"},"x":{"type":"number"},"y":{"type":"number"}},"required":["type","x","y"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"lines"},"from":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"to":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","from","to"],"additionalProperties":false}],"description":"Where on the referenced screenshot diff the comment points. A point uses normalized (0–1) coordinates; lines is a 1-based inclusive range.","type":"object"},{"type":"null"}],"description":"Where the comment points on its screenshot diff. Null means the whole diff."},"pending":{"type":"boolean","description":"Whether the comment belongs to a pending (unsubmitted) review and is only visible to its author."},"resolvedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the thread was resolved, null if not resolved. Only set on a root comment."},"editedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date the comment was last edited, null if never edited."},"createdAt":{"type":"string","description":"Date the comment was posted."},"reactions":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"The emoji used for the reaction."},"count":{"type":"number","description":"Number of users who reacted with this emoji."},"users":{"type":"array","items":{"$ref":"#/components/schemas/User"},"description":"The users who reacted with this emoji."}},"required":["emoji","count","users"],"additionalProperties":false,"description":"Reactions of a single emoji on a comment."}}},"required":["id","buildId","threadId","body","text","author","screenshotDiffId","anchor","pending","resolvedAt","editedAt","createdAt","reactions"],"additionalProperties":false,"description":"A comment posted on a build."},"User":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","slug","name"],"additionalProperties":false,"description":"A user."},"Error":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["error"],"additionalProperties":false,"description":"Error response"}}},"paths":{"/projects/{owner}/{project}/builds/{buildNumber}/comments/{commentId}/subscription":{"delete":{"operationId":"unsubscribeCommentThread","summary":"Unsubscribe from a comment thread's notifications","description":"Unsubscribe the authenticated user from a comment thread's notifications.","tags":["Comments"],"parameters":[{"in":"path","name":"owner","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"project","schema":{"type":"string","minLength":1},"required":true},{"in":"path","name":"buildNumber","schema":{"$ref":"#/components/schemas/BuildNumber"},"required":true,"description":"The build number"},{"in":"path","name":"commentId","schema":{"type":"string","description":"ID of any comment in the thread"},"required":true,"description":"ID of any comment in the thread"}],"responses":{"200":{"description":"Unsubscribed — returns the root comment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}}}},"400":{"description":"Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://argos-ci.com/docs/api-reference/reference/comments.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
