Get a project by id.
Returns one app: its status, publication state, preview and production URLs, and its latest run.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your access token.
clientportal-ai. readonlyOAuthPrivate IntegrationSub-Account TokenRequest
Headers
The API version.
v3v3Path Parameters
The project's id.
Possible values: Value must match regular expression ^prj_[A-Za-z0-9_-]+$
prj_5f0c2a3eResponse
Project.
The project's id.
prj_01HXQ8Z6J9K2The app's name, shown to members.
Client Booking PortalThe sub-account the project belongs to.
loc_01HXQ8Z6J9K2The agency the sub-account belongs to.
cmp_01HXQ8Z6J9K2The user who owns the project.
usr_01HXQ8Z6J9K2The user who created the project.
usr_01HXQ8Z6J9K2Who in the sub-account can see the project.
privatesharedURL-safe form of the name.
client-booking-portalWhere the project is in its lifecycle: draft (in use), archived or deleted. A build's progress is its run's (latestRunId, then GET .../runs/{runId}), and whether the app is live is publicationStatus. The other values are no longer reported.
draftqueuedplanningbuildingpreviewingdeployingdeployedblockedarchiveddeletedStable publication state, independent from the mutable run/build status. published means a successful publish activated at least the managed platform hostname; later draft edits do not change it. Legacy records without this field are interpreted as draft unless productionUrl is present.
draftpublishedThe kernel the project is built on.
react_native_app_kernel_v1nuxt_clientportal_app_v1nuxt_clientportal_vibe_v1autoStarter-template id (e.g. events-v1) the project was instantiated from.
Drives the scaffold overlay byte-copy and, on the first build run, the
instantiate workflow mode (scaffold + finished overlay, no codegen).
Absent for projects built from a bare prompt. Project-scoped — set at
creation, never accepted on the run submit body.
events-v1How a mobile project started: from scratch or from the CP Base App.
App branding mode persisted at project creation. cp_branded connects the app to the location's Client Portal modules.
standardcp_brandedWhat the project builds.
full_stackmobilelanding_pageImmutable surfaces owned by the project. New projects contain exactly one
value derived by the server from productTarget: full-stack and landing-page
projects resolve to web; native Expo/React Native projects resolve to
mobile. Existing combined Client Portal projects may contain both values.
webmobile["web"]Where the app's data lives.
managed_mongoWhere the app is hosted.
managedbyo_vercelThe API contract version the project was created under.
2026-04-27The project's most recent run.
run_01HXQ9ABCD12The project's most recent deployment.
dep_01HXQ8Z6J9K2Where to preview the latest build.
https://preview.example.com/my-portalWhere the published app is served.
https://my-portal.example.comScreenshot of the app's home page, taken after its latest successful build. Absent until a build has produced one; clients show their own placeholder then.
https://storage.googleapis.com/ai-builder-public-experiences-staging/project-thumbnails/5f0c2a3e-8d41-4c4b-9a35-0d1e6b7f2c91.jpgThe user's last-selected run mode for this project. The composer's
3-way segmented control rehydrates from this value when the
project is opened so the user's preference survives reloads.
Updated server-side every time a new run is submitted with an
explicit mode value (or via PATCH /projects/{projectId}).
autoplanbuildautoWhen the project was created.
2026-10-01T08:00:00.000ZWhen the project last changed.
2026-10-15T09:41:12.000ZWhen the project was archived, if it was.
2026-10-20T12:00:00.000ZPinned by its owner so it sorts to the top of their project list. Absent means not starred; there is no per-viewer state — a project is starred for the location, like its name.
trueTrue when this project's current mobile revision carries generated source (documents.clientportal.mobile.sources on its app configuration), so its phone preview must be framed from the project's own sandbox rather than the shared stock host. Read from the authenticated location's revision only. Returned by GET /api/v1/projects/{projectId}; list, create and update responses omit it, and an absent value means false.
falseThe project's version tag, for conditional updates.
W/"project-12"