Skip to main content

Overview

The ProjectResource provides methods for managing Speckle projects. Access it via client.project after authenticating your SpeckleClient. Projects are the top-level containers in Speckle that hold models, versions, and team members.

Methods

get()

Get a single project by ID.
Parameters:
str
required
The ID of the project to retrieve
Returns:
Project
The project object
Example:
See Project for property details.

get_permissions()

Get permission checks for a project.
Parameters:
str
required
The ID of the project
Returns:
ProjectPermissionChecks
Permission check results
Example:
See PermissionCheckResult for property details.

get_with_models()

Get a project with its models included.
Parameters:
str
required
The ID of the project
int
default:"25"
Maximum number of models to return
str
default:"None"
Cursor for pagination
ProjectModelsFilter
default:"None"
Filter criteria for models. See ProjectModelsFilter
Returns:
ProjectWithModels
Project with models collection
Example:
See ProjectModelsFilter for filtering options.

get_with_team()

Get a project with its team members and pending invitations.
Parameters:
str
required
The ID of the project
Returns:
ProjectWithTeam
Project with team information
Example:

create()

Create a new personal project (non-workspace).
Parameters:
ProjectCreateInput
required
Project creation parameters. See ProjectCreateInput
Returns:
Project
The newly created project
Example:
See ProjectCreateInput for all available fields.
Check if you can create personal projects using client.active_user.can_create_personal_projects() before calling this method.

create_in_workspace()

Create a new workspace project.
Parameters:
WorkspaceProjectCreateInput
required
Workspace project creation parameters. See WorkspaceProjectCreateInput
Returns:
Project
The newly created workspace project
Example:
See WorkspaceProjectCreateInput for all available fields.
This method only works on workspace-enabled servers (e.g., app.speckle.systems). Check workspace permissions using workspace.permissions.canCreateProject before calling.

update()

Update an existing project.
Parameters:
ProjectUpdateInput
required
Project update parameters. See ProjectUpdateInput
Returns:
Project
The updated project
Example:
See ProjectUpdateInput for all available fields.

delete()

Delete a project permanently.
Parameters:
str
required
The ID of the project to delete
Returns:
bool
True if deletion was successful
Example:
This operation is irreversible! All models, versions, and data in the project will be permanently deleted.

update_role()

Update a team member’s role in the project.
Parameters:
ProjectUpdateRoleInput
required
Role update parameters
Returns:
ProjectWithTeam
Updated project with team information
Example:
ProjectUpdateRoleInput Fields:
  • projectId (str, required) - The project ID
  • userId (str, required) - The user ID whose role to update
  • role (str, required) - New role: "stream:owner", "stream:contributor", or "stream:reviewer"
Role Permissions:
  • stream:owner - Full control, can delete project and manage team
  • stream:contributor - Can create models and versions
  • stream:reviewer - Read-only access

Types

Project

Represents a Speckle project.
str
Project ID
str
Project name
str
Project description
str
"PUBLIC", "PRIVATE", or "UNLISTED"
str
Your role: "stream:owner", "stream:contributor", or "stream:reviewer"
datetime
Creation timestamp
datetime
Last update timestamp
bool
Whether public comments are allowed
List[str]
List of source applications used
str
Workspace ID if this is a workspace project

PermissionCheckResult

Result of a permission check operation.
bool
Whether the action is authorized
str
Permission code
str
Human-readable message

Input Types

ProjectCreateInput

Used with create(). Fields:
  • name (str) - Project name
  • description (str, optional) - Project description
  • visibility (str, optional) - "PRIVATE", "PUBLIC", or "UNLISTED"

ProjectUpdateInput

Used with update(). Fields:
  • id (str) - Project ID
  • name (str, optional) - New project name
  • description (str, optional) - New description
  • allow_public_comments (bool, optional) - Allow public comments
  • visibility (str, optional) - New visibility setting

WorkspaceProjectCreateInput

Used with create_in_workspace(). Fields:
  • name (str) - Project name
  • description (str, optional) - Project description
  • visibility (str, optional) - "PRIVATE", "PUBLIC", or "UNLISTED"
  • workspaceId (str) - Workspace ID

Filters

ProjectModelsFilter

Used with get_with_models() and client.model.get_models(). Fields:
  • contributors (List[str], optional) - Filter by contributor user IDs
  • exclude_ids (List[str], optional) - Exclude specific model IDs
  • ids (List[str], optional) - Include only specific model IDs
  • only_with_versions (bool, optional) - Only return models with versions
  • search (str, optional) - Search by model name
  • source_apps (List[str], optional) - Filter by source application

ModelResource

Work with models in projects

VersionResource

Manage versions in models

ActiveUserResource

Get user’s projects and permissions

SpeckleClient

Main client documentation
Last modified on July 18, 2026