Projects

Projects organize entities, documents, tasks, and workflows within an organization.

List Projects

GET /v1/projects

Lists projects in the caller's active organization. The organization is taken from the authenticated session; it is not passed as a parameter.

Query Parameters

ParameterTypeDescription
limitintegerMax results per page (default 50, max 100)
offsetintegerPagination offset

Response

{
  "success": true,
  "data": [
    {
      "id": "...",
      "name": "My Project",
      "slug": "my-project",
      "is_active": true,
      "created_at": "2026-01-15T10:00:00Z"
    }
  ],
  "pagination": {
    "total": 5,
    "limit": 50,
    "offset": 0,
    "has_more": false
  }
}

Create Project

POST /v1/projects

Request Body

{
  "name": "My Project",
  "description": "Optional project description"
}

The project is created in the caller's active organization; do not send an org_id in the body. An optional slug may be supplied; otherwise it is derived from the name. Do not send id, created_at, or updated_at; these are assigned automatically. Project IDs use UUIDv7 format.

Response

Returns 201 Created with the complete project record. The caller is recorded as the project owner and the project starts active.

{
  "success": true,
  "data": {
    "id": "...",
    "org_id": "...",
    "name": "My Project",
    "slug": "my-project",
    "description": "Optional project description",
    "prefix": null,
    "visibility": "private",
    "category_id": null,
    "owner_scope": "...",
    "is_active": true,
    "created_by_user_id": "...",
    "created_at": "2026-01-15T10:00:00Z",
    "updated_at": "2026-01-15T10:00:00Z",
    "settings": {}
  }
}

Response Codes

StatusMeaning
201Project created; the full record is returned
400Validation error: missing/invalid name, an invalid or reserved slug, or a malformed category_id
401Missing or invalid access token
403Caller lacks the permission to create projects, or the organization's project limit has been reached
409A project with the supplied slug already exists in this organization
500Unexpected server error

Get Project

GET /v1/projects/:projectId

Response

{
  "success": true,
  "data": {
    "id": "...",
    "org_id": "...",
    "name": "My Project",
    "slug": "my-project",
    "description": "...",
    "is_active": true,
    "created_at": "2026-01-15T10:00:00Z",
    "updated_at": "2026-01-16T14:30:00Z"
  }
}

Update Project

PUT /v1/projects/:projectId

Request Body

{
  "name": "Updated Project Name",
  "description": "Updated description"
}

Delete Project

DELETE /v1/projects/:projectId

Soft delete: marks the project inactive rather than removing it. The project data is retained; restore it by updating the project with is_active: true.