Create a project.
POST/ai-builder-api/projects
Creates an app in the sub-account. Then start its first build with POST .../agent-runs; a sub-account token sends externalAgent: true because its own agent writes the code.
Request
Makes the request safe to retry: a repeat with the same key returns the first result.
Possible values: <= 200 characters
The API version.
v3- application/json
- Body
- Example (auto)
Bodyrequired
What the app should do.
Possible values: non-empty and <= 20000 characters
The app's name, shown to members.
Possible values: non-empty and <= 120 characters
Legacy hint retained for compatibility. Use productTarget from the landing
composer instead: full_stack, landing_page, or mobile.
webmobilePossible values: >= 1
The kernel to build on; leave it out to let the service choose.
react_native_app_kernel_v1nuxt_clientportal_app_v1nuxt_clientportal_vibe_v1autoStarter-template id (e.g. events-v1) to instantiate the project from.
When set, the first build run scaffolds the kernel and byte-copies the
finished starter overlay (instantiate mode — no plan/design/codegen).
Omit to build from the bare prompt.
For a mobile app: start from scratch or from the CP Base App.
App branding mode. cp_branded builds a Client Portal branded app wired to the location's courses/communities/purchases/affiliates. Defaults to standard.
standardcp_brandedCreator-selected landing composer category. full_stack means responsive web app plus backend/database; mobile means native Expo/React Native app.
full_stackmobilelanding_pageWhere to host the app; managed by default.
managedbyo_vercelYour own reference for this create.
{
"prompt": "Build a mobile and web booking app for a med spa.",
"name": "Groundbreak",
"stackTemplate": "react_native_app_kernel_v1",
"templateId": "events-v1",
"mobileCreation": {
"startingPoint": "scratch"
},
"appMode": "standard",
"productTarget": "full_stack",
"hostingMode": "managed",
"clientRefId": "3f6c1d2e-8b4a-4f7e-9c1d-2a3b4c5d6e7f"
}
Project created.
- application/json
- Schema
- Example (auto)
Schema
The project's id.
The app's name, shown to members.
The sub-account the project belongs to.
The agency the sub-account belongs to.
The user who owns the project.
The user who created the project.
Who in the sub-account can see the project.
privatesharedURL-safe form of the name.
Where the project is in its lifecycle.
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.
How 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.
webmobileWhere the app's data lives.
managed_mongoWhere the app is hosted.
managedbyo_vercelThe API contract version the project was created under.
The project's most recent run.
The project's most recent deployment.
Where to preview the latest build.
Where the published app is served.
Screenshot 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.
The 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}).
autoplanbuildWhen the project was created.
When the project last changed.
When the project was archived, if it was.
Pinned 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.
True 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.
The project's version tag, for conditional updates.
{
"id": "prj_01HXQ8Z6J9K2",
"name": "Client Booking Portal",
"locationId": "loc_01HXQ8Z6J9K2",
"companyId": "cmp_01HXQ8Z6J9K2",
"ownerUserId": "usr_01HXQ8Z6J9K2",
"createdByUserId": "usr_01HXQ8Z6J9K2",
"visibility": "private",
"slug": "client-booking-portal",
"status": "draft",
"publicationStatus": "draft",
"stackTemplate": "react_native_app_kernel_v1",
"templateId": "events-v1",
"mobileCreation": {
"startingPoint": "scratch"
},
"appMode": "standard",
"productTarget": "full_stack",
"targetModes": [
"web"
],
"dataPlaneMode": "managed_mongo",
"hostingMode": "managed",
"apiContractVersion": "2026-04-27",
"latestRunId": "run_01HXQ9ABCD12",
"latestDeploymentId": "dep_01HXQ8Z6J9K2",
"previewUrl": "https://preview.example.com/my-portal",
"productionUrl": "https://my-portal.example.com",
"thumbnailUrl": "https://storage.googleapis.com/ai-builder-public-experiences-staging/project-thumbnails/5f0c2a3e-8d41-4c4b-9a35-0d1e6b7f2c91.jpg",
"preferredMode": "auto",
"createdAt": "2026-10-01T08:00:00.000Z",
"updatedAt": "2026-10-15T09:41:12.000Z",
"archivedAt": "2026-10-20T12:00:00.000Z",
"starred": true,
"hasMobileSources": false,
"etag": "W/\"project-12\""
}