v3
latestOpenAPI 3.1.02026-08-06274467602.9 KBGet Project
Get a single project by ID.
Requires read access (ownership, workspace membership, example, or admin view/write mode). Admin view mode forces can_edit=False; admin write mode forces can_edit=True. Both force is_owner=False.
Response
Successful Response
Lifecycle status for a project.
Replaces the boolean is_created whose name implied "was created" (always True once inserted) but semantically meant "is ready for the dashboard to show." Promoting to an enum lets new states (FAILED, ARCHIVED) join without contorting the boolean.
- PENDING: row inserted, sandbox resources not yet materialized
- READY: resources in place; visible on dashboard
- FAILED: build raised mid-flight (sandbox saga rollback uses hard-delete instead, so this state is reserved for future async build paths that can't roll back atomically)
- ARCHIVED: user-archived; hidden by default
Provenance + lifecycle for the project's name field.
Replaces an em-dash string heuristic (" — " not in project.name) that gated whether the sandbox auto-titler should rename a project from its skeleton name. Encoding the decision as a typed enum makes the check a single comparison and prevents future titlers that happen to produce em-dashes from silently disabling the branch.
- PLACEHOLDER: title is initial scaffolding (sandbox skeleton's "Boulder County", initial scaffold name); eligible to be replaced by the next titler.
- AUTO: title set by an LLM auto-titler (agent_service first-message rename or project setup using the user's plan name); final.
- USER: title set by an explicit user rename via PUT /projects/{id}; final.
Visibility status for projects.
NULL/None = private (default, only owner can see) WORKSPACE_READ = visible to all workspace members (read-only) WORKSPACE_WRITE = editable by workspace writers EXAMPLE = curated example project visible to all users