Read a publish job's progress.
GET/ai-builder-api/projects/:projectId/infra/publish-jobs/:publishJobId
Reports a publish job's progress. Poll it every few seconds until status is succeeded, when publishedUrl is the live site, or failed, when error says why.
Request
Version stringrequired
The API version.
Available options
v3projectId stringrequired
The project.
Possible values: Value must match regular expression ^prj_[A-Za-z0-9_-]+$
publishJobId stringrequired
The publish job promote-to-production returned.
Current publish-job state and immutable domain snapshot.
- application/json
- Schema
- Example (auto)
Schema
jobIdstringrequired
The publish job.
projectIdstringrequired
The project.
statusstringrequired
succeeded and failed are final.
Available options
queuedrunningsucceededfailedtierstring | nullnullablerequired
published once the site is live.
publishedUrl(string | null)<uri>nullablerequired
The live site, once the job succeeded.
hostnamestring | nullnullablerequired
The managed address the app is published to.
aliasesstring[]required
The active custom domains the live site also serves.
domainRevisioninteger | nullnullablerequired
The managed address's revision this publish took.
Possible values: >= 0
errorstring | nullnullablerequired
Why the job failed.
createdAtstring<date-time>required
When the job was accepted.
updatedAtstring<date-time>required
When the job last changed.
{
"jobId": "job_3f9a1c2b7d4e5f6a7b8c9d0e",
"projectId": "prj_5f0c2a3e",
"status": "succeeded",
"tier": "published",
"publishedUrl": "https://5f0c2a3e.app.clientclub.net",
"hostname": "5f0c2a3e.app.clientclub.net",
"aliases": [
"portal.acmefitness.com"
],
"domainRevision": 1,
"error": null,
"createdAt": "2026-10-23T09:42:00.000Z",
"updatedAt": "2026-10-23T09:43:05.000Z"
}