Toggle project update reaction

PUT/v1/projects/{projectId}/updates/{updateId}/reactions

Toggle the authenticated user's emoji reaction on a project progress update.

How to call this endpoint

Every ACP API request uses bearer authentication. The examples here show the actual request path, auth header, and body shape that the platform expects.

Path, query, and header parameters

These parameters control which ACP object the endpoint acts on and how the request is processed.

Path parameters
NameLocationTypeRequiredDescription
projectIdpathstringYesProject ID
updateIdpathstringYes
Query parameters
None.

Body schema

Content type: application/json · Required

FieldTypeRequiredDescription
emojistringYes

What the API returns

Each response code below includes the documented payload shape for the ACP API.

200Project update reaction toggledapplication/json
FieldTypeRequiredDescription
selectedbooleanNo
reactionobjectNo
reaction.emojistringYes
reaction.userIdsstring[]Yes
reaction.countintegerYes
updateobjectNo
update.idstringYesUnique identifier.
update.bodystringYes
update.statuson_track | at_risk | off_track | completeYesCurrent lifecycle status.
update.attachmentsobject[]Yes
update.attachments[].idstringNoUnique identifier.
update.attachments[].filenamestringYes
update.attachments[].mimeTypestringNo
update.attachments[].sizeintegerNo
update.attachments[].urlstringNo
update.attachments[].previewUrlstringNo
update.attachments[].workspacePathstringNo
update.attachments[].sourcePathstringNoWorkspace-relative file path.
update.attachments[].environmentIdstringNoComputer ID.
update.commentsobject[]Yes
update.comments[].idstringYesUnique identifier.
update.comments[].parentCommentIdstringNo
update.comments[].bodystringYes
update.comments[].attachmentsobject[]Yes
update.comments[].attachments[].idstringNoUnique identifier.
update.comments[].attachments[].filenamestringYes
update.comments[].attachments[].mimeTypestringNo
update.comments[].attachments[].sizeintegerNo
update.comments[].attachments[].urlstringNo
update.comments[].attachments[].previewUrlstringNo
update.comments[].attachments[].workspacePathstringNo
update.comments[].attachments[].sourcePathstringNoWorkspace-relative file path.
update.comments[].attachments[].environmentIdstringNoComputer ID.
update.comments[].repliesobject[]YesDirect replies to this top-level update comment.
update.comments[].replies[].idstringYesUnique identifier.
update.comments[].replies[].parentCommentIdstringNo
update.comments[].replies[].bodystringYes
update.comments[].replies[].attachmentsobject[]Yes
update.comments[].replies[].attachments[].idstringNoUnique identifier.
update.comments[].replies[].attachments[].filenamestringYes
update.comments[].replies[].attachments[].mimeTypestringNo
update.comments[].replies[].attachments[].sizeintegerNo
update.comments[].replies[].attachments[].urlstringNo
update.comments[].replies[].attachments[].previewUrlstringNo
update.comments[].replies[].attachments[].workspacePathstringNo
update.comments[].replies[].attachments[].sourcePathstringNoWorkspace-relative file path.
update.comments[].replies[].attachments[].environmentIdstringNoComputer ID.
update.comments[].replies[].repliesobject[]YesDirect replies to this top-level update comment.
update.comments[].replies[].replies[].idstringYesUnique identifier.
update.comments[].replies[].replies[].parentCommentIdstringNo
update.comments[].replies[].replies[].bodystringYes
update.comments[].replies[].replies[].attachmentsobject[]Yes
update.comments[].replies[].replies[].attachments[].idstringNoUnique identifier.
update.comments[].replies[].replies[].attachments[].filenamestringYes
update.comments[].replies[].replies[].attachments[].mimeTypestringNo
update.comments[].replies[].replies[].attachments[].sizeintegerNo
update.comments[].replies[].replies[].attachments[].urlstringNo
update.comments[].replies[].replies[].attachments[].previewUrlstringNo
update.comments[].replies[].replies[].attachments[].workspacePathstringNo
update.comments[].replies[].replies[].attachments[].sourcePathstringNoWorkspace-relative file path.
update.comments[].replies[].replies[].attachments[].environmentIdstringNoComputer ID.
update.comments[].replies[].replies[].repliesobject[]YesDirect replies to this top-level update comment.
update.comments[].replies[].replies[].replies[].idstringYesUnique identifier.
update.comments[].replies[].replies[].replies[].parentCommentIdstringNo
update.comments[].replies[].replies[].replies[].bodystringYes
update.comments[].replies[].replies[].replies[].attachmentsobject[]Yes
update.comments[].replies[].replies[].replies[].attachments[].idstringNoUnique identifier.
update.comments[].replies[].replies[].replies[].attachments[].filenamestringYes
update.comments[].replies[].replies[].replies[].attachments[].mimeTypestringNo
update.comments[].replies[].replies[].replies[].attachments[].sizeintegerNo
update.comments[].replies[].replies[].replies[].attachments[].urlstringNo
update.comments[].replies[].replies[].replies[].attachments[].previewUrlstringNo
update.comments[].replies[].replies[].replies[].attachments[].workspacePathstringNo
update.comments[].replies[].replies[].replies[].attachments[].sourcePathstringNoWorkspace-relative file path.
update.comments[].replies[].replies[].replies[].attachments[].environmentIdstringNoComputer ID.
update.comments[].replies[].replies[].replies[].repliesobject[]YesDirect replies to this top-level update comment.
update.comments[].replies[].replies[].replies[].replies[].idstringYesUnique identifier.
update.comments[].replies[].replies[].replies[].replies[].parentCommentIdstringNo
update.comments[].replies[].replies[].replies[].replies[].bodystringYes
update.comments[].replies[].replies[].replies[].replies[].attachmentsobject[]Yes
update.comments[].replies[].replies[].replies[].replies[].attachments[].idstringNoUnique identifier.
update.comments[].replies[].replies[].replies[].replies[].attachments[].filenamestringYes
update.comments[].replies[].replies[].replies[].replies[].attachments[].mimeTypestringNo
update.comments[].replies[].replies[].replies[].replies[].attachments[].sizeintegerNo
update.comments[].replies[].replies[].replies[].replies[].attachments[].urlstringNo
update.comments[].replies[].replies[].replies[].replies[].attachments[].previewUrlstringNo
update.comments[].replies[].replies[].replies[].replies[].attachments[].workspacePathstringNo
update.comments[].replies[].replies[].replies[].replies[].attachments[].sourcePathstringNoWorkspace-relative file path.
update.comments[].replies[].replies[].replies[].replies[].attachments[].environmentIdstringNoComputer ID.
update.comments[].replies[].replies[].replies[].replies[].repliesobject[]YesDirect replies to this top-level update comment.
update.comments[].replies[].replies[].replies[].replies[].replies[].idstringYesUnique identifier.
update.comments[].replies[].replies[].replies[].replies[].replies[].parentCommentIdstringNo
update.comments[].replies[].replies[].replies[].replies[].replies[].bodystringYes
update.comments[].replies[].replies[].replies[].replies[].replies[].attachmentsobject[]Yes
update.comments[].replies[].replies[].replies[].replies[].replies[].attachments[].idstringNoUnique identifier.
update.comments[].replies[].replies[].replies[].replies[].replies[].attachments[].filenamestringYes
update.comments[].replies[].replies[].replies[].replies[].replies[].attachments[].mimeTypestringNo
update.comments[].replies[].replies[].replies[].replies[].replies[].attachments[].sizeintegerNo
update.comments[].replies[].replies[].replies[].replies[].replies[].attachments[].urlstringNo
update.comments[].replies[].replies[].replies[].replies[].replies[].attachments[].previewUrlstringNo
update.comments[].replies[].replies[].replies[].replies[].replies[].attachments[].workspacePathstringNo
update.comments[].replies[].replies[].replies[].replies[].replies[].attachments[].sourcePathstringNoWorkspace-relative file path.
update.comments[].replies[].replies[].replies[].replies[].replies[].attachments[].environmentIdstringNoComputer ID.
update.comments[].replies[].replies[].replies[].replies[].replies[].repliesobject[]YesDirect replies to this top-level update comment.
update.comments[].replies[].replies[].replies[].replies[].replies[].replies[].idstringYesUnique identifier.
update.comments[].replies[].replies[].replies[].replies[].replies[].replies[].parentCommentIdstringNo
update.comments[].replies[].replies[].replies[].replies[].replies[].replies[].bodystringYes
update.comments[].replies[].replies[].replies[].replies[].replies[].replies[].attachmentsobject[]Yes
update.comments[].replies[].replies[].replies[].replies[].replies[].replies[].repliesobject[]YesDirect replies to this top-level update comment.
update.comments[].replies[].replies[].replies[].replies[].replies[].replies[].authorobjectYes
update.comments[].replies[].replies[].replies[].replies[].replies[].replies[].createdAtstringYesISO 8601 timestamp.
update.comments[].replies[].replies[].replies[].replies[].replies[].replies[].updatedAtstringYesISO 8601 timestamp.
update.comments[].replies[].replies[].replies[].replies[].replies[].authorobjectYes
update.comments[].replies[].replies[].replies[].replies[].replies[].author.userIdstringYesUser ID.
update.comments[].replies[].replies[].replies[].replies[].replies[].author.namestringYesHuman-readable name.
update.comments[].replies[].replies[].replies[].replies[].replies[].author.emailstringNo
update.comments[].replies[].replies[].replies[].replies[].replies[].author.avatarUrlstringNo
update.comments[].replies[].replies[].replies[].replies[].replies[].createdAtstringYesISO 8601 timestamp.
update.comments[].replies[].replies[].replies[].replies[].replies[].updatedAtstringYesISO 8601 timestamp.
update.comments[].replies[].replies[].replies[].replies[].authorobjectYes
update.comments[].replies[].replies[].replies[].replies[].author.userIdstringYesUser ID.
update.comments[].replies[].replies[].replies[].replies[].author.namestringYesHuman-readable name.
update.comments[].replies[].replies[].replies[].replies[].author.emailstringNo
update.comments[].replies[].replies[].replies[].replies[].author.avatarUrlstringNo
update.comments[].replies[].replies[].replies[].replies[].createdAtstringYesISO 8601 timestamp.
update.comments[].replies[].replies[].replies[].replies[].updatedAtstringYesISO 8601 timestamp.
update.comments[].replies[].replies[].replies[].authorobjectYes
update.comments[].replies[].replies[].replies[].author.userIdstringYesUser ID.
update.comments[].replies[].replies[].replies[].author.namestringYesHuman-readable name.
update.comments[].replies[].replies[].replies[].author.emailstringNo
update.comments[].replies[].replies[].replies[].author.avatarUrlstringNo
update.comments[].replies[].replies[].replies[].createdAtstringYesISO 8601 timestamp.
update.comments[].replies[].replies[].replies[].updatedAtstringYesISO 8601 timestamp.
update.comments[].replies[].replies[].authorobjectYes
update.comments[].replies[].replies[].author.userIdstringYesUser ID.
update.comments[].replies[].replies[].author.namestringYesHuman-readable name.
update.comments[].replies[].replies[].author.emailstringNo
update.comments[].replies[].replies[].author.avatarUrlstringNo
update.comments[].replies[].replies[].createdAtstringYesISO 8601 timestamp.
update.comments[].replies[].replies[].updatedAtstringYesISO 8601 timestamp.
update.comments[].replies[].authorobjectYes
update.comments[].replies[].author.userIdstringYesUser ID.
update.comments[].replies[].author.namestringYesHuman-readable name.
update.comments[].replies[].author.emailstringNo
update.comments[].replies[].author.avatarUrlstringNo
update.comments[].replies[].createdAtstringYesISO 8601 timestamp.
update.comments[].replies[].updatedAtstringYesISO 8601 timestamp.
update.comments[].authorobjectYes
update.comments[].author.userIdstringYesUser ID.
update.comments[].author.namestringYesHuman-readable name.
update.comments[].author.emailstringNo
update.comments[].author.avatarUrlstringNo
update.comments[].createdAtstringYesISO 8601 timestamp.
update.comments[].updatedAtstringYesISO 8601 timestamp.
update.reactionsobject[]Yes
update.reactions[].emojistringYes
update.reactions[].userIdsstring[]Yes
update.reactions[].countintegerYes
update.authorobjectYes
update.author.userIdstringYesUser ID.
update.author.namestringYesHuman-readable name.
update.author.emailstringNo
update.author.avatarUrlstringNo
update.createdAtstringYesISO 8601 timestamp.
update.updatedAtstringYesISO 8601 timestamp.
projectobjectNo
project.idstringNoUnique identifier.
project.userIdstringNoUser ID.
project.ownerUserIdstringNo
project.ownerNamestringNo
project.ownerEmailstringNo
project.ownerAvatarUrlstringNo
project.ownerobjectNo
project.owner.userIdstringYesUser ID.
project.owner.namestringYesHuman-readable name.
project.owner.emailstringNo
project.owner.avatarUrlstringNo
project.canTransferOwnershipbooleanNo
project.organizationIdstringNo
project.createdByUserIdstringNo
project.namestringNoHuman-readable name.
project.descriptionstringNoHuman-readable description.
project.typelocal | cloud | syncedNo
project.primarySourcestringNo
project.sourcesobject[]No
project.createdAtstringNoISO 8601 timestamp.
project.updatedAtstringNoISO 8601 timestamp.
400Invalid reaction
None.
404Resource not foundapplication/json
FieldTypeRequiredDescription
errorstringNo
Toggle project update reaction
Loading...
Response 200
Loading...
See the ACP quickstart and SDK flow