Post project update

POST/v1/projects/{projectId}/updates

Append a durable progress update to a project and expose it in project activity.

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
Query parameters
None.

Body schema

Content type: application/json · Required

FieldTypeRequiredDescription
bodystringYes
statuson_track | at_risk | off_track | completeNoCurrent lifecycle status.
attachmentsobject[]No
attachments[].idstringNoUnique identifier.
attachments[].filenamestringYes
attachments[].mimeTypestringNo
attachments[].sizeintegerNo
attachments[].urlstringNo
attachments[].previewUrlstringNo
attachments[].workspacePathstringNo
attachments[].sourcePathstringNoWorkspace-relative file path.
attachments[].environmentIdstringNoComputer ID.
idempotencyKeystringNo

What the API returns

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

201Project update createdapplication/json
FieldTypeRequiredDescription
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 project update
None.
404Resource not foundapplication/json
FieldTypeRequiredDescription
errorstringNo
Post project update
Loading...
Response 201
Loading...
See the ACP quickstart and SDK flow