/v1/buildsReport a build⚠️ Experimental endpoint: this API is in active development and may change at any time without notice. ⚠️
Records a build any deploy tool is running — a CI workflow, a deploy script, or Composer from a laptop. The workspace comes from the token, never from the body, which is what lets a build be reported before the project it will create exists. Supplying runIdentity makes the call idempotent: a repeat for the same run returns the build already recorded rather than a second one. The response is the same either way; a caller cannot tell whether it created the build or joined one.
A build reported with no runIdentity has no dedup key, so a client that retries a lost response creates a second build. Supply a runIdentity whenever the run has one.
Request body
application/json
applicationTopologyContentHashstringContent hash of the application topology this run deploys, as submitted to the application-topology endpoint. A value match, never a reference: equal hashes identify the same graph.
branchIdstringbranchNamestringrequiredGit branch name.
commitShastringrequiredCommit the build ran on.
externalLogUrlstring · uriLink to the run's logs in the reporter's own system.
projectIdstringProject the build targets, when it exists. A build may be reported before its project does.
runIdentityobjectIdentifies the CI run. Supplying it makes creation idempotent — a repeat call for the same run returns the build that already exists. Omit it for builds with no run to name, such as a deploy from a laptop, where every call creates a new build.
Show child attributes
providerstringrequiredCI provider the run identity belongs to.
repositoryIdstringrequiredProvider's repository id (for GitHub, the numeric repo id).
runAttemptintegerrequiredAttempt number of the run; a re-run is a separate build.
runIdstringrequiredProvider's workflow-run id.
sourcestringrequired`ci` for a build reported from a CI run, `cli` for a deploy run directly by a human or agent.
{
"applicationTopologyContentHash": "string",
"branchId": "string",
"branchName": "string",
"commitSha": "string",
"externalLogUrl": "https://example.com",
"projectId": "string",
"runIdentity": {
"provider": "github",
"repositoryId": "string",
"runAttempt": 0,
"runId": "string"
},
"source": "ci"
}Responses
dataobjectrequiredShow child attributes
applicationTopologyContentHashnull | stringrequiredbranchIdnull | stringrequiredbranchNamestringrequiredcommitShastringrequiredcreatedAtstringrequireddeployedUrlnull | stringrequirederrorMessagenull | stringrequiredexternalLogUrlnull | stringrequiredfailingStepnull | stringrequiredfinishedAtnull | stringrequiredgitRepoIdnull | stringrequiredRepository the build ran against. Set only when the workspace has a live link to it; a reported repository the platform does not know stays null.
idstringrequiredphasenull | stringrequiredNull when nothing reported a phase; the platform never invents an observation it did not receive.
projectIdnull | stringrequiredsourcestringrequiredstartedAtnull | stringrequiredstatestringrequired{
"data": {
"applicationTopologyContentHash": "string",
"branchId": "string",
"branchName": "string",
"commitSha": "string",
"createdAt": "string",
"deployedUrl": "string",
"errorMessage": "string",
"externalLogUrl": "string",
"failingStep": "string",
"finishedAt": "string",
"gitRepoId": "string",
"id": "string",
"phase": "build",
"projectId": "string",
"source": "ci",
"startedAt": "string",
"state": "cancelled"
}
}errorobjectrequiredShow child attributes
codestringrequiredhintstringmessagestringrequired{
"error": {
"code": "string",
"hint": "string",
"message": "string"
}
}errorobjectrequiredShow child attributes
codestringrequiredhintstringmessagestringrequired{
"error": {
"code": "string",
"hint": "string",
"message": "string"
}
}errorobjectrequiredShow child attributes
codestringrequiredhintstringmessagestringrequired{
"error": {
"code": "string",
"hint": "string",
"message": "string"
}
}errorobjectrequiredShow child attributes
codestringrequiredhintstringmessagestringrequired{
"error": {
"code": "string",
"hint": "string",
"message": "string"
}
}