Skip to article
On this page
  1. Project calls
  2. List projects
  3. Create project
  4. Describe project
  5. Update project

Projects

Users own Projects. Creating a Project creates an owner membership for the requesting User. The first Project owned by a User becomes its default; later Projects require X-Project-ID when the User needs to select one for execution placement.

Projects select placement for Pipeline and Activity runs. Model and Harness defaults belong to User settings; Pipeline, Activity, and loop-agent configuration can define narrower persisted overrides.

Project calls

Method Path Description
GET /api/v1/projects List Projects accessible to the current User.
POST /api/v1/projects Create a Project owned by the current User.
GET /api/v1/projects/{project_id} Describe one accessible Project.
PATCH /api/v1/projects/{project_id} Update one accessible Project.

List projects

GET /api/v1/projects returns every Project accessible to the User identified by X-User-ID. The default Project appears first.

GET /api/v1/projects
X-User-ID: user-123

Example response (200 OK):

[
  {
    "id": "project-acme",
    "name": "Acme",
    "created_at": "2026-08-26T10:00:00Z",
    "updated_at": "2026-08-26T10:00:00Z"
  }
]

Create project

POST /api/v1/projects creates a Project owned by the User identified by X-User-ID. The User must first be registered through POST /api/v1/users.

POST /api/v1/projects
X-User-ID: user-123
Content-Type: application/json
{
  "name": "Acme"
}

Example response (201 Created):

{
  "id": "project-acme",
  "name": "Acme",
  "created_at": "2026-08-26T10:00:00Z",
  "updated_at": "2026-08-26T10:00:00Z"
}

Describe project

GET /api/v1/projects/{project_id} returns one Project accessible to the User identified by X-User-ID.

GET /api/v1/projects/project-acme
X-User-ID: user-123

Example response (200 OK):

{
  "id": "project-acme",
  "name": "Acme",
  "created_at": "2026-08-26T10:00:00Z",
  "updated_at": "2026-08-26T10:00:00Z"
}

Update project

PATCH /api/v1/projects/{project_id} updates mutable metadata for one Project accessible to the User identified by X-User-ID. Currently, name is the only mutable field, and it must be supplied with a non-empty value.

PATCH /api/v1/projects/project-acme
X-User-ID: user-123
Content-Type: application/json
{
  "name": "Acme Platform"
}

Example response (200 OK):

{
  "id": "project-acme",
  "name": "Acme Platform",
  "created_at": "2026-08-26T10:00:00Z",
  "updated_at": "2026-08-26T10:15:00Z"
}